language_cards 0.3.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +20 -0
  3. data/CHANGELOG.md +31 -0
  4. data/README.md +80 -22
  5. data/bin/language_cards +7 -1
  6. data/cards/en/arabic.yml +370 -0
  7. data/cards/en/armenian.yml +406 -0
  8. data/cards/en/bengali.yml +395 -0
  9. data/cards/en/chinese-hsk1.yml +157 -0
  10. data/cards/en/chinese-hsk2.yml +154 -0
  11. data/cards/en/chinese-hsk3.yml +305 -0
  12. data/cards/en/chinese-hsk4.yml +605 -0
  13. data/cards/en/georgian.yml +362 -0
  14. data/cards/en/greek.yml +379 -0
  15. data/cards/en/hebrew.yml +355 -0
  16. data/cards/en/hindi.yml +412 -0
  17. data/cards/en/japanese-01-hiragana.yml +227 -0
  18. data/cards/en/japanese-02-katakana.yml +296 -0
  19. data/cards/en/japanese-03-keyboard-mappings.yml +357 -0
  20. data/cards/en/japanese-10-kanji-jlpt-n5.yml +86 -0
  21. data/cards/en/japanese-11-kanji-jlpt-n4.yml +173 -0
  22. data/cards/en/japanese-12-kanji-jlpt-n3.yml +374 -0
  23. data/cards/en/japanese-13-kanji-jlpt-n2.yml +374 -0
  24. data/cards/en/japanese-14-kanji-jlpt-n1.yml +1239 -0
  25. data/cards/en/japanese-20-vocabulary-jlpt-n5.yml +708 -0
  26. data/cards/en/japanese-21-vocabulary-jlpt-n4.yml +668 -0
  27. data/cards/en/japanese-22-vocabulary-jlpt-n3.yml +2108 -0
  28. data/cards/en/japanese-23-vocabulary-jlpt-n2.yml +1738 -0
  29. data/cards/en/japanese-24-vocabulary-jlpt-n1.yml +2689 -0
  30. data/cards/en/korean.yml +534 -0
  31. data/cards/en/persian.yml +370 -0
  32. data/cards/en/punjabi.yml +393 -0
  33. data/cards/en/russian.yml +398 -0
  34. data/cards/en/tamil.yml +405 -0
  35. data/cards/en/thai.yml +408 -0
  36. data/cards/en/ukrainian.yml +398 -0
  37. data/cards/en/urdu.yml +374 -0
  38. data/language_cards.gemspec +7 -6
  39. data/lib/language_cards/card_set_builder.rb +11 -0
  40. data/lib/language_cards/controllers/application_controller.rb +2 -0
  41. data/lib/language_cards/controllers/game.rb +10 -6
  42. data/lib/language_cards/controllers/main_menu.rb +20 -3
  43. data/lib/language_cards/defaults.rb +33 -0
  44. data/lib/language_cards/helpers/view_helper.rb +3 -2
  45. data/lib/language_cards/menu_builder.rb +11 -0
  46. data/lib/language_cards/menu_node.rb +9 -4
  47. data/lib/language_cards/models/card.rb +18 -0
  48. data/lib/language_cards/models/card_set.rb +15 -16
  49. data/lib/language_cards/modes/game.rb +15 -4
  50. data/lib/language_cards/modes/translate.rb +12 -1
  51. data/lib/language_cards/modes/typing_practice.rb +5 -1
  52. data/lib/language_cards/paginator.rb +59 -0
  53. data/lib/language_cards/user_interface.rb +84 -52
  54. data/lib/language_cards/version.rb +1 -1
  55. data/lib/language_cards/view/main_menu.erb +3 -1
  56. data/lib/language_cards/yaml_loader.rb +5 -3
  57. data/lib/language_cards.rb +7 -24
  58. data/locales/en.yml +11 -0
  59. metadata +69 -42
  60. data/.travis.yml +0 -5
  61. data/cards/en/japanese-hiragana.yml +0 -149
  62. data/cards/en/japanese-kanji-jlpt-n5.yml +0 -107
  63. data/cards/en/japanese-katakana.yml +0 -366
  64. data/lib/language_cards/grapheme_builder.rb +0 -12
  65. data/lib/language_cards/language_cards.rb +0 -25
  66. data/lib/language_cards/models/grapheme.rb +0 -18
@@ -1,149 +0,0 @@
1
- --- # https://en.wikibooks.org/wiki/Japanese/Kana_chart
2
- Japanese:
3
- Hiragana:
4
- mapping: { Hiragana: Romaji }
5
- あ: a
6
- い: i
7
- う: u
8
- え: e
9
- お: o
10
- か: ka
11
- き: ki
12
- く: ku
13
- け: ke
14
- こ: ko
15
- が: ga
16
- ぎ: gi
17
- ぐ: gu
18
- げ: ge
19
- ご: go
20
- さ: sa
21
- す: su
22
- せ: se
23
- そ: so
24
- ざ: za
25
- ず: zu
26
- ぜ: ze
27
- ぞ: zo
28
- じゃ: ja
29
- じゅ: ju
30
- じょ: [jo, jyo]
31
- た: ta
32
- て: te
33
- と: to
34
- だ: da
35
- で: de
36
- ど: do
37
- な: na
38
- に: ni
39
- ぬ: nu
40
- ね: ne
41
- の: 'no'
42
- は: ha
43
- ひ: hi
44
- へ: he
45
- ほ: ho
46
- ば: ba
47
- び: bi
48
- ぶ: bu
49
- べ: be
50
- ぼ: bo
51
- ぱ: pa
52
- ぴ: pi
53
- ぷ: pu
54
- ぺ: pe
55
- ぽ: po
56
- ふ: fu
57
- ま: ma
58
- み: mi
59
- む: mu
60
- め: me
61
- も: mo
62
- や: ya
63
- ゆ: yu
64
- よ: yo
65
- ら: ra
66
- り: ri
67
- る: ru
68
- れ: re
69
- ろ: ro
70
- わ: wa
71
- を: wo
72
- ん: n
73
- つ: tsu
74
- きゃ: kya
75
- きゅ: kyu
76
- きょ: kyo
77
- ぎゃ: gya
78
- ぎゅ: gyu
79
- ぎょ: gyo
80
- しゃ: sha
81
- し: shi
82
- しゅ: shu
83
- しょ: sho
84
- ちゃ: cha
85
- ち: chi
86
- ちゅ: chu
87
- ちょ: cho
88
- にゃ: nya
89
- にゅ: nyu
90
- にょ: nyo
91
- ひゃ: hya
92
- ひゅ: hyu
93
- ひょ: hyo
94
- びゃ: bya
95
- びゅ: byu
96
- びょ: byo
97
- ぴゃ: pya
98
- ぴゅ: pyu
99
- ぴょ: pyo
100
- みゃ: mya
101
- みゅ: myu
102
- みょ: myo
103
- りゃ: rya
104
- りゅ: ryu
105
- りょ: ryo
106
- Hiragana Diacritics: # https://en.wikipedia.org/wiki/Hiragana
107
- mapping: { Hiragana: Romaji }
108
- が: ga
109
- ぎ: gi
110
- ぐ: gu
111
- げ: ge
112
- ご: go
113
- ざ: za
114
- じ: ji
115
- ず: zu
116
- ぜ: ze
117
- ぞ: zo
118
- だ: da
119
- ぢ: ji
120
- づ: zu
121
- で: de
122
- ど: do
123
- ば: ba
124
- び: bi
125
- ぶ: bu
126
- べ: be
127
- ぼ: bo
128
- ぱ: pa
129
- ぴ: pi
130
- ぷ: pu
131
- ぺ: pe
132
- ぽ: po
133
- ゔ: vu # https://en.wiktionary.org/wiki/%E3%82%94
134
- ぎゃ: gya
135
- ぎゅ: gyu
136
- ぎょ: gyo
137
- じゃ: ja
138
- じゅ: ju
139
- じょ: jo
140
- ぢゃ: ja
141
- ぢゅ: ju
142
- ぢょ: jo
143
- びゃ: bya
144
- びゅ: byu
145
- びょ: byo
146
- ぴゃ: pya
147
- ぴゅ: pyu
148
- ぴょ: pyo
149
-
@@ -1,107 +0,0 @@
1
- --- # https://www.jlptstudy.net/N5/?kanji-list
2
- Japanese:
3
- Kanji (JLPT Level N5):
4
- mapping: { Kanji: [Hiragana, English] }
5
- 一: [ひと, ひとつ, one, only, even, 1]
6
- 七: [なな, seven, 7]
7
- 万: [よろず, ten thousand]
8
- 三: [さん, three, 3]
9
- 上: [うえ, above, up]
10
- 下: [した, below, down, descend, give, low, inferior]
11
- 中: [なか, in, inside, middle, mean, center]
12
- 九: [ここの, nine, 9]
13
- 二: [に, two, 2]
14
- 五: [ご, five, 5]
15
- 人: [ひと, people, person, man, human being, other people, mankind]
16
- 今: [いま, now]
17
- 休: [きゅう, rest, day off, retire, sleep]
18
- 会: [かい, gathering, meeting, meet, party, association, interview, join]
19
- 何: [なに, なん, what]
20
- 先: [さき, before, ahead, previous, future, precedence]
21
- 入: [いり, enter, insert]
22
- 八: [はち, eight, 8]
23
- 六: [ろく, six, 6]
24
- 円: [えん, circle, yen, round]
25
- 出: [で, exit, leave]
26
- 分: [ぶん, part, minute of time, segment, share, degree, one's lot, duty, understand, know, rate, 1%, chances, shaku/100]
27
- 前: [まえ, in front, before]
28
- 北: [きた, north]
29
- 十: [じゅう, ten, 10]
30
- 千: [せん, thousand, 1000]
31
- 午: [うま, noon, sign of the horse, 11AM-1PM, seventh sign of Chinese zodiac]
32
- 半: [はん, half, middle, odd number, semi-, part-]
33
- 南: [みなみ, south]
34
- 友: [とも, friend]
35
- 口: [くち, mouth]
36
- 古: [ふる, old]
37
- 右: [みぎ, right]
38
- 名: [な, name, noted, distinguished, reputation]
39
- 四: [よん, four, 4]
40
- 国: [くに, country, state, region, province, home, hometown, homeland, home country, land, earth]
41
- 土: [つち, soil, earth, ground, Turkey]
42
- 外: [そと, outside, outside of]
43
- 多: [さわ, many, frequent, much]
44
- 大: [おお, large, big]
45
- 天: [てん, heavens, sky, imperial]
46
- 女: [おんな, woman, female]
47
- 子: [こ, child, sign of the rat, 11PM-1AM, first sign of Chinese zodiac]
48
- 学: [がく, study, learning, science]
49
- 安: [あん, cheap, relax, low, quiet, rested, contented, peaceful]
50
- 小: [しょう, little, small]
51
- 少: [すくな, few, little]
52
- 山: [やま, mountain]
53
- 川: [かわ, stream, river]
54
- 左: [ひだり, left]
55
- 年: [とし, year, counter for years, age]
56
- 店: [みせ, store, shop]
57
- 後: [あと, behind, back, later]
58
- 手: [て, hand]
59
- 新: [しん, new]
60
- 日: [ひ, day, sun, Japan, counter for days, sunshine, sunlight, case, event]
61
- 時: [じ, time, hour]
62
- 書: [しょ, write]
63
- 月: [つき, month, moon]
64
- 木: [き, tree, wood]
65
- 本: [もと, book, present, main, 'true', real, counter for long cylindrical things]
66
- 来: [き, come, due, next, cause, become]
67
- 東: [ひがし, east]
68
- 校: [-こう, exam, school, printing, proof, correction]
69
- 母: [はは, mama, mother]
70
- 毎: [まい, every]
71
- 気: [いき, spirit, mind, air, atmosphere, mood]
72
- 水: [みず, water]
73
- 火: [ひ, fire]
74
- 父: [ちち, father]
75
- 生: [なま, life, genuine, birth]
76
- 男: [おとこ, male]
77
- 白: [しろ, white]
78
- 百: [もも, hundred, 100]
79
- 目: [め, eye, class, look, insight, experience, care, favor]
80
- 社: [やしろ, company, firm, office, association, shrine]
81
- 空: [そら, empty, sky, void, vacant, vacuum]
82
- 立: [たて, stand up]
83
- 耳: [みみ, ear]
84
- 聞: [きき, hear, ask, listen]
85
- 花: [はな, flower]
86
- 行: [こう, going, journey]
87
- 西: [にし, west, Spain]
88
- 見: [み, see, hopes, chances, idea, opinion, look at, visible]
89
- 言: [げん, say]
90
- 話: [はなし, tale, talk]
91
- 語: [ご, word, speech, language]
92
- 読: [よみ, read]
93
- 買: [かい, buy]
94
- 足: [あし, leg, foot, be sufficient, counter for pairs of footwear]
95
- 車: [くるま, car]
96
- 週: [しゅう, week]
97
- 道: [みち, road-way, street, district, journey, course, moral, teachings]
98
- 金: [きん, gold]
99
- 長: [なが, long, leader]
100
- 間: [ま, interval, space]
101
- 雨: [あめ, rain]
102
- 電: [でん, electricity]
103
- 食: [しょく, eat, food]
104
- 飲: [いん, drink, smoke, take]
105
- 駅: [えき, station]
106
- 高: [こう, tall, high, expensive]
107
- 魚: [さかな, fish]
@@ -1,366 +0,0 @@
1
- --- # https://en.wikibooks.org/wiki/Japanese/Kana_chart
2
- Japanese:
3
- Katakana:
4
- mapping: { Katakana: Romaji }
5
- ア: a
6
- イ: i
7
- ウ: u
8
- エ: e
9
- オ: o
10
- ー: '-'
11
- カ: ka
12
- キ: ki
13
- ク: ku
14
- ケ: ke
15
- コ: ko
16
- ガ: ga
17
- ギ: gi
18
- グ: gu
19
- ゲ: ge
20
- ゴ: go
21
- サ: sa
22
- ス: su
23
- セ: se
24
- ソ: so
25
- ザ: za
26
- ズ: zu
27
- ゼ: ze
28
- ゾ: zo
29
- ジャ: ja
30
- ジ: ji
31
- ジュ: ju
32
- ジョ: jo
33
- タ: ta
34
- テ: te
35
- ト: to
36
- ダ: da
37
- デ: de
38
- ド: do
39
- ナ: na
40
- ニ: ni
41
- ヌ: nu
42
- ネ: ne
43
- ノ: 'no'
44
- ハ: ha
45
- ヒ: hi
46
- ヘ: he
47
- ホ: ho
48
- バ: ba
49
- ビ: bi
50
- ブ: bu
51
- ベ: be
52
- ボ: bo
53
- パ: pa
54
- ピ: pi
55
- プ: pu
56
- ペ: pe
57
- ポ: po
58
- フ: fu
59
- マ: ma
60
- ミ: mi
61
- ム: mu
62
- メ: me
63
- モ: mo
64
- ヤ: ya
65
- ユ: yu
66
- ヨ: yo
67
- ラ: ra
68
- リ: ri
69
- ル: ru
70
- レ: re
71
- ロ: ro
72
- ワ: wa
73
- ヲ: wo
74
- ン: n
75
- ツ: tsu
76
- キャ: kya
77
- キュ: kyu
78
- キョ: kyo
79
- ギャ: gya
80
- ギュ: gyu
81
- ギョ: gyo
82
- シャ: sha
83
- シ: shi
84
- シュ: shu
85
- ショ: sho
86
- チャ: cha
87
- チ: chi
88
- チュ: chu
89
- チョ: cho
90
- ニャ: nya
91
- ニュ: nyu
92
- ニョ: nyo
93
- ビャ: bya
94
- ビュ: byu
95
- ビョ: byo
96
- ピャ: pya
97
- ピュ: pyu
98
- ピョ: pyo
99
- ミャ: mya
100
- ミュ: myu
101
- ミョ: myo
102
- リャ: rya
103
- リュ: ryu
104
- リョ: ryo
105
- Katakana Diacritics: # https://en.wikipedia.org/wiki/Katakana
106
- mapping: { Katakana: Romaji }
107
- ガ: ga
108
- ギ: gi
109
- グ: gu
110
- ゲ: ge
111
- ゴ: go
112
- ギャ: gya
113
- ギュ: gyu
114
- ギョ: gyo
115
- ザ: za
116
- ジ: ji
117
- ズ: zu
118
- ゼ: ze
119
- ゾ: zo
120
- ジャ: ja
121
- ジュ: ju
122
- ジョ: jo
123
- ダ: da
124
- ヂ: ji
125
- ヅ: zu
126
- デ: de
127
- ド: do
128
- ヂャ: ja
129
- ヂュ: ju
130
- ヂョ: jo
131
- バ: ba
132
- ビ: bi
133
- ブ: bu
134
- ベ: be
135
- ボ: bo
136
- ビャ: bya
137
- ビュ: byu
138
- ビョ: byo
139
- パ: pa
140
- ピ: pi
141
- プ: pu
142
- ペ: pe
143
- ポ: po
144
- ピャ: pya
145
- ピュ: pyu
146
- ピョ: pyo
147
- Katakana Keyboard Mappings:
148
- mapping: { Katakana: Romaji }
149
- ア: a
150
- イ: i
151
- ウ: u
152
- エ: e
153
- オ: o
154
- ー: '-'
155
- ァ: xa
156
- ィ: xi
157
- ゥ: xu
158
- ェ: xe
159
- ォ: xo
160
- カ: ka
161
- キ: ki
162
- ク: ku
163
- ケ: ke
164
- コ: ko
165
- カ: ca
166
- ク: cu
167
- コ: co
168
- ガ: ga
169
- ギ: gi
170
- グ: gu
171
- ゲ: ge
172
- ゴ: go
173
- サ: sa
174
- シ: si
175
- ス: su
176
- セ: se
177
- ソ: so
178
- ザ: za
179
- ジ: zi
180
- ズ: zu
181
- ゼ: ze
182
- ゾ: zo
183
- ジャ: ja
184
- ジ: ji
185
- ジュ: ju
186
- ジェ: je
187
- ジョ: jo
188
- タ: ta
189
- チ: ti
190
- ツ: tu
191
- テ: te
192
- ト: to
193
- ダ: da
194
- ヂ: di
195
- ヅ: du
196
- デ: de
197
- ド: do
198
- ナ: na
199
- ニ: ni
200
- ヌ: nu
201
- ネ: ne
202
- ノ: 'no'
203
- ハ: ha
204
- ヒ: hi
205
- フ: hu
206
- ヘ: he
207
- ホ: ho
208
- バ: ba
209
- ビ: bi
210
- ブ: bu
211
- ベ: be
212
- ボ: bo
213
- パ: pa
214
- ピ: pi
215
- プ: pu
216
- ペ: pe
217
- ポ: po
218
- ヴァ: va
219
- ヴィ: vi
220
- ヴ: vu
221
- ヴェ: ve
222
- ヴォ: vo
223
- ファ: fa
224
- フィ: fi
225
- フ: fu
226
- フェ: fe
227
- フォ: fo
228
- マ: ma
229
- ミ: mi
230
- ム: mu
231
- メ: me
232
- モ: mo
233
- ヤ: ya
234
- イ: yi
235
- ユ: yu
236
- イェ: ye
237
- ヨ: yo
238
- ラ: ra
239
- リ: ri
240
- ル: ru
241
- レ: re
242
- ロ: ro
243
- ラ: la
244
- リ: li
245
- ル: lu
246
- レ: le
247
- ロ: lo
248
- ワ: wa
249
- ウィ: wi
250
- ウ: wu
251
- ウェ: we
252
- ヲ: wo
253
- ン: [nn, n]
254
- ツ: tsu
255
- ヵ: xka
256
- ヶ: xke
257
- ヮ: xwa
258
- ッ: xtsu
259
- ャ: xya
260
- ュ: xyu
261
- ョ: xyo
262
- キャ: kya
263
- キィ: kyi
264
- キュ: kyu
265
- キェ: kye
266
- キョ: kyo
267
- ギャ: gya
268
- ギィ: gyi
269
- ギュ: gyu
270
- ギェ: gye
271
- ギョ: gyo
272
- シャ: sya
273
- シィ: syi
274
- シュ: syu
275
- シェ: sye
276
- ショ: syo
277
- シャ: sha
278
- シ: shi
279
- シュ: shu
280
- シェ: she
281
- ショ: sho
282
- ジャ: zya
283
- ジィ: zyi
284
- ジュ: zyu
285
- ジェ: zye
286
- ジョ: zyo
287
- ジャ: jya
288
- ジィ: jyi
289
- ジュ: jyu
290
- ジェ: jye
291
- ジョ: jyo
292
- チャ: tya
293
- チィ: tyi
294
- チュ: tyu
295
- チェ: tye
296
- チョ: tyo
297
- トァ: twa
298
- トィ: twi
299
- トゥ: twu
300
- トェ: twe
301
- トォ: two
302
- ドァ: dwa
303
- ドィ: dwi
304
- ドゥ: dwu
305
- ドェ: dwe
306
- ドォ: dwo
307
- チャ: cya
308
- チィ: cyi
309
- チュ: cyu
310
- チェ: cye
311
- チョ: cyo
312
- チャ: cha
313
- チ: chi
314
- チュ: chu
315
- チェ: che
316
- チョ: cho
317
- テャ: tha
318
- ティ: thi
319
- テュ: thu
320
- テェ: the
321
- テョ: tho
322
- ヂャ: dya
323
- ヂィ: dyi
324
- ヂュ: dyu
325
- ヂェ: dye
326
- ヂョ: dyo
327
- デャ: dha
328
- ディ: dhi
329
- デュ: dhu
330
- デェ: dhe
331
- デョ: dho
332
- ニャ: nya
333
- ニィ: nyi
334
- ニュ: nyu
335
- ニェ: nye
336
- ニョ: nyo
337
- ヒャ: hya
338
- ヒィ: hyi
339
- ヒュ: hyu
340
- ヒェ: hye
341
- ヒョ: hyo
342
- ビャ: bya
343
- ビィ: byi
344
- ビュ: byu
345
- ビェ: bye
346
- ビョ: byo
347
- ピャ: pya
348
- ピィ: pyi
349
- ピュ: pyu
350
- ピェ: pye
351
- ピョ: pyo
352
- ミャ: mya
353
- ミィ: myi
354
- ミュ: myu
355
- ミェ: mye
356
- ミョ: myo
357
- リャ: rya
358
- リィ: ryi
359
- リュ: ryu
360
- リェ: rye
361
- リョ: ryo
362
- リャ: lya
363
- リィ: lyi
364
- リュ: lyu
365
- リェ: lye
366
- リョ: lyo
@@ -1,12 +0,0 @@
1
- require 'language_cards/models/grapheme'
2
-
3
- module LanguageCards
4
- module GraphemeBuilder
5
- # Hash {translation => grapheme}
6
- def self.call(translation_graphemes = {})
7
- translation_graphemes.each_with_object([]) do |(key, value), memo|
8
- memo << Grapheme.new(key, value)
9
- end
10
- end
11
- end
12
- end
@@ -1,25 +0,0 @@
1
- require 'language_cards/menu_node'
2
- require 'language_cards/yaml_loader'
3
- require 'language_cards/user_interface'
4
-
5
- module LanguageCards
6
- class LanguageCards
7
- def initialize
8
- self.cards = builder(YAMLLoader.new.load)
9
- end
10
-
11
- def start
12
- UserInterface.new(cards).start
13
- end
14
-
15
- private
16
- attr_accessor :cards
17
- def builder(cards_yaml)
18
- cards_yaml.each_with_object([]) do |(language, values), memo|
19
- values.each do |category_with_card_set|
20
- memo << MenuNode.new(language, category_with_card_set)
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,18 +0,0 @@
1
-
2
- module LanguageCards
3
- class Grapheme
4
- attr_reader :translation
5
- def initialize grapheme, translation
6
- @grapheme = grapheme
7
- @translation = Array(translation)
8
- end
9
-
10
- def display
11
- @grapheme
12
- end
13
-
14
- def to_s
15
- @grapheme
16
- end
17
- end
18
- end