diff --git a/go.mod b/go.mod index f4b1a4e..e8f33ef 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module suah.dev/mcchunkie go 1.13 require ( + github.com/caneroj1/stemmer v0.0.0-20170128035808-c9f2ce1504d5 github.com/gomarkdown/markdown v0.0.0-20200127000047-1813ea067497 github.com/google/btree v1.0.0 // indirect github.com/matrix-org/gomatrix v0.0.0-20200128155335-9e7906b6766d diff --git a/go.sum b/go.sum index 9488cd7..1998a55 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/caneroj1/stemmer v0.0.0-20170128035808-c9f2ce1504d5 h1:KrgIOxLMw9OvGiPOX1WlxUOZzhJ6NvslCVEMb3SrIXQ= +github.com/caneroj1/stemmer v0.0.0-20170128035808-c9f2ce1504d5/go.mod h1:FX8SGAdUYnFYgGoy+xeGdnVIEq/ITKM7iMewnmng4Y4= github.com/gomarkdown/markdown v0.0.0-20200127000047-1813ea067497 h1:wJkj+x9gPYlDyM34C6r3SXPs270coWeh85wu1CsusDo= github.com/gomarkdown/markdown v0.0.0-20200127000047-1813ea067497/go.mod h1:aii0r/K0ZnHv7G0KF7xy1v0A7s2Ljrb5byB7MO5p6TU= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= diff --git a/plugins/toki_pona.go b/plugins/toki_pona.go index 0803699..3a55637 100644 --- a/plugins/toki_pona.go +++ b/plugins/toki_pona.go @@ -5,15 +5,17 @@ import ( "regexp" "strings" + "github.com/caneroj1/stemmer" "github.com/matrix-org/gomatrix" ) // Toki responds to toki pona word queries type Toki struct { - POS string - Meanings []string - Alt string - Principle string + POS string + Meanings []string + MeaningStems []string + Alt string + Principle string } // Print prints the definition @@ -21,16 +23,25 @@ func (t *Toki) Print(w string) string { return fmt.Sprintf("**%s**: (_%s_) %s", w, t.POS, strings.Join(t.Meanings, ", ")) } +// Words prints the definition +func (t *Toki) Words() []string { + s := strings.Join(t.Meanings, " ") + w := strings.Split(s, " ") + contains := make(map[string]bool) + result := []string{} + + for _, x := range w { + if ok := contains[x]; !ok { + contains[x] = true + result = append(result, x) + } + } + + return result +} + // TokiLang is our full representation of toki pona var TokiLang = map[string][]Toki{ - ":": []Toki{ - Toki{ - POS: "separator", - Meanings: []string{ - "A colon is between an hint sentences and a sentences. Before and after the colon has to be complete sentences. Don't use a colon before or after", - }, - }, - }, "telo (e )": []Toki{ Toki{ POS: "verb transitive", @@ -83,6 +94,26 @@ var TokiLang = map[string][]Toki{ "hard", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "solid", + "stone-like", + "made of stone or metal", + "hard", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "rock", + "stone", + "metal", + "mineral", + "clay", + "hard thing", + }, + }, }, "weka": []Toki{ Toki{ @@ -93,6 +124,12 @@ var TokiLang = map[string][]Toki{ "absent", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "absence", + }, + }, }, "open (e )": []Toki{ Toki{ @@ -124,15 +161,16 @@ var TokiLang = map[string][]Toki{ "white", }, }, - }, - "mi ' pona, tan ni": []Toki{ Toki{ - POS: "", + POS: "noun", Meanings: []string{ - "I'm okay because I'm alive.", + "whiteness", + "lightness", + "white thing or part", }, }, }, + "mi ' pona, tan ni": []Toki{}, "anpa": []Toki{ Toki{ POS: "adjective", @@ -143,6 +181,33 @@ var TokiLang = map[string][]Toki{ "low", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "below", + "deep", + "low", + "deeply", + "downstairs", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "lower part", + "under", + "below", + "floor", + "beneath", + "bottom", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to prostrate oneself", + }, + }, }, "lukin": []Toki{ Toki{ @@ -151,6 +216,41 @@ var TokiLang = map[string][]Toki{ "visual(ly)", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "visual(ly)", + }, + }, + Toki{ + POS: "auxiliary verb", + Meanings: []string{ + "try to", + "look for", + "to seek to", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "look", + "glance", + "sight", + "gaze", + "glimpse", + "seeing", + "vision", + "view", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to watch out", + "to pay attention", + "to look", + }, + }, }, "pali (e )": []Toki{ Toki{ @@ -199,6 +299,15 @@ var TokiLang = map[string][]Toki{ "spicy", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "something extra", + "food additive", + "accessory", + "spice", + }, + }, }, "pini": []Toki{ Toki{ @@ -210,6 +319,30 @@ var TokiLang = map[string][]Toki{ "completed", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "past", + "perfectly", + "ago", + }, + }, + Toki{ + POS: "auxiliary verb", + Meanings: []string{ + "to finish", + "to end", + "to interrupt", + "to stop", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "tip", + "end", + }, + }, }, "pakala!": []Toki{ Toki{ @@ -227,14 +360,7 @@ var TokiLang = map[string][]Toki{ }, }, }, - "mi moku, tan ni": []Toki{ - Toki{ - POS: "", - Meanings: []string{ - "I eat because I'm hungry.", - }, - }, - }, + "mi moku, tan ni": []Toki{}, "moli (e )": []Toki{ Toki{ POS: "verb transitive", @@ -243,14 +369,7 @@ var TokiLang = map[string][]Toki{ }, }, }, - "mi wile e ni": []Toki{ - Toki{ - POS: "", - Meanings: []string{ - "I'm at home.", - }, - }, - }, + "mi wile e ni": []Toki{}, "kalama": []Toki{ Toki{ POS: "adjective", @@ -260,6 +379,20 @@ var TokiLang = map[string][]Toki{ "noisy", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "noise", + "voice", + "sound", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to make noise", + }, + }, }, "linja": []Toki{ Toki{ @@ -270,6 +403,19 @@ var TokiLang = map[string][]Toki{ "elongated", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "rope", + "hair", + "thread", + "cord", + "chain", + "line", + "yarn", + "long and flexible thing; string", + }, + }, }, "lape": []Toki{ Toki{ @@ -280,6 +426,26 @@ var TokiLang = map[string][]Toki{ "sleeping", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "asleep", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "rest", + "sleep", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to rest", + "to sleep", + }, + }, }, "tenpo": []Toki{ Toki{ @@ -290,6 +456,23 @@ var TokiLang = map[string][]Toki{ "temporal", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "chronologically", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "period of time", + "moment", + "duration", + "situation", + "occasion", + "time", + }, + }, }, "sewi": []Toki{ Toki{ @@ -301,6 +484,32 @@ var TokiLang = map[string][]Toki{ "superior", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "elevated", + "religious", + "formal", + "superior", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "up", + "above", + "top", + "over", + "on", + "high", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to get up", + }, + }, }, "kon (e )": []Toki{ Toki{ @@ -318,6 +527,14 @@ var TokiLang = map[string][]Toki{ "bird-", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "bat; flying creature", + "winged animal", + "bird", + }, + }, }, "sitelen": []Toki{ Toki{ @@ -329,6 +546,23 @@ var TokiLang = map[string][]Toki{ "figurative", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "pictorially", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "image", + "representation", + "symbol", + "mark", + "writing", + "picture", + }, + }, }, "sin (e )": []Toki{ Toki{ @@ -360,6 +594,26 @@ var TokiLang = map[string][]Toki{ "erotic", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "sexual", + "erotic", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "sexuality", + "sex", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to have sex", + }, + }, }, "sijelo (e )": []Toki{ Toki{ @@ -413,6 +667,15 @@ var TokiLang = map[string][]Toki{ "inner", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "inner world", + "centre", + "stomach", + "inside", + }, + }, }, "ko": []Toki{ Toki{ @@ -437,6 +700,16 @@ var TokiLang = map[string][]Toki{ "dressed", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "cloth", + "fabric", + "network", + "internet", + "clothing", + }, + }, }, "lawa": []Toki{ Toki{ @@ -447,6 +720,21 @@ var TokiLang = map[string][]Toki{ "main", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "leading", + "in charge", + "main", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "mind", + "head", + }, + }, }, "sitelen (e )": []Toki{ Toki{ @@ -482,6 +770,15 @@ var TokiLang = map[string][]Toki{ "hole-", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "orifice", + "door", + "window", + "hole", + }, + }, }, "#": []Toki{ Toki{ @@ -511,6 +808,21 @@ var TokiLang = map[string][]Toki{ "physical", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "bodily", + "physically", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "physical state", + "torso", + "body (of person or animal)", + }, + }, }, "pimeja (e )": []Toki{ Toki{ @@ -520,14 +832,7 @@ var TokiLang = map[string][]Toki{ }, }, }, - "ona li wile e ni": []Toki{ - Toki{ - POS: "", - Meanings: []string{ - "They don't want people to destroy the environment.", - }, - }, - }, + "ona li wile e ni": []Toki{}, "a a a!": []Toki{ Toki{ POS: "interjection", @@ -570,6 +875,15 @@ var TokiLang = map[string][]Toki{ "animal", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "especially land mammal", + "lovable animal", + "beast", + "animal", + }, + }, }, "en": []Toki{ Toki{ @@ -617,6 +931,15 @@ var TokiLang = map[string][]Toki{ "long", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "rod", + "stick", + "pointy thing", + "long hard thing; branch", + }, + }, }, "alasa": []Toki{ Toki{ @@ -627,6 +950,12 @@ var TokiLang = map[string][]Toki{ "hunting-", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "hunting", + }, + }, }, "la": []Toki{ Toki{ @@ -683,6 +1012,35 @@ var TokiLang = map[string][]Toki{ "speaking", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "eloquent", + "linguistic", + "verbal", + "grammatical", + "speaking", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "speech", + "tongue", + "lingo", + "jargon", + "", + "language", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to chat", + "to communicate", + "to talk", + }, + }, }, "taso": []Toki{ Toki{ @@ -692,6 +1050,24 @@ var TokiLang = map[string][]Toki{ "only", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "just", + "merely", + "simply", + "solely", + "singly", + "only", + }, + }, + Toki{ + POS: "conjunction", + Meanings: []string{ + "however", + "but", + }, + }, }, "li": []Toki{ Toki{ @@ -714,15 +1090,24 @@ var TokiLang = map[string][]Toki{ "big", }, }, - }, - "selo mi li wile e ni": []Toki{ Toki{ - POS: "", + POS: "adverb", Meanings: []string{ - "I touch it.", + "tall", + "long", + "adult", + "important", + "big", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "size", }, }, }, + "selo mi li wile e ni": []Toki{}, "pan (e )": []Toki{ Toki{ POS: "verb transitive", @@ -749,6 +1134,35 @@ var TokiLang = map[string][]Toki{ "same", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "equally", + "exactly the same", + "just the same", + "similarly", + "just as", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "parity", + "equity", + "identity", + "par", + "sameness", + "equality", + }, + }, + Toki{ + POS: "preposition", + Meanings: []string{ + "as", + "seem", + "like", + }, + }, }, "pona la": []Toki{ Toki{ @@ -799,6 +1213,30 @@ var TokiLang = map[string][]Toki{ "active", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "briskly", + "actively", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "work", + "deed", + "project", + "activity", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to work", + "to function", + "to act", + }, + }, }, "ala": []Toki{ Toki{ @@ -810,6 +1248,27 @@ var TokiLang = map[string][]Toki{ "no", }, }, + Toki{ + POS: "adjective numeral", + Meanings: []string{ + "0", + "null", + }, + }, + Toki{ + POS: "adverb", + Meanings: []string{ + "don't", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "negation", + "zero", + "nothing", + }, + }, }, "?": []Toki{ Toki{ @@ -840,6 +1299,32 @@ var TokiLang = map[string][]Toki{ "all", }, }, + Toki{ + POS: "adjective numeral", + Meanings: []string{ + "100 (official Toki Pona book)", + }, + }, + Toki{ + POS: "adverb", + Meanings: []string{ + "forever", + "evermore", + "eternally (ale = ali)", + "(depreciated)", + "always", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "anything", + "life", + "the universe", + "(depreciated)", + "everything", + }, + }, }, "jaki!": []Toki{ Toki{ @@ -857,6 +1342,25 @@ var TokiLang = map[string][]Toki{ "to can", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "ability", + "power to do things", + "permission", + "possibility", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "is able to", + "is allowed to", + "may", + "is possible", + "can", + }, + }, }, "kin la": []Toki{ Toki{ @@ -877,6 +1381,24 @@ var TokiLang = map[string][]Toki{ "all", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "forever", + "evermore", + "eternally (ale = ali)", + "always", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "anything", + "life", + "the universe", + "everything", + }, + }, }, "ante la": []Toki{ Toki{ @@ -930,6 +1452,21 @@ var TokiLang = map[string][]Toki{ "initial", }, }, + Toki{ + POS: "auxiliary verb", + Meanings: []string{ + "to start", + "to begin", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "beginning", + "opening", + "start", + }, + }, }, "o!": []Toki{ Toki{ @@ -947,6 +1484,16 @@ var TokiLang = map[string][]Toki{ "one", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "element", + "particle", + "part", + "piece", + "unit", + }, + }, }, "telo": []Toki{ Toki{ @@ -963,6 +1510,29 @@ var TokiLang = map[string][]Toki{ "wett", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "slobbery", + "moist", + "damp", + "humid", + "sticky", + "sweaty", + "dewy", + "drizzly", + "wett", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "liquid", + "juice", + "sauce", + "water", + }, + }, }, "pona (e )": []Toki{ Toki{ @@ -985,6 +1555,15 @@ var TokiLang = map[string][]Toki{ "countrified", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "earth", + "country", + "(outdoor) area", + "land", + }, + }, }, "sinpin": []Toki{ Toki{ @@ -996,6 +1575,17 @@ var TokiLang = map[string][]Toki{ "facial", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "foremost", + "front", + "wall", + "chest", + "torso", + "face", + }, + }, }, "poka": []Toki{ Toki{ @@ -1004,6 +1594,14 @@ var TokiLang = map[string][]Toki{ "neighbouring", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "hip", + "next to", + "side", + }, + }, }, "seli": []Toki{ Toki{ @@ -1014,6 +1612,22 @@ var TokiLang = map[string][]Toki{ "hot", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "warm", + "cooked", + "hot", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "warmth", + "heat", + "fire", + }, + }, }, "luka": []Toki{ Toki{ @@ -1023,6 +1637,21 @@ var TokiLang = map[string][]Toki{ "five", }, }, + Toki{ + POS: "adjective", + Meanings: []string{ + "palpable", + "tangible", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "hand", + "tacticle organ", + "arm", + }, + }, }, "sin": []Toki{ Toki{ @@ -1034,6 +1663,22 @@ var TokiLang = map[string][]Toki{ "new", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "regenerative", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "novelty", + "innovation", + "newness", + "new release", + "news", + }, + }, }, "pimeja": []Toki{ Toki{ @@ -1043,6 +1688,13 @@ var TokiLang = map[string][]Toki{ "black", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "shadows", + "darkness", + }, + }, }, "wile": []Toki{ Toki{ @@ -1057,6 +1709,14 @@ var TokiLang = map[string][]Toki{ "to want", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "need", + "will", + "desire", + }, + }, }, "olin (e )": []Toki{ Toki{ @@ -1074,6 +1734,13 @@ var TokiLang = map[string][]Toki{ "I", }, }, + Toki{ + POS: "possessive pronoun", + Meanings: []string{ + "our", + "my", + }, + }, }, "selo": []Toki{ Toki{ @@ -1128,6 +1795,24 @@ var TokiLang = map[string][]Toki{ "dirty", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "gross", + "filthy", + "dirty", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "pollution", + "garbage", + "filth", + "feces", + "dirt", + }, + }, }, "mun": []Toki{ Toki{ @@ -1136,6 +1821,15 @@ var TokiLang = map[string][]Toki{ "lunar", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "lunar", + "night sky object", + "star", + "moon", + }, + }, }, "loje": []Toki{ Toki{ @@ -1148,6 +1842,12 @@ var TokiLang = map[string][]Toki{ "reddish", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "red", + }, + }, }, "sike": []Toki{ Toki{ @@ -1158,6 +1858,22 @@ var TokiLang = map[string][]Toki{ "round", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "rotated", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "ball", + "cycle", + "sphere", + "wheel; round or circular thing", + "circle", + }, + }, }, "ijo (e )": []Toki{ Toki{ @@ -1180,15 +1896,32 @@ var TokiLang = map[string][]Toki{ "silly", }, }, - }, - "mi pilin e ni": []Toki{ Toki{ - POS: "", + POS: "adverb", Meanings: []string{ - "I think that he doesn't have money.", + "crazy", + "foolish", + "drunk", + "strange", + "stupid", + "weird", + "silly", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "foolishness", + "silliness", + "nonsense", + "idiocy", + "obtuseness", + "muddler", + "stupidity", }, }, }, + "mi pilin e ni": []Toki{}, "ike la": []Toki{ Toki{ POS: "noun", @@ -1227,6 +1960,20 @@ var TokiLang = map[string][]Toki{ "foot-", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "on foot", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "foot; organ of locomotion; bottom", + "lower part", + "leg", + }, + }, }, "o !": []Toki{ Toki{ @@ -1235,6 +1982,12 @@ var TokiLang = map[string][]Toki{ "'o' replace 'li'.", }, }, + Toki{ + POS: "subject", + Meanings: []string{ + "An 'o' is used for imperative (commands). 'o' replace the subject.", + }, + }, }, "mu": []Toki{ Toki{ @@ -1243,6 +1996,24 @@ var TokiLang = map[string][]Toki{ "animal nois-", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "animal nois-", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "animal noise", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to communicate animally", + }, + }, }, "a": []Toki{ Toki{ @@ -1266,6 +2037,12 @@ var TokiLang = map[string][]Toki{ "optical", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "eye", + }, + }, }, "kala": []Toki{ Toki{ @@ -1274,6 +2051,14 @@ var TokiLang = map[string][]Toki{ "fish-", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "marine animal", + "sea creature", + "fish", + }, + }, }, "e sina": []Toki{ Toki{ @@ -1310,6 +2095,22 @@ var TokiLang = map[string][]Toki{ "of something", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "of something", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "something", + "stuff", + "anything", + "object", + "thing", + }, + }, }, "pona!": []Toki{ Toki{ @@ -1338,6 +2139,13 @@ var TokiLang = map[string][]Toki{ "amphibian-", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "amphibian; non-cute animal", + "reptile", + }, + }, }, "seme": []Toki{ Toki{ @@ -1377,6 +2185,15 @@ var TokiLang = map[string][]Toki{ "male", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "male", + "husband", + "boyfriend", + "man", + }, + }, }, "mama": []Toki{ Toki{ @@ -1390,6 +2207,14 @@ var TokiLang = map[string][]Toki{ "of the parent", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "mother", + "father", + "parent", + }, + }, }, "tu": []Toki{ Toki{ @@ -1399,6 +2224,13 @@ var TokiLang = map[string][]Toki{ "two", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "pair", + "duo", + }, + }, }, "jaki (e )": []Toki{ Toki{ @@ -1435,6 +2267,13 @@ var TokiLang = map[string][]Toki{ "this", }, }, + Toki{ + POS: "noun demonstrative pronoun", + Meanings: []string{ + "that", + "this", + }, + }, }, "kute (e )": []Toki{ Toki{ @@ -1453,6 +2292,14 @@ var TokiLang = map[string][]Toki{ "generous", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "transfer", + "exchange", + "giving", + }, + }, }, "nanpa": []Toki{ Toki{ @@ -1461,6 +2308,13 @@ var TokiLang = map[string][]Toki{ "To build ordinal numbers.", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "numeral", + "number", + }, + }, }, "lupa (e )": []Toki{ Toki{ @@ -1481,6 +2335,24 @@ var TokiLang = map[string][]Toki{ "urban", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "domestic", + "household", + "urban", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "e.g. house", + "home", + "room", + "building", + "indoor constructed space", + }, + }, }, "nasin": []Toki{ Toki{ @@ -1492,6 +2364,19 @@ var TokiLang = map[string][]Toki{ "systematic", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "manner", + "custom", + "road", + "path", + "doctrine", + "system", + "method", + "way", + }, + }, }, "kepeken": []Toki{ Toki{ @@ -1502,6 +2387,19 @@ var TokiLang = map[string][]Toki{ "use", }, }, + Toki{ + POS: "preposition", + Meanings: []string{ + "using", + "with", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to use", + }, + }, }, "laso": []Toki{ Toki{ @@ -1511,6 +2409,13 @@ var TokiLang = map[string][]Toki{ "bluish", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "blue-green", + "blue", + }, + }, }, "ko (e )": []Toki{ Toki{ @@ -1534,6 +2439,18 @@ var TokiLang = map[string][]Toki{ "book-", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "book", + "card", + "ticket", + "sheet", + "(web-)page", + "list ; flat and bendable thing", + "paper", + }, + }, }, "suno": []Toki{ Toki{ @@ -1543,15 +2460,22 @@ var TokiLang = map[string][]Toki{ "sunny", }, }, - }, - "sina toki e ni, tawa mi": []Toki{ Toki{ - POS: "", + POS: "adverb", Meanings: []string{ - "You told me that you are eating.", + "sunnily", + "sunny", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "light", + "sun", }, }, }, + "sina toki e ni, tawa mi": []Toki{}, "open la": []Toki{ Toki{ POS: "noun", @@ -1572,6 +2496,31 @@ var TokiLang = map[string][]Toki{ "bad", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "negative", + "wrong", + "evil", + "overly complex", + "bad", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "badness", + "evil", + "negativity", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to suck", + "to be bad", + }, + }, }, "kule": []Toki{ Toki{ @@ -1582,6 +2531,17 @@ var TokiLang = map[string][]Toki{ "colourful", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "colour", + "paint", + "ink", + "dye", + "hue", + "color", + }, + }, }, "moku": []Toki{ Toki{ @@ -1590,6 +2550,19 @@ var TokiLang = map[string][]Toki{ "eating", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "eating", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "meal", + "food", + }, + }, }, "kasi": []Toki{ Toki{ @@ -1602,6 +2575,21 @@ var TokiLang = map[string][]Toki{ "vegetable", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "vegetation", + "herb", + "leaf", + "plant", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to grow", + }, + }, }, "musi": []Toki{ Toki{ @@ -1612,6 +2600,30 @@ var TokiLang = map[string][]Toki{ "artful", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "cheerfully", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "playing", + "game", + "recreation", + "art", + "entertainment", + "fun", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to have fun", + "to play", + }, + }, }, "awen": []Toki{ Toki{ @@ -1623,6 +2635,30 @@ var TokiLang = map[string][]Toki{ "remaining", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "yet", + "still", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "continuity", + "continuum", + "stay", + "inertia", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to wait", + "to remain", + "to stay", + }, + }, }, "e mi": []Toki{ Toki{ @@ -1640,6 +2676,22 @@ var TokiLang = map[string][]Toki{ "oral", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "orally", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "lips", + "oral cavity", + "jaw", + "beak", + "mouth", + }, + }, }, "kama": []Toki{ Toki{ @@ -1649,6 +2701,39 @@ var TokiLang = map[string][]Toki{ "coming", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "future", + "coming", + }, + }, + Toki{ + POS: "auxiliary verb", + Meanings: []string{ + "to mange to", + "to become", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "happening", + "chance", + "arrival", + "beginning", + "event", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to become", + "to arrive", + "to happen", + "to come", + }, + }, }, "wawa": []Toki{ Toki{ @@ -1662,6 +2747,21 @@ var TokiLang = map[string][]Toki{ "energetic", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "powerfully", + "strongly", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "strength", + "power", + "energy", + }, + }, }, "uta (e )": []Toki{ Toki{ @@ -1683,6 +2783,16 @@ var TokiLang = map[string][]Toki{ "female", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "female", + "girl", + "wife", + "girlfriend", + "woman", + }, + }, }, "ante": []Toki{ Toki{ @@ -1696,6 +2806,17 @@ var TokiLang = map[string][]Toki{ "different", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "distinction", + "differential", + "variation", + "variance", + "disagreement", + "difference", + }, + }, }, "utala (e )": []Toki{ Toki{ @@ -1758,6 +2879,29 @@ var TokiLang = map[string][]Toki{ "true", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "being", + "presence", + "existence", + }, + }, + Toki{ + POS: "preposition", + Meanings: []string{ + "be (located) in/at/on", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to be present", + "to be real/true", + "to exist", + "to be there", + }, + }, }, "sona": []Toki{ Toki{ @@ -1768,6 +2912,28 @@ var TokiLang = map[string][]Toki{ "knowing", }, }, + Toki{ + POS: "auxiliary verb", + Meanings: []string{ + "to know how to", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "wisdom", + "intelligence", + "understanding", + "knowledge", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to understand", + "to know", + }, + }, }, "moli": []Toki{ Toki{ @@ -1783,6 +2949,26 @@ var TokiLang = map[string][]Toki{ "dead", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "mortally", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "decease", + "death", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to be dead", + "to die", + }, + }, }, "esun": []Toki{ Toki{ @@ -1796,6 +2982,17 @@ var TokiLang = map[string][]Toki{ "commercial", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "shop", + "fair", + "bazaar", + "business", + "transaction", + "market", + }, + }, }, "kalama (e )": []Toki{ Toki{ @@ -1866,6 +3063,35 @@ var TokiLang = map[string][]Toki{ "destroyed", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "ruined", + "demolished", + "shattered", + "wrecked", + "destroyed", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "accident", + "mistake", + "destruction", + "damage", + "breaking", + "blunder", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to fall apart", + "to break", + "to screw up", + }, + }, }, "pan": []Toki{ Toki{ @@ -1891,6 +3117,22 @@ var TokiLang = map[string][]Toki{ "financial", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "financially", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "material wealth", + "currency", + "dollar", + "capital", + "money", + }, + }, }, "toki!": []Toki{ Toki{ @@ -1917,6 +3159,32 @@ var TokiLang = map[string][]Toki{ "many", }, }, + Toki{ + POS: "adjective numeral", + Meanings: []string{ + "20 (official Toki Pona book)", + }, + }, + Toki{ + POS: "adverb", + Meanings: []string{ + "very", + "much", + "several", + "a lot", + "abundant", + "numerous", + "more", + "many", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "quantity", + "amount", + }, + }, }, "olin": []Toki{ Toki{ @@ -1925,6 +3193,12 @@ var TokiLang = map[string][]Toki{ "love", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "love", + }, + }, }, "ala!": []Toki{ Toki{ @@ -1951,6 +3225,40 @@ var TokiLang = map[string][]Toki{ "moving", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "mobile", + "moving", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "transportation", + "movement", + }, + }, + Toki{ + POS: "preposition", + Meanings: []string{ + "in order to", + "towards", + "for", + "until", + "to", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to travel", + "to move", + "to leave", + "to visit", + "to walk", + }, + }, }, "seli (e )": []Toki{ Toki{ @@ -1982,6 +3290,31 @@ var TokiLang = map[string][]Toki{ "sensitive", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "perceptively", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "emotion", + "feel", + "think", + "sense", + "touch", + "", + "feelings", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to sense", + "to feel", + }, + }, }, "walo (e )": []Toki{ Toki{ @@ -2025,6 +3358,21 @@ var TokiLang = map[string][]Toki{ "useful", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "usefully", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "device", + "machine", + "thing used for a specific purpose", + "tool", + }, + }, }, "lete (e )": []Toki{ Toki{ @@ -2054,6 +3402,13 @@ var TokiLang = map[string][]Toki{ "yellowish", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "light green", + "yellow", + }, + }, }, "awen (e )": []Toki{ Toki{ @@ -2073,6 +3428,16 @@ var TokiLang = map[string][]Toki{ "communal", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "community", + "society", + "company", + "people", + "group", + }, + }, }, "pona": []Toki{ Toki{ @@ -2086,6 +3451,25 @@ var TokiLang = map[string][]Toki{ "good", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "simple", + "positive", + "nice", + "correct", + "right", + "good", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "simplicity", + "positivity", + "good", + }, + }, }, "monsi": []Toki{ Toki{ @@ -2095,6 +3479,15 @@ var TokiLang = map[string][]Toki{ "back", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "rear end", + "butt", + "behind", + "back", + }, + }, }, "supa": []Toki{ Toki{ @@ -2106,6 +3499,17 @@ var TokiLang = map[string][]Toki{ "flat", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "e.g furniture", + "table", + "chair", + "pillow", + "floor", + "horizontal surface", + }, + }, }, "sama la": []Toki{ Toki{ @@ -2125,6 +3529,13 @@ var TokiLang = map[string][]Toki{ "auditory", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "ear", + "hearing", + }, + }, }, "mama (e )": []Toki{ Toki{ @@ -2143,6 +3554,24 @@ var TokiLang = map[string][]Toki{ "fighting", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "fighting", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "disharmony", + "fight", + "war", + "battle", + "attack", + "violence", + "conflict", + }, + }, }, "sina": []Toki{ Toki{ @@ -2151,6 +3580,12 @@ var TokiLang = map[string][]Toki{ "you", }, }, + Toki{ + POS: "possessive pronoun", + Meanings: []string{ + "yours", + }, + }, }, "pi": []Toki{ Toki{ @@ -2170,6 +3605,14 @@ var TokiLang = map[string][]Toki{ "she", }, }, + Toki{ + POS: "possessive pronoun", + Meanings: []string{ + "his", + "its", + "her", + }, + }, }, "nena": []Toki{ Toki{ @@ -2183,6 +3626,18 @@ var TokiLang = map[string][]Toki{ "hilly", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "hill", + "extrusion", + "button", + "mountain", + "nose", + "protuberance", + "bump", + }, + }, }, "kon": []Toki{ Toki{ @@ -2193,6 +3648,23 @@ var TokiLang = map[string][]Toki{ "air-like", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "ethereal", + "gaseous", + "air-like", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "wind", + "smell", + "soul", + "air", + }, + }, }, "unpa (e )": []Toki{ Toki{ @@ -2236,6 +3708,26 @@ var TokiLang = map[string][]Toki{ "human", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "somebody's", + "personal", + "of people", + "human", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "people", + "human", + "being", + "somebody", + "anybody", + "person", + }, + }, }, "kama sona (e )": []Toki{ Toki{ @@ -2275,6 +3767,20 @@ var TokiLang = map[string][]Toki{ "cold", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "bleakly", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "chill", + "bleakness", + "cold", + }, + }, }, "lili": []Toki{ Toki{ @@ -2289,6 +3795,26 @@ var TokiLang = map[string][]Toki{ "small", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "little", + "young", + "a bit", + "short", + "few", + "less", + "small", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "youth", + "immaturity", + "smallness", + }, + }, }, "sama (e )": []Toki{ Toki{ @@ -2308,14 +3834,7 @@ var TokiLang = map[string][]Toki{ }, }, }, - "sina kama e ni": []Toki{ - Toki{ - POS: "", - Meanings: []string{ - "I want to eat. You made me hungry.", - }, - }, - }, + "sina kama e ni": []Toki{}, "pu": []Toki{ Toki{ POS: "adjective", @@ -2323,6 +3842,24 @@ var TokiLang = map[string][]Toki{ "buying and interacting with the official Toki Pona book", }, }, + Toki{ + POS: "auxiliary verb", + Meanings: []string{ + "to buying and interacting with the official Toki Pona book", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "buying and interacting with the official Toki Pona book", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "to buy and to read (the official Toki Pona book)", + }, + }, }, "pilin (e )": []Toki{ Toki{ @@ -2345,6 +3882,24 @@ var TokiLang = map[string][]Toki{ "indeed", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "indeed", + "in fact", + "really", + "objectively", + "kin can be the very last word in an adverb group.", + "actually", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "fact", + "reality", + }, + }, }, "tan": []Toki{ Toki{ @@ -2354,6 +3909,30 @@ var TokiLang = map[string][]Toki{ "causal", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "cause", + "origin", + }, + }, + Toki{ + POS: "preposition", + Meanings: []string{ + "by", + "because of", + "since", + "from", + }, + }, + Toki{ + POS: "verb intransitive", + Meanings: []string{ + "originate from", + "come out of", + "to come from", + }, + }, }, "kili": []Toki{ Toki{ @@ -2362,6 +3941,20 @@ var TokiLang = map[string][]Toki{ "fruity", }, }, + Toki{ + POS: "adverb", + Meanings: []string{ + "fruity", + }, + }, + Toki{ + POS: "noun", + Meanings: []string{ + "pulpy vegetable", + "mushroom", + "fruit", + }, + }, }, "suwi": []Toki{ Toki{ @@ -2371,6 +3964,13 @@ var TokiLang = map[string][]Toki{ "sweet", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "sweet food", + "candy", + }, + }, }, "jo": []Toki{ Toki{ @@ -2380,6 +3980,14 @@ var TokiLang = map[string][]Toki{ "private", }, }, + Toki{ + POS: "noun", + Meanings: []string{ + "possessions", + "content", + "having", + }, + }, }, "nimi": []Toki{ Toki{ @@ -2410,7 +4018,7 @@ func (t *Toki) Descr() string { // Re is the regex for matching hi messages. func (t *Toki) Re() string { - return `(?i)^toki: (.+)$` + return `(?i)^(toki[\?]?):? (.+)$` } // Match determines if we are highfiving @@ -2422,22 +4030,39 @@ func (t *Toki) Match(user, msg string) bool { // SetStore we don't need a store here func (t *Toki) SetStore(s PluginStore) {} -func (t *Toki) fix(msg string) string { +func (t *Toki) fix(msg string) (string, string) { re := regexp.MustCompile(t.Re()) - return re.ReplaceAllString(msg, "$1") + return re.ReplaceAllString(msg, "$1"), re.ReplaceAllString(msg, "$2") } // RespondText to hi events func (t *Toki) RespondText(c *gomatrix.Client, ev *gomatrix.Event, user, post string) { - w := t.fix(post) - if word, ok := TokiLang[w]; ok { - var defs []string - for _, v := range word { - defs = append(defs, v.Print(w)) + cmd, w := t.fix(post) + switch cmd { + case "toki": + if word, ok := TokiLang[w]; ok { + var defs []string + for _, v := range word { + defs = append(defs, v.Print(w)) + } + SendMD(c, ev.RoomID, strings.Join(defs, "\n\n")) + } else { + SendText(c, ev.RoomID, "mi sona ala") } - SendMD(c, ev.RoomID, strings.Join(defs, "\n\n")) - } else { - SendText(c, ev.RoomID, "mi sona ala") + case "toki?": + st := stemmer.Stem(w) + words := []string{} + for i, ts := range TokiLang { + for _, t := range ts { + stems := stemmer.StemMultiple(t.Words()) + for _, x := range stems { + if x == st { + words = append(words, t.Print(i)) + } + } + } + } + SendMD(c, ev.RoomID, strings.Join(words, "\n\n")) } } diff --git a/scripts/parse_toki-pona_ding.awk b/scripts/parse_toki-pona_ding.awk index 87cd131..783306c 100644 --- a/scripts/parse_toki-pona_ding.awk +++ b/scripts/parse_toki-pona_ding.awk @@ -15,20 +15,30 @@ END { for (w in words) { - split(words[w], pnd, "#") print "\""w"\": []Toki{" + split(words[w], pnd, "#") + + for (p in pnd) { + split(pnd[p], a, "$") + pos = a[2] + meanings = a[3] + + if (pos != "") { print "\tToki{" - split(pnd[2], a, "$") - print "\t\tPOS: " "\""a[2]"\"," - split(a[3], b, ",") - print "\t\tMeanings: []string{" - for (x in b) { - gsub(/ $/, "", b[x]); - gsub(/^ /, "", b[x]); - print "\t\t\t\""b[x]"\"," - } - print "\t\t}," + + print "\t\tPOS: " "\"" pos "\"," + print "\t\tMeanings: []string{" + split(meanings, b, ",") + for (x in b) { + gsub(/ $/, "", b[x]); + gsub(/^ /, "", b[x]); + print "\t\t\t\""b[x]"\"," + } + print "\t\t}," print "\t}," + } + + } print "}," } }