diff --git a/main.go b/main.go index 26a451d..a780f6b 100644 --- a/main.go +++ b/main.go @@ -21,9 +21,10 @@ type ( Close() } Question struct { - Q Renderable - Clues []Renderable - Tags []IDT + Q Renderable + Solution []Renderable + Clues []Renderable + Tags []IDT } Answer struct { Q IDQ diff --git a/testdata/tofugu.sh b/testdata/tofugu.sh index 0519d50..456a6e3 100644 --- a/testdata/tofugu.sh +++ b/testdata/tofugu.sh @@ -2,10 +2,11 @@ for f in tofugu.d/*-0.png; do qid=${f##*/} qid=${qid%-*} tags=${qid#*-} - printf ' %s: {"q":"%s", "clues":["%s", "%s"], "tags": ["%s"]}'"\n" \ + printf ' %s: {"q":"%s", "clues":["%s"], "tags": ["%s"], "solution": ["%s"]}'"\n" \ $qid \ img:./testdata/$f \ img:./testdata/${f%-0.png}-1.png \ + $tags \ ${qid%%-*} \ - $tags + done diff --git a/testdata/tofugu.yaml b/testdata/tofugu.yaml index f219229..f57c301 100644 --- a/testdata/tofugu.yaml +++ b/testdata/tofugu.yaml @@ -1,96 +1,96 @@ knowledge: questions: - a-hiragana: {"q":"img:./testdata/tofugu.d/a-hiragana-0.png", "clues":["img:./testdata/tofugu.d/a-hiragana-1.png", "a"], "tags": ["hiragana"]} - a-katakana: {"q":"img:./testdata/tofugu.d/a-katakana-0.png", "clues":["img:./testdata/tofugu.d/a-katakana-1.png", "a"], "tags": ["katakana"]} - chi-hiragana: {"q":"img:./testdata/tofugu.d/chi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/chi-hiragana-1.png", "chi"], "tags": ["hiragana"]} - chi-katakana: {"q":"img:./testdata/tofugu.d/chi-katakana-0.png", "clues":["img:./testdata/tofugu.d/chi-katakana-1.png", "chi"], "tags": ["katakana"]} - e-hiragana: {"q":"img:./testdata/tofugu.d/e-hiragana-0.png", "clues":["img:./testdata/tofugu.d/e-hiragana-1.png", "e"], "tags": ["hiragana"]} - e-katakana: {"q":"img:./testdata/tofugu.d/e-katakana-0.png", "clues":["img:./testdata/tofugu.d/e-katakana-1.png", "e"], "tags": ["katakana"]} - ha-hiragana: {"q":"img:./testdata/tofugu.d/ha-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ha-hiragana-1.png", "ha"], "tags": ["hiragana"]} - ha-katakana: {"q":"img:./testdata/tofugu.d/ha-katakana-0.png", "clues":["img:./testdata/tofugu.d/ha-katakana-1.png", "ha"], "tags": ["katakana"]} - he-hiragana: {"q":"img:./testdata/tofugu.d/he-hiragana-0.png", "clues":["img:./testdata/tofugu.d/he-hiragana-1.png", "he"], "tags": ["hiragana"]} - he-katakana: {"q":"img:./testdata/tofugu.d/he-katakana-0.png", "clues":["img:./testdata/tofugu.d/he-katakana-1.png", "he"], "tags": ["katakana"]} - hi-hiragana: {"q":"img:./testdata/tofugu.d/hi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/hi-hiragana-1.png", "hi"], "tags": ["hiragana"]} - hi-katakana: {"q":"img:./testdata/tofugu.d/hi-katakana-0.png", "clues":["img:./testdata/tofugu.d/hi-katakana-1.png", "hi"], "tags": ["katakana"]} - ho-hiragana: {"q":"img:./testdata/tofugu.d/ho-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ho-hiragana-1.png", "ho"], "tags": ["hiragana"]} - ho-katakana: {"q":"img:./testdata/tofugu.d/ho-katakana-0.png", "clues":["img:./testdata/tofugu.d/ho-katakana-1.png", "ho"], "tags": ["katakana"]} - hufu-hiragana: {"q":"img:./testdata/tofugu.d/hufu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/hufu-hiragana-1.png", "hufu"], "tags": ["hiragana"]} - hufu-katakana: {"q":"img:./testdata/tofugu.d/hufu-katakana-0.png", "clues":["img:./testdata/tofugu.d/hufu-katakana-1.png", "hufu"], "tags": ["katakana"]} - i-hiragana: {"q":"img:./testdata/tofugu.d/i-hiragana-0.png", "clues":["img:./testdata/tofugu.d/i-hiragana-1.png", "i"], "tags": ["hiragana"]} - i-katakana: {"q":"img:./testdata/tofugu.d/i-katakana-0.png", "clues":["img:./testdata/tofugu.d/i-katakana-1.png", "i"], "tags": ["katakana"]} - ka-hiragana: {"q":"img:./testdata/tofugu.d/ka-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ka-hiragana-1.png", "ka"], "tags": ["hiragana"]} - ka-katakana: {"q":"img:./testdata/tofugu.d/ka-katakana-0.png", "clues":["img:./testdata/tofugu.d/ka-katakana-1.png", "ka"], "tags": ["katakana"]} - ke-hiragana: {"q":"img:./testdata/tofugu.d/ke-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ke-hiragana-1.png", "ke"], "tags": ["hiragana"]} - ke-katakana: {"q":"img:./testdata/tofugu.d/ke-katakana-0.png", "clues":["img:./testdata/tofugu.d/ke-katakana-1.png", "ke"], "tags": ["katakana"]} - ki-hiragana: {"q":"img:./testdata/tofugu.d/ki-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ki-hiragana-1.png", "ki"], "tags": ["hiragana"]} - ki-katakana: {"q":"img:./testdata/tofugu.d/ki-katakana-0.png", "clues":["img:./testdata/tofugu.d/ki-katakana-1.png", "ki"], "tags": ["katakana"]} - ko-hiragana: {"q":"img:./testdata/tofugu.d/ko-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ko-hiragana-1.png", "ko"], "tags": ["hiragana"]} - ko-katakana: {"q":"img:./testdata/tofugu.d/ko-katakana-0.png", "clues":["img:./testdata/tofugu.d/ko-katakana-1.png", "ko"], "tags": ["katakana"]} - ku-hiragana: {"q":"img:./testdata/tofugu.d/ku-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ku-hiragana-1.png", "ku"], "tags": ["hiragana"]} - ma-hiragana: {"q":"img:./testdata/tofugu.d/ma-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ma-hiragana-1.png", "ma"], "tags": ["hiragana"]} - ma-katakana: {"q":"img:./testdata/tofugu.d/ma-katakana-0.png", "clues":["img:./testdata/tofugu.d/ma-katakana-1.png", "ma"], "tags": ["katakana"]} - me-hiragana: {"q":"img:./testdata/tofugu.d/me-hiragana-0.png", "clues":["img:./testdata/tofugu.d/me-hiragana-1.png", "me"], "tags": ["hiragana"]} - me-katakana: {"q":"img:./testdata/tofugu.d/me-katakana-0.png", "clues":["img:./testdata/tofugu.d/me-katakana-1.png", "me"], "tags": ["katakana"]} - mi-hiragana: {"q":"img:./testdata/tofugu.d/mi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/mi-hiragana-1.png", "mi"], "tags": ["hiragana"]} - mi-katakana: {"q":"img:./testdata/tofugu.d/mi-katakana-0.png", "clues":["img:./testdata/tofugu.d/mi-katakana-1.png", "mi"], "tags": ["katakana"]} - mo-hiragana: {"q":"img:./testdata/tofugu.d/mo-hiragana-0.png", "clues":["img:./testdata/tofugu.d/mo-hiragana-1.png", "mo"], "tags": ["hiragana"]} - mo-katakana: {"q":"img:./testdata/tofugu.d/mo-katakana-0.png", "clues":["img:./testdata/tofugu.d/mo-katakana-1.png", "mo"], "tags": ["katakana"]} - mu-hiragana: {"q":"img:./testdata/tofugu.d/mu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/mu-hiragana-1.png", "mu"], "tags": ["hiragana"]} - mu-katakana: {"q":"img:./testdata/tofugu.d/mu-katakana-0.png", "clues":["img:./testdata/tofugu.d/mu-katakana-1.png", "mu"], "tags": ["katakana"]} - n-hiragana: {"q":"img:./testdata/tofugu.d/n-hiragana-0.png", "clues":["img:./testdata/tofugu.d/n-hiragana-1.png", "n"], "tags": ["hiragana"]} - n-katakana: {"q":"img:./testdata/tofugu.d/n-katakana-0.png", "clues":["img:./testdata/tofugu.d/n-katakana-1.png", "n"], "tags": ["katakana"]} - na-hiragana: {"q":"img:./testdata/tofugu.d/na-hiragana-0.png", "clues":["img:./testdata/tofugu.d/na-hiragana-1.png", "na"], "tags": ["hiragana"]} - na-katakana: {"q":"img:./testdata/tofugu.d/na-katakana-0.png", "clues":["img:./testdata/tofugu.d/na-katakana-1.png", "na"], "tags": ["katakana"]} - ne-hiragana: {"q":"img:./testdata/tofugu.d/ne-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ne-hiragana-1.png", "ne"], "tags": ["hiragana"]} - ne-katakana: {"q":"img:./testdata/tofugu.d/ne-katakana-0.png", "clues":["img:./testdata/tofugu.d/ne-katakana-1.png", "ne"], "tags": ["katakana"]} - ni-hiragana: {"q":"img:./testdata/tofugu.d/ni-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ni-hiragana-1.png", "ni"], "tags": ["hiragana"]} - ni-katakana: {"q":"img:./testdata/tofugu.d/ni-katakana-0.png", "clues":["img:./testdata/tofugu.d/ni-katakana-1.png", "ni"], "tags": ["katakana"]} - no-hiragana: {"q":"img:./testdata/tofugu.d/no-hiragana-0.png", "clues":["img:./testdata/tofugu.d/no-hiragana-1.png", "no"], "tags": ["hiragana"]} - no-katakana: {"q":"img:./testdata/tofugu.d/no-katakana-0.png", "clues":["img:./testdata/tofugu.d/no-katakana-1.png", "no"], "tags": ["katakana"]} - nu-hiragana: {"q":"img:./testdata/tofugu.d/nu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/nu-hiragana-1.png", "nu"], "tags": ["hiragana"]} - nu-katakana: {"q":"img:./testdata/tofugu.d/nu-katakana-0.png", "clues":["img:./testdata/tofugu.d/nu-katakana-1.png", "nu"], "tags": ["katakana"]} - o-hiragana: {"q":"img:./testdata/tofugu.d/o-hiragana-0.png", "clues":["img:./testdata/tofugu.d/o-hiragana-1.png", "o"], "tags": ["hiragana"]} - o-katakana: {"q":"img:./testdata/tofugu.d/o-katakana-0.png", "clues":["img:./testdata/tofugu.d/o-katakana-1.png", "o"], "tags": ["katakana"]} - or-katakana: {"q":"img:./testdata/tofugu.d/or-katakana-0.png", "clues":["img:./testdata/tofugu.d/or-katakana-1.png", "or"], "tags": ["katakana"]} - ra-hiragana: {"q":"img:./testdata/tofugu.d/ra-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ra-hiragana-1.png", "ra"], "tags": ["hiragana"]} - ra-katakana: {"q":"img:./testdata/tofugu.d/ra-katakana-0.png", "clues":["img:./testdata/tofugu.d/ra-katakana-1.png", "ra"], "tags": ["katakana"]} - re-hiragana: {"q":"img:./testdata/tofugu.d/re-hiragana-0.png", "clues":["img:./testdata/tofugu.d/re-hiragana-1.png", "re"], "tags": ["hiragana"]} - re-katakana: {"q":"img:./testdata/tofugu.d/re-katakana-0.png", "clues":["img:./testdata/tofugu.d/re-katakana-1.png", "re"], "tags": ["katakana"]} - ri-hiragana: {"q":"img:./testdata/tofugu.d/ri-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ri-hiragana-1.png", "ri"], "tags": ["hiragana"]} - ri-katakana: {"q":"img:./testdata/tofugu.d/ri-katakana-0.png", "clues":["img:./testdata/tofugu.d/ri-katakana-1.png", "ri"], "tags": ["katakana"]} - ro-hiragana: {"q":"img:./testdata/tofugu.d/ro-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ro-hiragana-1.png", "ro"], "tags": ["hiragana"]} - ro-katakana: {"q":"img:./testdata/tofugu.d/ro-katakana-0.png", "clues":["img:./testdata/tofugu.d/ro-katakana-1.png", "ro"], "tags": ["katakana"]} - ru-hiragana: {"q":"img:./testdata/tofugu.d/ru-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ru-hiragana-1.png", "ru"], "tags": ["hiragana"]} - ru-katakana: {"q":"img:./testdata/tofugu.d/ru-katakana-0.png", "clues":["img:./testdata/tofugu.d/ru-katakana-1.png", "ru"], "tags": ["katakana"]} - sa-hiragana: {"q":"img:./testdata/tofugu.d/sa-hiragana-0.png", "clues":["img:./testdata/tofugu.d/sa-hiragana-1.png", "sa"], "tags": ["hiragana"]} - sa-katakana: {"q":"img:./testdata/tofugu.d/sa-katakana-0.png", "clues":["img:./testdata/tofugu.d/sa-katakana-1.png", "sa"], "tags": ["katakana"]} - se-hiragana: {"q":"img:./testdata/tofugu.d/se-hiragana-0.png", "clues":["img:./testdata/tofugu.d/se-hiragana-1.png", "se"], "tags": ["hiragana"]} - se-katakana: {"q":"img:./testdata/tofugu.d/se-katakana-0.png", "clues":["img:./testdata/tofugu.d/se-katakana-1.png", "se"], "tags": ["katakana"]} - shi-hiragana: {"q":"img:./testdata/tofugu.d/shi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/shi-hiragana-1.png", "shi"], "tags": ["hiragana"]} - shi-katakana: {"q":"img:./testdata/tofugu.d/shi-katakana-0.png", "clues":["img:./testdata/tofugu.d/shi-katakana-1.png", "shi"], "tags": ["katakana"]} - so-hiragana: {"q":"img:./testdata/tofugu.d/so-hiragana-0.png", "clues":["img:./testdata/tofugu.d/so-hiragana-1.png", "so"], "tags": ["hiragana"]} - so-katakana: {"q":"img:./testdata/tofugu.d/so-katakana-0.png", "clues":["img:./testdata/tofugu.d/so-katakana-1.png", "so"], "tags": ["katakana"]} - su-hiragana: {"q":"img:./testdata/tofugu.d/su-hiragana-0.png", "clues":["img:./testdata/tofugu.d/su-hiragana-1.png", "su"], "tags": ["hiragana"]} - su-katakana: {"q":"img:./testdata/tofugu.d/su-katakana-0.png", "clues":["img:./testdata/tofugu.d/su-katakana-1.png", "su"], "tags": ["katakana"]} - ta-hiragana: {"q":"img:./testdata/tofugu.d/ta-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ta-hiragana-1.png", "ta"], "tags": ["hiragana"]} - ta-katakana: {"q":"img:./testdata/tofugu.d/ta-katakana-0.png", "clues":["img:./testdata/tofugu.d/ta-katakana-1.png", "ta"], "tags": ["katakana"]} - te-hiragana: {"q":"img:./testdata/tofugu.d/te-hiragana-0.png", "clues":["img:./testdata/tofugu.d/te-hiragana-1.png", "te"], "tags": ["hiragana"]} - te-katakana: {"q":"img:./testdata/tofugu.d/te-katakana-0.png", "clues":["img:./testdata/tofugu.d/te-katakana-1.png", "te"], "tags": ["katakana"]} - to-hiragana: {"q":"img:./testdata/tofugu.d/to-hiragana-0.png", "clues":["img:./testdata/tofugu.d/to-hiragana-1.png", "to"], "tags": ["hiragana"]} - to-katakana: {"q":"img:./testdata/tofugu.d/to-katakana-0.png", "clues":["img:./testdata/tofugu.d/to-katakana-1.png", "to"], "tags": ["katakana"]} - tsu-hiragana: {"q":"img:./testdata/tofugu.d/tsu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/tsu-hiragana-1.png", "tsu"], "tags": ["hiragana"]} - tsu-katakana: {"q":"img:./testdata/tofugu.d/tsu-katakana-0.png", "clues":["img:./testdata/tofugu.d/tsu-katakana-1.png", "tsu"], "tags": ["katakana"]} - u-hiragana: {"q":"img:./testdata/tofugu.d/u-hiragana-0.png", "clues":["img:./testdata/tofugu.d/u-hiragana-1.png", "u"], "tags": ["hiragana"]} - wa-hiragana: {"q":"img:./testdata/tofugu.d/wa-hiragana-0.png", "clues":["img:./testdata/tofugu.d/wa-hiragana-1.png", "wa"], "tags": ["hiragana"]} - wa-katakana: {"q":"img:./testdata/tofugu.d/wa-katakana-0.png", "clues":["img:./testdata/tofugu.d/wa-katakana-1.png", "wa"], "tags": ["katakana"]} - wo-hiragana: {"q":"img:./testdata/tofugu.d/wo-hiragana-0.png", "clues":["img:./testdata/tofugu.d/wo-hiragana-1.png", "wo"], "tags": ["hiragana"]} - wo-katakana: {"q":"img:./testdata/tofugu.d/wo-katakana-0.png", "clues":["img:./testdata/tofugu.d/wo-katakana-1.png", "wo"], "tags": ["katakana"]} - ya-hiragana: {"q":"img:./testdata/tofugu.d/ya-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ya-hiragana-1.png", "ya"], "tags": ["hiragana"]} - ya-katakana: {"q":"img:./testdata/tofugu.d/ya-katakana-0.png", "clues":["img:./testdata/tofugu.d/ya-katakana-1.png", "ya"], "tags": ["katakana"]} - yo-hiragana: {"q":"img:./testdata/tofugu.d/yo-hiragana-0.png", "clues":["img:./testdata/tofugu.d/yo-hiragana-1.png", "yo"], "tags": ["hiragana"]} - yo-katakana: {"q":"img:./testdata/tofugu.d/yo-katakana-0.png", "clues":["img:./testdata/tofugu.d/yo-katakana-1.png", "yo"], "tags": ["katakana"]} - yu-hiragana: {"q":"img:./testdata/tofugu.d/yu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/yu-hiragana-1.png", "yu"], "tags": ["hiragana"]} - yu-katakana: {"q":"img:./testdata/tofugu.d/yu-katakana-0.png", "clues":["img:./testdata/tofugu.d/yu-katakana-1.png", "yu"], "tags": ["katakana"]} + a-hiragana: {"q":"img:./testdata/tofugu.d/a-hiragana-0.png", "clues":["img:./testdata/tofugu.d/a-hiragana-1.png"], "tags": ["hiragana"], "solution": ["a"]} + a-katakana: {"q":"img:./testdata/tofugu.d/a-katakana-0.png", "clues":["img:./testdata/tofugu.d/a-katakana-1.png"], "tags": ["katakana"], "solution": ["a"]} + chi-hiragana: {"q":"img:./testdata/tofugu.d/chi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/chi-hiragana-1.png"], "tags": ["hiragana"], "solution": ["chi"]} + chi-katakana: {"q":"img:./testdata/tofugu.d/chi-katakana-0.png", "clues":["img:./testdata/tofugu.d/chi-katakana-1.png"], "tags": ["katakana"], "solution": ["chi"]} + e-hiragana: {"q":"img:./testdata/tofugu.d/e-hiragana-0.png", "clues":["img:./testdata/tofugu.d/e-hiragana-1.png"], "tags": ["hiragana"], "solution": ["e"]} + e-katakana: {"q":"img:./testdata/tofugu.d/e-katakana-0.png", "clues":["img:./testdata/tofugu.d/e-katakana-1.png"], "tags": ["katakana"], "solution": ["e"]} + ha-hiragana: {"q":"img:./testdata/tofugu.d/ha-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ha-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ha"]} + ha-katakana: {"q":"img:./testdata/tofugu.d/ha-katakana-0.png", "clues":["img:./testdata/tofugu.d/ha-katakana-1.png"], "tags": ["katakana"], "solution": ["ha"]} + he-hiragana: {"q":"img:./testdata/tofugu.d/he-hiragana-0.png", "clues":["img:./testdata/tofugu.d/he-hiragana-1.png"], "tags": ["hiragana"], "solution": ["he"]} + he-katakana: {"q":"img:./testdata/tofugu.d/he-katakana-0.png", "clues":["img:./testdata/tofugu.d/he-katakana-1.png"], "tags": ["katakana"], "solution": ["he"]} + hi-hiragana: {"q":"img:./testdata/tofugu.d/hi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/hi-hiragana-1.png"], "tags": ["hiragana"], "solution": ["hi"]} + hi-katakana: {"q":"img:./testdata/tofugu.d/hi-katakana-0.png", "clues":["img:./testdata/tofugu.d/hi-katakana-1.png"], "tags": ["katakana"], "solution": ["hi"]} + ho-hiragana: {"q":"img:./testdata/tofugu.d/ho-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ho-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ho"]} + ho-katakana: {"q":"img:./testdata/tofugu.d/ho-katakana-0.png", "clues":["img:./testdata/tofugu.d/ho-katakana-1.png"], "tags": ["katakana"], "solution": ["ho"]} + hufu-hiragana: {"q":"img:./testdata/tofugu.d/hufu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/hufu-hiragana-1.png"], "tags": ["hiragana"], "solution": ["hufu"]} + hufu-katakana: {"q":"img:./testdata/tofugu.d/hufu-katakana-0.png", "clues":["img:./testdata/tofugu.d/hufu-katakana-1.png"], "tags": ["katakana"], "solution": ["hufu"]} + i-hiragana: {"q":"img:./testdata/tofugu.d/i-hiragana-0.png", "clues":["img:./testdata/tofugu.d/i-hiragana-1.png"], "tags": ["hiragana"], "solution": ["i"]} + i-katakana: {"q":"img:./testdata/tofugu.d/i-katakana-0.png", "clues":["img:./testdata/tofugu.d/i-katakana-1.png"], "tags": ["katakana"], "solution": ["i"]} + ka-hiragana: {"q":"img:./testdata/tofugu.d/ka-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ka-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ka"]} + ka-katakana: {"q":"img:./testdata/tofugu.d/ka-katakana-0.png", "clues":["img:./testdata/tofugu.d/ka-katakana-1.png"], "tags": ["katakana"], "solution": ["ka"]} + ke-hiragana: {"q":"img:./testdata/tofugu.d/ke-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ke-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ke"]} + ke-katakana: {"q":"img:./testdata/tofugu.d/ke-katakana-0.png", "clues":["img:./testdata/tofugu.d/ke-katakana-1.png"], "tags": ["katakana"], "solution": ["ke"]} + ki-hiragana: {"q":"img:./testdata/tofugu.d/ki-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ki-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ki"]} + ki-katakana: {"q":"img:./testdata/tofugu.d/ki-katakana-0.png", "clues":["img:./testdata/tofugu.d/ki-katakana-1.png"], "tags": ["katakana"], "solution": ["ki"]} + ko-hiragana: {"q":"img:./testdata/tofugu.d/ko-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ko-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ko"]} + ko-katakana: {"q":"img:./testdata/tofugu.d/ko-katakana-0.png", "clues":["img:./testdata/tofugu.d/ko-katakana-1.png"], "tags": ["katakana"], "solution": ["ko"]} + ku-hiragana: {"q":"img:./testdata/tofugu.d/ku-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ku-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ku"]} + ma-hiragana: {"q":"img:./testdata/tofugu.d/ma-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ma-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ma"]} + ma-katakana: {"q":"img:./testdata/tofugu.d/ma-katakana-0.png", "clues":["img:./testdata/tofugu.d/ma-katakana-1.png"], "tags": ["katakana"], "solution": ["ma"]} + me-hiragana: {"q":"img:./testdata/tofugu.d/me-hiragana-0.png", "clues":["img:./testdata/tofugu.d/me-hiragana-1.png"], "tags": ["hiragana"], "solution": ["me"]} + me-katakana: {"q":"img:./testdata/tofugu.d/me-katakana-0.png", "clues":["img:./testdata/tofugu.d/me-katakana-1.png"], "tags": ["katakana"], "solution": ["me"]} + mi-hiragana: {"q":"img:./testdata/tofugu.d/mi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/mi-hiragana-1.png"], "tags": ["hiragana"], "solution": ["mi"]} + mi-katakana: {"q":"img:./testdata/tofugu.d/mi-katakana-0.png", "clues":["img:./testdata/tofugu.d/mi-katakana-1.png"], "tags": ["katakana"], "solution": ["mi"]} + mo-hiragana: {"q":"img:./testdata/tofugu.d/mo-hiragana-0.png", "clues":["img:./testdata/tofugu.d/mo-hiragana-1.png"], "tags": ["hiragana"], "solution": ["mo"]} + mo-katakana: {"q":"img:./testdata/tofugu.d/mo-katakana-0.png", "clues":["img:./testdata/tofugu.d/mo-katakana-1.png"], "tags": ["katakana"], "solution": ["mo"]} + mu-hiragana: {"q":"img:./testdata/tofugu.d/mu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/mu-hiragana-1.png"], "tags": ["hiragana"], "solution": ["mu"]} + mu-katakana: {"q":"img:./testdata/tofugu.d/mu-katakana-0.png", "clues":["img:./testdata/tofugu.d/mu-katakana-1.png"], "tags": ["katakana"], "solution": ["mu"]} + n-hiragana: {"q":"img:./testdata/tofugu.d/n-hiragana-0.png", "clues":["img:./testdata/tofugu.d/n-hiragana-1.png"], "tags": ["hiragana"], "solution": ["n"]} + n-katakana: {"q":"img:./testdata/tofugu.d/n-katakana-0.png", "clues":["img:./testdata/tofugu.d/n-katakana-1.png"], "tags": ["katakana"], "solution": ["n"]} + na-hiragana: {"q":"img:./testdata/tofugu.d/na-hiragana-0.png", "clues":["img:./testdata/tofugu.d/na-hiragana-1.png"], "tags": ["hiragana"], "solution": ["na"]} + na-katakana: {"q":"img:./testdata/tofugu.d/na-katakana-0.png", "clues":["img:./testdata/tofugu.d/na-katakana-1.png"], "tags": ["katakana"], "solution": ["na"]} + ne-hiragana: {"q":"img:./testdata/tofugu.d/ne-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ne-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ne"]} + ne-katakana: {"q":"img:./testdata/tofugu.d/ne-katakana-0.png", "clues":["img:./testdata/tofugu.d/ne-katakana-1.png"], "tags": ["katakana"], "solution": ["ne"]} + ni-hiragana: {"q":"img:./testdata/tofugu.d/ni-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ni-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ni"]} + ni-katakana: {"q":"img:./testdata/tofugu.d/ni-katakana-0.png", "clues":["img:./testdata/tofugu.d/ni-katakana-1.png"], "tags": ["katakana"], "solution": ["ni"]} + no-hiragana: {"q":"img:./testdata/tofugu.d/no-hiragana-0.png", "clues":["img:./testdata/tofugu.d/no-hiragana-1.png"], "tags": ["hiragana"], "solution": ["no"]} + no-katakana: {"q":"img:./testdata/tofugu.d/no-katakana-0.png", "clues":["img:./testdata/tofugu.d/no-katakana-1.png"], "tags": ["katakana"], "solution": ["no"]} + nu-hiragana: {"q":"img:./testdata/tofugu.d/nu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/nu-hiragana-1.png"], "tags": ["hiragana"], "solution": ["nu"]} + nu-katakana: {"q":"img:./testdata/tofugu.d/nu-katakana-0.png", "clues":["img:./testdata/tofugu.d/nu-katakana-1.png"], "tags": ["katakana"], "solution": ["nu"]} + o-hiragana: {"q":"img:./testdata/tofugu.d/o-hiragana-0.png", "clues":["img:./testdata/tofugu.d/o-hiragana-1.png"], "tags": ["hiragana"], "solution": ["o"]} + o-katakana: {"q":"img:./testdata/tofugu.d/o-katakana-0.png", "clues":["img:./testdata/tofugu.d/o-katakana-1.png"], "tags": ["katakana"], "solution": ["o"]} + or-katakana: {"q":"img:./testdata/tofugu.d/or-katakana-0.png", "clues":["img:./testdata/tofugu.d/or-katakana-1.png"], "tags": ["katakana"], "solution": ["or"]} + ra-hiragana: {"q":"img:./testdata/tofugu.d/ra-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ra-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ra"]} + ra-katakana: {"q":"img:./testdata/tofugu.d/ra-katakana-0.png", "clues":["img:./testdata/tofugu.d/ra-katakana-1.png"], "tags": ["katakana"], "solution": ["ra"]} + re-hiragana: {"q":"img:./testdata/tofugu.d/re-hiragana-0.png", "clues":["img:./testdata/tofugu.d/re-hiragana-1.png"], "tags": ["hiragana"], "solution": ["re"]} + re-katakana: {"q":"img:./testdata/tofugu.d/re-katakana-0.png", "clues":["img:./testdata/tofugu.d/re-katakana-1.png"], "tags": ["katakana"], "solution": ["re"]} + ri-hiragana: {"q":"img:./testdata/tofugu.d/ri-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ri-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ri"]} + ri-katakana: {"q":"img:./testdata/tofugu.d/ri-katakana-0.png", "clues":["img:./testdata/tofugu.d/ri-katakana-1.png"], "tags": ["katakana"], "solution": ["ri"]} + ro-hiragana: {"q":"img:./testdata/tofugu.d/ro-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ro-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ro"]} + ro-katakana: {"q":"img:./testdata/tofugu.d/ro-katakana-0.png", "clues":["img:./testdata/tofugu.d/ro-katakana-1.png"], "tags": ["katakana"], "solution": ["ro"]} + ru-hiragana: {"q":"img:./testdata/tofugu.d/ru-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ru-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ru"]} + ru-katakana: {"q":"img:./testdata/tofugu.d/ru-katakana-0.png", "clues":["img:./testdata/tofugu.d/ru-katakana-1.png"], "tags": ["katakana"], "solution": ["ru"]} + sa-hiragana: {"q":"img:./testdata/tofugu.d/sa-hiragana-0.png", "clues":["img:./testdata/tofugu.d/sa-hiragana-1.png"], "tags": ["hiragana"], "solution": ["sa"]} + sa-katakana: {"q":"img:./testdata/tofugu.d/sa-katakana-0.png", "clues":["img:./testdata/tofugu.d/sa-katakana-1.png"], "tags": ["katakana"], "solution": ["sa"]} + se-hiragana: {"q":"img:./testdata/tofugu.d/se-hiragana-0.png", "clues":["img:./testdata/tofugu.d/se-hiragana-1.png"], "tags": ["hiragana"], "solution": ["se"]} + se-katakana: {"q":"img:./testdata/tofugu.d/se-katakana-0.png", "clues":["img:./testdata/tofugu.d/se-katakana-1.png"], "tags": ["katakana"], "solution": ["se"]} + shi-hiragana: {"q":"img:./testdata/tofugu.d/shi-hiragana-0.png", "clues":["img:./testdata/tofugu.d/shi-hiragana-1.png"], "tags": ["hiragana"], "solution": ["shi"]} + shi-katakana: {"q":"img:./testdata/tofugu.d/shi-katakana-0.png", "clues":["img:./testdata/tofugu.d/shi-katakana-1.png"], "tags": ["katakana"], "solution": ["shi"]} + so-hiragana: {"q":"img:./testdata/tofugu.d/so-hiragana-0.png", "clues":["img:./testdata/tofugu.d/so-hiragana-1.png"], "tags": ["hiragana"], "solution": ["so"]} + so-katakana: {"q":"img:./testdata/tofugu.d/so-katakana-0.png", "clues":["img:./testdata/tofugu.d/so-katakana-1.png"], "tags": ["katakana"], "solution": ["so"]} + su-hiragana: {"q":"img:./testdata/tofugu.d/su-hiragana-0.png", "clues":["img:./testdata/tofugu.d/su-hiragana-1.png"], "tags": ["hiragana"], "solution": ["su"]} + su-katakana: {"q":"img:./testdata/tofugu.d/su-katakana-0.png", "clues":["img:./testdata/tofugu.d/su-katakana-1.png"], "tags": ["katakana"], "solution": ["su"]} + ta-hiragana: {"q":"img:./testdata/tofugu.d/ta-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ta-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ta"]} + ta-katakana: {"q":"img:./testdata/tofugu.d/ta-katakana-0.png", "clues":["img:./testdata/tofugu.d/ta-katakana-1.png"], "tags": ["katakana"], "solution": ["ta"]} + te-hiragana: {"q":"img:./testdata/tofugu.d/te-hiragana-0.png", "clues":["img:./testdata/tofugu.d/te-hiragana-1.png"], "tags": ["hiragana"], "solution": ["te"]} + te-katakana: {"q":"img:./testdata/tofugu.d/te-katakana-0.png", "clues":["img:./testdata/tofugu.d/te-katakana-1.png"], "tags": ["katakana"], "solution": ["te"]} + to-hiragana: {"q":"img:./testdata/tofugu.d/to-hiragana-0.png", "clues":["img:./testdata/tofugu.d/to-hiragana-1.png"], "tags": ["hiragana"], "solution": ["to"]} + to-katakana: {"q":"img:./testdata/tofugu.d/to-katakana-0.png", "clues":["img:./testdata/tofugu.d/to-katakana-1.png"], "tags": ["katakana"], "solution": ["to"]} + tsu-hiragana: {"q":"img:./testdata/tofugu.d/tsu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/tsu-hiragana-1.png"], "tags": ["hiragana"], "solution": ["tsu"]} + tsu-katakana: {"q":"img:./testdata/tofugu.d/tsu-katakana-0.png", "clues":["img:./testdata/tofugu.d/tsu-katakana-1.png"], "tags": ["katakana"], "solution": ["tsu"]} + u-hiragana: {"q":"img:./testdata/tofugu.d/u-hiragana-0.png", "clues":["img:./testdata/tofugu.d/u-hiragana-1.png"], "tags": ["hiragana"], "solution": ["u"]} + wa-hiragana: {"q":"img:./testdata/tofugu.d/wa-hiragana-0.png", "clues":["img:./testdata/tofugu.d/wa-hiragana-1.png"], "tags": ["hiragana"], "solution": ["wa"]} + wa-katakana: {"q":"img:./testdata/tofugu.d/wa-katakana-0.png", "clues":["img:./testdata/tofugu.d/wa-katakana-1.png"], "tags": ["katakana"], "solution": ["wa"]} + wo-hiragana: {"q":"img:./testdata/tofugu.d/wo-hiragana-0.png", "clues":["img:./testdata/tofugu.d/wo-hiragana-1.png"], "tags": ["hiragana"], "solution": ["wo"]} + wo-katakana: {"q":"img:./testdata/tofugu.d/wo-katakana-0.png", "clues":["img:./testdata/tofugu.d/wo-katakana-1.png"], "tags": ["katakana"], "solution": ["wo"]} + ya-hiragana: {"q":"img:./testdata/tofugu.d/ya-hiragana-0.png", "clues":["img:./testdata/tofugu.d/ya-hiragana-1.png"], "tags": ["hiragana"], "solution": ["ya"]} + ya-katakana: {"q":"img:./testdata/tofugu.d/ya-katakana-0.png", "clues":["img:./testdata/tofugu.d/ya-katakana-1.png"], "tags": ["katakana"], "solution": ["ya"]} + yo-hiragana: {"q":"img:./testdata/tofugu.d/yo-hiragana-0.png", "clues":["img:./testdata/tofugu.d/yo-hiragana-1.png"], "tags": ["hiragana"], "solution": ["yo"]} + yo-katakana: {"q":"img:./testdata/tofugu.d/yo-katakana-0.png", "clues":["img:./testdata/tofugu.d/yo-katakana-1.png"], "tags": ["katakana"], "solution": ["yo"]} + yu-hiragana: {"q":"img:./testdata/tofugu.d/yu-hiragana-0.png", "clues":["img:./testdata/tofugu.d/yu-hiragana-1.png"], "tags": ["hiragana"], "solution": ["yu"]} + yu-katakana: {"q":"img:./testdata/tofugu.d/yu-katakana-0.png", "clues":["img:./testdata/tofugu.d/yu-katakana-1.png"], "tags": ["katakana"], "solution": ["yu"]} users: breel: resolution: 100