changeset 663:8bde8f798188

feeds: Use command matching helpers.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 20 Feb 2021 17:35:40 +0200
parents bb6aea76cdb4
children 586caf75fccc
files config.feeds.example feeds.tcl
diffstat 2 files changed, 27 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/config.feeds.example	Sat Feb 20 17:35:07 2021 +0200
+++ b/config.feeds.example	Sat Feb 20 17:35:40 2021 +0200
@@ -45,6 +45,17 @@
 }
 
 
+# Sub-command name regexp patterns
+array set feeds_commands {
+  "help" {^(\?|help|apua)$}
+  "latest" {^(last|latest|uusin?)$}
+  "force" {^(force?|fet|fetch)$}
+  "list" {^(list|listaa?)$}
+  "history" {^(hist|historia)$}
+  "all" {^(all|long|kaikki)$}
+}
+
+
 # Proc for fetching the feeds data, called by fetch_feeds.tcl
 proc feeds_fetch { } {
   #fetch_poliisi "http://www.poliisi.fi/oulu/tiedotteet/1/0?all1/0" "Poliisi/Oulu" "http://www.poliisi.fi"
--- a/feeds.tcl	Sat Feb 20 17:35:07 2021 +0200
+++ b/feeds.tcl	Sat Feb 20 17:35:40 2021 +0200
@@ -65,6 +65,12 @@
 }
 
 
+proc feeds_cmd_match { uid ustr } {
+  global feeds_commands
+  return [utl_cmd_match feeds_commands $uid $ustr]
+}
+
+
 # ------------------------------------------------------------------------
 proc feeds_check_do {uforce upublic unick uchan} {
   global feeds_db_file feeds_dbh feeds_sync_limit feeds_channels
@@ -165,14 +171,12 @@
   set rcmd [lindex $rarglist 0]
   set rargs [lrange $rarglist 1 end]
 
-  if {$rcmd == "?" || $rcmd == "help" || $rcmd == "apua"} {
+  if {[feeds_cmd_match "help" $rcmd]} {
+    # Show help
     foreach ukey $feeds_messages(help_full) {
       feeds_msg $upublic $unick $uchan $ukey
     }
-    return 0
-  }
-
-  if {$rcmd == "last" || $rcmd == "latest" || $rcmd == "uusin"} {
+  } elseif {[feeds_cmd_match "latest" $rcmd]} {
     # Show latest entry or latest entry of specified feed
     set ufound 0
     set utext [string tolower [join $rargs " "]]
@@ -191,18 +195,18 @@
     if {$ufound == 0} {
       feeds_msg $upublic $unick $uchan "search_no_matches" [list $utext]
     }
-  } elseif {[string match "forc*" $rcmd] || [string match "fet*" $rcmd]} {
+  } elseif {[feeds_cmd_match "force" $rcmd]} {
     # Force check for new entries
     if {![matchattr $uhand n]} {
       feeds_msg $upublic $unick $uchan "no_access"
     }
 
     feeds_check_do 1 $upublic $unick $uchan
-  } elseif {[string match "list*" $rcmd]} {
+  } elseif {[feeds_cmd_match "list" $rcmd]} {
     # List feeds
     set uarg [lindex $rargs 0]
 
-    if {$uarg == "all" || $uarg == "long" || $uarg == "kaikki"} {
+    if {[feeds_cmd_match "all" $uarg]} {
       # Long list
       set utext [string tolower [join [lrange $rargs 1 end] " "]]
 
@@ -226,6 +230,7 @@
       } else {
         feeds_msg $upublic $unick $uchan "feed_list_all" [list [join $ulist $ulistsep]]
       }
+
     } elseif {$uarg != ""} {
       # List feeds with a name filter
       set utext [string tolower [join $rargs " "]]
@@ -258,7 +263,7 @@
       feeds_msg $upublic $unick $uchan "feed_list_active" [list [utl_ctime $uold] [join $ulist $ulistsep]]
     }
 
-  } elseif {[string match "hist*" $rcmd]} {
+  } elseif {[feeds_cmd_match "history" $rcmd]} {
     # Show history of a feed
     if {[llength $rarglist] < 2} {
       feeds_msg $upublic $unick $uchan "help_history"
@@ -290,6 +295,8 @@
     # Help/usage
     feeds_msg $upublic $unick $uchan "help_short"
   }
+
+  return 0
 }