learn-japanese 0.6.1 → 0.8.1
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.
- checksums.yaml +4 -4
- data/lib/learn-japanese/cli.rb +8 -2
- data/lib/learn-japanese/data/dictionary.rb +11 -0
- data/lib/learn-japanese/data/hiragana.rb +115 -0
- data/lib/learn-japanese/data/hiragana.yaml +36 -0
- data/lib/learn-japanese/data/words.yaml +4 -1
- data/lib/learn-japanese/debug.rb +5 -0
- data/lib/learn-japanese/game/choose-answer-game.rb +10 -5
- data/lib/learn-japanese/game/romaji-game.rb +47 -0
- data/lib/learn-japanese/game/short-answer-game.rb +3 -1
- data/lib/learn-japanese/game/sound-game.rb +9 -11
- data/lib/learn-japanese/version.rb +1 -1
- data/lib/learn-japanese.rb +5 -0
- metadata +6 -10
- data/bin/choose-answer-game +0 -19
- data/bin/short-answer-game +0 -19
- data/bin/sounds-to-hiragana +0 -6
- data/lib/learn-japanese/dictionary.rb +0 -12
- data/lib/learn-japanese/hiragana.rb +0 -60
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5265cf2cdc7e5919c77300d3bc624ea0e98dcc64310ebe21b08c343319fee93
|
4
|
+
data.tar.gz: ced6eb30b6fba2e4d744bb5015b76619a03335a90bb3a5182bc072c5333b2ce9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d43d584404ae0defbb6afc81d6c5c296fff3bf9f7219af373145fc2a298c82ec33b0a9df7752bafab0067bd4272505e5f868961bf146a97fca8554278fd355d
|
7
|
+
data.tar.gz: b4bfd549d68de45944a27abc45e21d70f835b7881f85fa55b775a559047c1c3e48391ac89dab431e20539c38a88f6d800d5c15d84de254daa0b62805d760ac15
|
data/lib/learn-japanese/cli.rb
CHANGED
@@ -11,13 +11,13 @@ class CLI < Thor
|
|
11
11
|
end
|
12
12
|
|
13
13
|
map ['ca', '-ca', '--choose-answer', 'choose-answer'] => 'choose_answer'
|
14
|
-
desc 'choose-answer [LEVEL]', 'LEVEL = 1-
|
14
|
+
desc 'choose-answer [LEVEL]', 'LEVEL = 1-6'
|
15
15
|
def choose_answer(level)
|
16
16
|
LearnJapanese.choose_answer(level.to_i)
|
17
17
|
end
|
18
18
|
|
19
19
|
map ['sa', '-sa', '--short-answer', 'short-answer'] => 'short_answer'
|
20
|
-
desc 'short-answer [LEVEL]', 'LEVEL = 1-
|
20
|
+
desc 'short-answer [LEVEL]', 'LEVEL = 1-6'
|
21
21
|
def short_answer(level)
|
22
22
|
LearnJapanese.short_answer(level.to_i)
|
23
23
|
end
|
@@ -27,4 +27,10 @@ class CLI < Thor
|
|
27
27
|
def sound
|
28
28
|
LearnJapanese.sound
|
29
29
|
end
|
30
|
+
|
31
|
+
map ['ro', '-ro', '--romanji' ] => 'romaji'
|
32
|
+
desc 'romaji', 'Write Romaji for Hiragana word'
|
33
|
+
def romaji
|
34
|
+
LearnJapanese.romaji
|
35
|
+
end
|
30
36
|
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
require_relative '../debug'
|
3
|
+
|
4
|
+
# Silabario japonés
|
5
|
+
class Hiragana
|
6
|
+
|
7
|
+
def self.group1
|
8
|
+
{ a: "\u{3042}",
|
9
|
+
i: "\u{3044}",
|
10
|
+
u: "\u{3046}",
|
11
|
+
e: "\u{3048}",
|
12
|
+
o: "\u{304A}"
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.group2
|
17
|
+
{ ka: "\u{304B}",
|
18
|
+
ki: "\u{304D}",
|
19
|
+
ku: "\u{304F}",
|
20
|
+
ke: "\u{3051}",
|
21
|
+
ko: "\u{3053}"
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.group3
|
26
|
+
{ sa: "\u{3055}",
|
27
|
+
shi: "\u{3057}",
|
28
|
+
su: "\u{3059}",
|
29
|
+
se: "\u{305B}",
|
30
|
+
so: "\u{305D}"
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.group4
|
35
|
+
{ ta: "\u{305F}",
|
36
|
+
chi: "\u{3061}",
|
37
|
+
tsu: "\u{3064}", # つ
|
38
|
+
te: "\u{3066}",
|
39
|
+
to: "\u{3068}"
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.group5
|
44
|
+
{ na: "\u{306A}",
|
45
|
+
ni: "\u{306B}",
|
46
|
+
nu: "\u{306C}",
|
47
|
+
ne: "\u{306D}",
|
48
|
+
no: "\u{306E}"
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.group6
|
53
|
+
{ ha: "\u{306F}",
|
54
|
+
hi: "\u{3072}",
|
55
|
+
hu: "\u{3075}",
|
56
|
+
he: "\u{3078}",
|
57
|
+
ho: "\u{307B}"
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.all
|
62
|
+
output = self.group1
|
63
|
+
output.merge!(self.group2)
|
64
|
+
output.merge!(self.group3)
|
65
|
+
output.merge!(self.group4)
|
66
|
+
output.merge!(self.group5)
|
67
|
+
output.merge!(self.group6)
|
68
|
+
output
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.groups(levels)
|
72
|
+
return self.all if levels == :all
|
73
|
+
hiragana = {}
|
74
|
+
hiragana.merge! Hiragana.group1 if levels.include? 1
|
75
|
+
hiragana.merge! Hiragana.group2 if levels.include? 2
|
76
|
+
hiragana.merge! Hiragana.group3 if levels.include? 3
|
77
|
+
hiragana.merge! Hiragana.group4 if levels.include? 4
|
78
|
+
hiragana.merge! Hiragana.group4 if levels.include? 5
|
79
|
+
hiragana.merge! Hiragana.group4 if levels.include? 6
|
80
|
+
hiragana
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.sounds_to_hiragana(sounds)
|
84
|
+
hiraganas = Hiragana.all
|
85
|
+
hiragana_array = sounds.map { hiraganas[_1.to_sym] || '*' }
|
86
|
+
hiragana = hiragana_array.join('')
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.hiraganas_to_sound(hiraganas_input)
|
90
|
+
all_hiraganas = Hiragana.all
|
91
|
+
|
92
|
+
sounds_array = hiraganas_input.map do |hiragana_input|
|
93
|
+
sound = '*'
|
94
|
+
all_hiraganas.each_pair do |key, value|
|
95
|
+
sound = key if value == hiragana_input
|
96
|
+
end
|
97
|
+
sound
|
98
|
+
end
|
99
|
+
|
100
|
+
sounds_array.join('')
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.show_help(level=1)
|
104
|
+
Debug.puts_line
|
105
|
+
puts "Hiragana help\n".upcase.cyan
|
106
|
+
|
107
|
+
Debug.puts_group Hiragana.group1
|
108
|
+
Debug.puts_group Hiragana.group2 if level > 1
|
109
|
+
Debug.puts_group Hiragana.group3 if level > 2
|
110
|
+
Debug.puts_group Hiragana.group4 if level > 3
|
111
|
+
Debug.puts_group Hiragana.group5 if level > 4
|
112
|
+
Debug.puts_group Hiragana.group6 if level > 5
|
113
|
+
Debug.puts_group Hiragana.group7 if level > 6
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
group1:
|
2
|
+
a: "\u{3042}"
|
3
|
+
i: "\u{3044}"
|
4
|
+
u: "\u{3046}"
|
5
|
+
e: "\u{3048}"
|
6
|
+
o: "\u{304A}"
|
7
|
+
group2:
|
8
|
+
ka: "\u{304B}"
|
9
|
+
ki: "\u{304D}"
|
10
|
+
ku: "\u{304F}"
|
11
|
+
ke: "\u{3051}"
|
12
|
+
ko: "\u{3053}"
|
13
|
+
group3:
|
14
|
+
sa: "\u{3055}"
|
15
|
+
shi: "\u{3057}"
|
16
|
+
su: "\u{3059}"
|
17
|
+
se: "\u{305B}"
|
18
|
+
so: "\u{305D}"
|
19
|
+
group4:
|
20
|
+
ta: "\u{305F}"
|
21
|
+
chi: "\u{3061}"
|
22
|
+
tsu: "\u{3064}" # つ
|
23
|
+
te: "\u{3066}"
|
24
|
+
to: "\u{3068}"
|
25
|
+
group5:
|
26
|
+
na: "\u{306A}"
|
27
|
+
ni: "\u{306B}"
|
28
|
+
nu: "\u{306C}"
|
29
|
+
ne: "\u{306D}"
|
30
|
+
no: "\u{306E}"
|
31
|
+
group6:
|
32
|
+
ha: "\u{306F}"
|
33
|
+
hi: "\u{3072}"
|
34
|
+
hu: "\u{3075}"
|
35
|
+
he: "\u{3078}"
|
36
|
+
ho: "\u{307B}"
|
@@ -4,7 +4,7 @@
|
|
4
4
|
spanish: amor
|
5
5
|
- sounds: áka
|
6
6
|
hiragana: あか
|
7
|
-
spanish: rojo
|
7
|
+
spanish: rojo
|
8
8
|
- sounds: áo
|
9
9
|
hiragana: あお
|
10
10
|
spanish: azul
|
@@ -44,3 +44,6 @@
|
|
44
44
|
- sounds: áisatsu wo suru
|
45
45
|
hiragana: あいさつをする
|
46
46
|
spanish: saludar
|
47
|
+
- sounds: ohayou
|
48
|
+
hiragana: おはよう
|
49
|
+
spanish: Buenos días (casual)
|
data/lib/learn-japanese/debug.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require_relative '../debug'
|
4
|
-
require_relative '../hiragana'
|
4
|
+
require_relative '../data/hiragana'
|
5
5
|
|
6
6
|
class ChooseAnswerGame
|
7
7
|
|
@@ -10,10 +10,15 @@ class ChooseAnswerGame
|
|
10
10
|
@score = 1
|
11
11
|
@max_score = max
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
#@silabario = Hiragana.group1
|
14
|
+
#@silabario.merge! Hiragana.group2 if @level > 1
|
15
|
+
#@silabario.merge! Hiragana.group3 if @level > 2
|
16
|
+
#@silabario.merge! Hiragana.group4 if @level > 3
|
17
|
+
#@silabario.merge! Hiragana.group4 if @level > 4
|
18
|
+
#@silabario.merge! Hiragana.group5 if @level > 5
|
19
|
+
#@silabario.merge! Hiragana.group6 if @level > 6
|
20
|
+
levels = (1..@level).to_a
|
21
|
+
@silabario = Hiragana.groups(levels)
|
17
22
|
|
18
23
|
@keys = @silabario.keys
|
19
24
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../debug'
|
4
|
+
require_relative '../data/dictionary'
|
5
|
+
|
6
|
+
class RomajiGame
|
7
|
+
|
8
|
+
def initialize(level=1, max=10)
|
9
|
+
@level = level
|
10
|
+
@score = 1
|
11
|
+
@max_score = max
|
12
|
+
|
13
|
+
@words = Dictionary.words
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
Debug.puts_line
|
18
|
+
while @score < @max_score
|
19
|
+
@words.shuffle!
|
20
|
+
guess_romaji(@words.first)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def guess_romaji(data)
|
27
|
+
hiragana = data['hiragana']
|
28
|
+
spanish = data['spanish']
|
29
|
+
sounds = data['sounds']
|
30
|
+
progress = "[ #{@score}/#{@max_score} ]"
|
31
|
+
|
32
|
+
print "#{progress.white} Write Romanji for #{hiragana.light_yellow}: "
|
33
|
+
resp = STDIN.gets.chomp
|
34
|
+
exit if resp.empty?
|
35
|
+
|
36
|
+
good = Hiragana.hiraganas_to_sound(hiragana.split(''))
|
37
|
+
if resp == good
|
38
|
+
@score += 1
|
39
|
+
puts ' ' * 9 + "#{spanish} (#{sounds})".white
|
40
|
+
return true
|
41
|
+
end
|
42
|
+
puts "Right answer is #{good}".light_red
|
43
|
+
puts ' ' * 9 + "#{spanish} (#{sounds})".red
|
44
|
+
false
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require_relative '../debug'
|
4
|
-
require_relative '../hiragana'
|
4
|
+
require_relative '../data/hiragana'
|
5
5
|
|
6
6
|
class ShortAnswerGame
|
7
7
|
|
@@ -14,6 +14,8 @@ class ShortAnswerGame
|
|
14
14
|
@silabario.merge! Hiragana.group2 if @level > 1
|
15
15
|
@silabario.merge! Hiragana.group3 if @level > 2
|
16
16
|
@silabario.merge! Hiragana.group4 if @level > 3
|
17
|
+
@silabario.merge! Hiragana.group5 if @level > 4
|
18
|
+
@silabario.merge! Hiragana.group6 if @level > 5
|
17
19
|
|
18
20
|
@keys = @silabario.keys
|
19
21
|
end
|
@@ -1,19 +1,16 @@
|
|
1
1
|
|
2
|
-
require_relative '../hiragana'
|
3
|
-
require_relative '../dictionary'
|
4
|
-
require_relative '../debug'
|
5
2
|
require 'colorize'
|
3
|
+
require_relative '../debug'
|
4
|
+
require_relative '../data/dictionary'
|
5
|
+
require_relative '../data/hiragana'
|
6
6
|
|
7
7
|
module SoundGame
|
8
8
|
|
9
9
|
def self.to_hiragana(sounds)
|
10
|
-
|
10
|
+
hiragana = Hiragana.sounds_to_hiragana(sounds)
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
none = {'hiragana': hiragana, 'spanish': '?', 'sounds': '?'}
|
16
|
-
words = Dictionary.new.words
|
12
|
+
none = {'hiragana' => hiragana, 'spanish' => '?', 'sounds' => '?'}
|
13
|
+
words = Dictionary.words
|
17
14
|
word = (words.select {_1["hiragana"] == hiragana})[0] || none
|
18
15
|
|
19
16
|
word
|
@@ -25,10 +22,11 @@ module SoundGame
|
|
25
22
|
puts "Example: a i => あい (amor - ái)".blue
|
26
23
|
Debug.puts_line
|
27
24
|
|
28
|
-
|
29
|
-
until sounds.empty?
|
25
|
+
loop do
|
30
26
|
print "\nWrite sounds ? ".light_yellow
|
31
27
|
sounds = STDIN.gets.chomp.split
|
28
|
+
return if sounds.empty?
|
29
|
+
|
32
30
|
word = self.to_hiragana(sounds)
|
33
31
|
print "Hiragana => ".white
|
34
32
|
puts word["hiragana"]
|
data/lib/learn-japanese.rb
CHANGED
@@ -3,6 +3,7 @@ require_relative 'learn-japanese/version'
|
|
3
3
|
require_relative 'learn-japanese/game/choose-answer-game'
|
4
4
|
require_relative 'learn-japanese/game/short-answer-game'
|
5
5
|
require_relative 'learn-japanese/game/sound-game'
|
6
|
+
require_relative 'learn-japanese/game/romaji-game'
|
6
7
|
|
7
8
|
module LearnJapanese
|
8
9
|
|
@@ -30,4 +31,8 @@ module LearnJapanese
|
|
30
31
|
def self.sound
|
31
32
|
SoundGame.run
|
32
33
|
end
|
34
|
+
|
35
|
+
def self.romaji
|
36
|
+
RomajiGame.new.run
|
37
|
+
end
|
33
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: learn-japanese
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Vargas Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -41,10 +41,7 @@ dependencies:
|
|
41
41
|
description:
|
42
42
|
email: dvarrui@protonmail.com
|
43
43
|
executables:
|
44
|
-
- choose-answer-game
|
45
44
|
- learn-japanese
|
46
|
-
- short-answer-game
|
47
|
-
- sounds-to-hiragana
|
48
45
|
extensions: []
|
49
46
|
extra_rdoc_files: []
|
50
47
|
files:
|
@@ -54,22 +51,21 @@ files:
|
|
54
51
|
- LICENSE
|
55
52
|
- README.md
|
56
53
|
- Rakefile
|
57
|
-
- bin/choose-answer-game
|
58
54
|
- bin/learn-japanese
|
59
|
-
- bin/short-answer-game
|
60
|
-
- bin/sounds-to-hiragana
|
61
55
|
- examples/01-emoji.rb
|
62
56
|
- examples/02-emoji.rb
|
63
57
|
- learn-japanese.gemspec
|
64
58
|
- lib/learn-japanese.rb
|
65
59
|
- lib/learn-japanese/cli.rb
|
60
|
+
- lib/learn-japanese/data/dictionary.rb
|
61
|
+
- lib/learn-japanese/data/hiragana.rb
|
62
|
+
- lib/learn-japanese/data/hiragana.yaml
|
66
63
|
- lib/learn-japanese/data/words.yaml
|
67
64
|
- lib/learn-japanese/debug.rb
|
68
|
-
- lib/learn-japanese/dictionary.rb
|
69
65
|
- lib/learn-japanese/game/choose-answer-game.rb
|
66
|
+
- lib/learn-japanese/game/romaji-game.rb
|
70
67
|
- lib/learn-japanese/game/short-answer-game.rb
|
71
68
|
- lib/learn-japanese/game/sound-game.rb
|
72
|
-
- lib/learn-japanese/hiragana.rb
|
73
69
|
- lib/learn-japanese/version.rb
|
74
70
|
homepage: https://github.com/dvarrui/learn-japanese
|
75
71
|
licenses:
|
data/bin/choose-answer-game
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
|
-
require 'learn-japanese/game/choose-answer-game'
|
5
|
-
|
6
|
-
def get_level
|
7
|
-
level = ARGV.first.to_i
|
8
|
-
|
9
|
-
if level.zero?
|
10
|
-
name = File.basename(__FILE__)
|
11
|
-
puts "Usage: #{name} [LEVEL] # LEVEL is [1,2,3,4]"
|
12
|
-
exit 0
|
13
|
-
end
|
14
|
-
level
|
15
|
-
end
|
16
|
-
|
17
|
-
level = get_level
|
18
|
-
ChooseAnswerGame.show_help(level)
|
19
|
-
ChooseAnswerGame.new(level).run
|
data/bin/short-answer-game
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
|
-
require 'learn-japanese/game/short-answer-game'
|
5
|
-
|
6
|
-
def get_level
|
7
|
-
level = ARGV.first.to_i
|
8
|
-
|
9
|
-
if level.zero?
|
10
|
-
name = File.basename(__FILE__)
|
11
|
-
puts "Usage: #{name} [LEVEL] # LEVEL is [1,2,3,4]"
|
12
|
-
exit 0
|
13
|
-
end
|
14
|
-
level
|
15
|
-
end
|
16
|
-
|
17
|
-
level = get_level
|
18
|
-
ShortAnswerGame.show_help(level)
|
19
|
-
ShortAnswerGame.new(level).run
|
data/bin/sounds-to-hiragana
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'colorize'
|
2
|
-
require_relative 'debug'
|
3
|
-
|
4
|
-
# Silabario japonés
|
5
|
-
class Hiragana
|
6
|
-
|
7
|
-
def self.group1
|
8
|
-
{ a: "\u{3042}",
|
9
|
-
i: "\u{3044}",
|
10
|
-
u: "\u{3046}",
|
11
|
-
e: "\u{3048}",
|
12
|
-
o: "\u{304A}"
|
13
|
-
}
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.group2
|
17
|
-
{ ka: "\u{304B}",
|
18
|
-
ki: "\u{304D}",
|
19
|
-
ku: "\u{304F}",
|
20
|
-
ke: "\u{3051}",
|
21
|
-
ko: "\u{3053}"
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.group3
|
26
|
-
{ sa: "\u{3055}",
|
27
|
-
shi: "\u{3057}",
|
28
|
-
su: "\u{3059}",
|
29
|
-
se: "\u{305B}",
|
30
|
-
so: "\u{305D}"
|
31
|
-
}
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.group4
|
35
|
-
{ ta: "\u{305F}",
|
36
|
-
chi: "\u{3061}",
|
37
|
-
tsu: "\u{3064}",
|
38
|
-
te: "\u{3066}",
|
39
|
-
to: "\u{3068}"
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.all
|
44
|
-
output = self.group1
|
45
|
-
output.merge!(self.group2)
|
46
|
-
output.merge!(self.group3)
|
47
|
-
output.merge!(self.group4)
|
48
|
-
output
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.show_help(level=1)
|
52
|
-
Debug.puts_line
|
53
|
-
puts "Hiragana help\n".upcase.cyan
|
54
|
-
|
55
|
-
Debug.puts_group Hiragana.group1
|
56
|
-
Debug.puts_group Hiragana.group2 if level > 1
|
57
|
-
Debug.puts_group Hiragana.group3 if level > 2
|
58
|
-
Debug.puts_group Hiragana.group4 if level > 3
|
59
|
-
end
|
60
|
-
end
|