penguin/golifehk

@golifehk bot in Telegram

commit b251e35be4de4b0fdeeeb5924404326daba278c7

author斟酌 鵬兄 <tgckpg@gmail.com>
date2022-09-16T22:42:49Z
subjectAdded direction notes
commit b251e35be4de4b0fdeeeb5924404326daba278c7
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2022-09-16T22:42:49Z

    Added direction notes
---
 datasources/kmb/QueryResult.go | 11 +++++++++++
 datasources/kmb/query_test.go  | 13 ++++++++++++-
 query/query.go                 | 11 +++++++++--
 utils/env.go                   |  6 +++++-
 utils/shortcuts.go             |  7 +++++++
 5 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/datasources/kmb/QueryResult.go b/datasources/kmb/QueryResult.go
index 48ecce3..8217bdd 100644
--- a/datasources/kmb/QueryResult.go
+++ b/datasources/kmb/QueryResult.go
@@ -1,6 +1,7 @@
 package kmb
 
 import (
+    "fmt"
     "strings"
 
     query "github.com/tgckpg/golifehk/query"
@@ -36,11 +37,21 @@ func ( this *QueryResult ) Message() ( string, error ) {
                 sb.WriteString( "\n  " )
                 for _, route := range *b.Routes {
                     utils.WriteMDv2Text( &sb, route.RouteId )
+                    if route.Direction == "O" {
+                        sb.WriteString( "↑" )
+                    } else if route.Direction == "I" {
+                        sb.WriteString( "↓" )
+                    }
+                    if route.ServiceType != "1" {
+                        utils.WriteMDv2Text( &sb, utils.ToPower( route.ServiceType ) )
+                    }
                     sb.WriteString( " " )
                 }
                 sb.WriteString( "\n" )
             }
         }
+        fmt.Print( this.Query.Key )
+    } else {
     }
 
     return sb.String(), nil
diff --git a/datasources/kmb/query_test.go b/datasources/kmb/query_test.go
index 08250b1..e99628b 100644
--- a/datasources/kmb/query_test.go
+++ b/datasources/kmb/query_test.go
@@ -6,5 +6,16 @@ import (
 )
 
 func TestQuerySchedule( t *testing.T ) {
-    fmt.Print( Query( "zh", "大欖" ).Message() )
+    qo := Query( "zh-Hant", "68X" )
+    mesg, err := qo.Message()
+    if err != nil {
+        t.Errorf( "Unexpected Error: %s", err )
+    }
+    fmt.Println( mesg )
+
+    qo = Query( "zh-Hant", "K66 朗屏" )
+    mesg, err = qo.Message()
+    if err == nil {
+        t.Errorf( "Expected Error: %s, got \"\" instead", mesg )
+    }
 }
diff --git a/query/query.go b/query/query.go
index cdfa05d..640744b 100644
--- a/query/query.go
+++ b/query/query.go
@@ -58,14 +58,21 @@ func Parse( line string, entries *[] ISearchable ) ( *QueryObject, error ) {
         return &QueryObject{ Key: Key, Results: &matches, SearchTerms: &terms }, nil
     } else if 0 < len( terms ) {
         for _, entry := range *entries {
+            anyFailed := false
             for _, term := range terms {
                 if term.IsKey {
                     continue
                 }
-                if ( Key == "" || Key == *entry.GetKey() ) && entry.Test( term.Value ) {
-                    matches = append( matches, entry )
+
+                if !( ( Key == "" || Key == *entry.GetKey() ) && entry.Test( term.Value ) ) {
+                    anyFailed = true
+                    break
                 }
             }
+
+            if !anyFailed {
+                matches = append( matches, entry )
+            }
         }
         return &QueryObject{ Key: Key, Results: &matches, SearchTerms: &terms }, nil
     }
diff --git a/utils/env.go b/utils/env.go
index 85aa0c0..f563748 100644
--- a/utils/env.go
+++ b/utils/env.go
@@ -9,4 +9,8 @@ var WORKDIR string = TryGetEnv( "GOLIFEHK_WORKDIR", filepath.Join( os.TempDir(),
 
 var BOM string = bytes.NewBuffer([]byte{ 0xEF, 0xBB, 0xBF }).String()
 
-const KEY_CHARS string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"
+var POWER_NUMBERS map[string] string = map[string] string {
+    "0": "⁰", "1": "¹", "2": "²", "3": "³",
+    "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷",
+    "8": "⁸", "9": "⁹",
+}
diff --git a/utils/shortcuts.go b/utils/shortcuts.go
index 23995f4..bb9b23b 100644
--- a/utils/shortcuts.go
+++ b/utils/shortcuts.go
@@ -16,6 +16,13 @@ func WriteMDv2Text( sb *strings.Builder, t string ) {
     sb.WriteString( t )
 }
 
+func ToPower( t string ) string {
+    for s, r := range POWER_NUMBERS {
+        t = strings.ReplaceAll( t, s, r )
+    }
+    return t
+}
+
 func TryGetEnv[T any]( name string, fallback T ) T {
     v := os.Getenv( name )