learn-japanese 0.7.0 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/learn-japanese/cli.rb +12 -8
- data/lib/learn-japanese/data/hiragana.rb +26 -1
- data/lib/learn-japanese/data/hiragana.yaml +36 -0
- data/lib/learn-japanese/game/choose-answer-game.rb +9 -4
- data/lib/learn-japanese/game/{romanji-game.rb → romaji-game.rb} +5 -5
- data/lib/learn-japanese/game/short-answer-game.rb +2 -0
- data/lib/learn-japanese/version.rb +1 -1
- data/lib/learn-japanese.rb +3 -3
- metadata +4 -9
- data/bin/choose-answer-game +0 -19
- data/bin/short-answer-game +0 -19
- data/bin/sounds-to-hiragana +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56a53ac9e7d74b5ac133f329c8b49829bea61f343014cb3fb4715728286bfe9d
|
4
|
+
data.tar.gz: 16449663b042b8b857548db94dbab7d4d3034d88a7b9b00e191e5e28cd136601
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad4108e66120821a75139feb827162cbf3300f828c6cb8b1019dd2b7ecc952cf156e0e840ac7c840fc72c3244efdc4fc5f54c31a7fad39cfe0fbcaf93b71a4b9
|
7
|
+
data.tar.gz: 16b2ca13e45f9764f7bd78dc4f04382d9feba4fa0d8ec37de3e93097056013aa05ed065403ab3670898f2e8beefe25da2d25bd36b82b9f2de28229399ecbd25b
|
data/lib/learn-japanese/cli.rb
CHANGED
@@ -11,15 +11,19 @@ class CLI < Thor
|
|
11
11
|
end
|
12
12
|
|
13
13
|
map ['ca', '-ca', '--choose-answer', 'choose-answer'] => 'choose_answer'
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
option :level
|
15
|
+
desc 'choose-answer [--level=NUMBER]', 'Values 1-6'
|
16
|
+
def choose_answer()
|
17
|
+
level = options[:level].to_i
|
18
|
+
LearnJapanese.choose_answer(level)
|
17
19
|
end
|
18
20
|
|
19
21
|
map ['sa', '-sa', '--short-answer', 'short-answer'] => 'short_answer'
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
option :level
|
23
|
+
desc 'short-answer [--level=NUMBER]', 'Values 1-6'
|
24
|
+
def short_answer()
|
25
|
+
level = options[:level].to_i
|
26
|
+
LearnJapanese.short_answer(level)
|
23
27
|
end
|
24
28
|
|
25
29
|
map ['so', '-so', '--sound', 'sound'] => 'sound'
|
@@ -30,7 +34,7 @@ class CLI < Thor
|
|
30
34
|
|
31
35
|
map ['ro', '-ro', '--romanji' ] => 'romaji'
|
32
36
|
desc 'romaji', 'Write Romaji for Hiragana word'
|
33
|
-
def
|
34
|
-
LearnJapanese.
|
37
|
+
def romaji
|
38
|
+
LearnJapanese.romaji
|
35
39
|
end
|
36
40
|
end
|
@@ -34,17 +34,37 @@ class Hiragana
|
|
34
34
|
def self.group4
|
35
35
|
{ ta: "\u{305F}",
|
36
36
|
chi: "\u{3061}",
|
37
|
-
tsu: "\u{3064}",
|
37
|
+
tsu: "\u{3064}", # つ
|
38
38
|
te: "\u{3066}",
|
39
39
|
to: "\u{3068}"
|
40
40
|
}
|
41
41
|
end
|
42
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
|
+
|
43
61
|
def self.all
|
44
62
|
output = self.group1
|
45
63
|
output.merge!(self.group2)
|
46
64
|
output.merge!(self.group3)
|
47
65
|
output.merge!(self.group4)
|
66
|
+
output.merge!(self.group5)
|
67
|
+
output.merge!(self.group6)
|
48
68
|
output
|
49
69
|
end
|
50
70
|
|
@@ -55,6 +75,8 @@ class Hiragana
|
|
55
75
|
hiragana.merge! Hiragana.group2 if levels.include? 2
|
56
76
|
hiragana.merge! Hiragana.group3 if levels.include? 3
|
57
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
|
58
80
|
hiragana
|
59
81
|
end
|
60
82
|
|
@@ -86,5 +108,8 @@ class Hiragana
|
|
86
108
|
Debug.puts_group Hiragana.group2 if level > 1
|
87
109
|
Debug.puts_group Hiragana.group3 if level > 2
|
88
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
|
89
114
|
end
|
90
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}"
|
@@ -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
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require_relative '../debug'
|
4
4
|
require_relative '../data/dictionary'
|
5
5
|
|
6
|
-
class
|
6
|
+
class RomajiGame
|
7
7
|
|
8
8
|
def initialize(level=1, max=10)
|
9
9
|
@level = level
|
@@ -17,13 +17,13 @@ class RomanjiGame
|
|
17
17
|
Debug.puts_line
|
18
18
|
while @score < @max_score
|
19
19
|
@words.shuffle!
|
20
|
-
|
20
|
+
guess_romaji(@words.first)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
|
-
def
|
26
|
+
def guess_romaji(data)
|
27
27
|
hiragana = data['hiragana']
|
28
28
|
spanish = data['spanish']
|
29
29
|
sounds = data['sounds']
|
@@ -36,11 +36,11 @@ class RomanjiGame
|
|
36
36
|
good = Hiragana.hiraganas_to_sound(hiragana.split(''))
|
37
37
|
if resp == good
|
38
38
|
@score += 1
|
39
|
-
puts ' '*
|
39
|
+
puts ' ' * 9 + "#{spanish} (#{sounds})".white
|
40
40
|
return true
|
41
41
|
end
|
42
42
|
puts "Right answer is #{good}".light_red
|
43
|
-
puts ' '*
|
43
|
+
puts ' ' * 9 + "#{spanish} (#{sounds})".red
|
44
44
|
false
|
45
45
|
end
|
46
46
|
|
@@ -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
|
data/lib/learn-japanese.rb
CHANGED
@@ -3,7 +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/
|
6
|
+
require_relative 'learn-japanese/game/romaji-game'
|
7
7
|
|
8
8
|
module LearnJapanese
|
9
9
|
|
@@ -32,7 +32,7 @@ module LearnJapanese
|
|
32
32
|
SoundGame.run
|
33
33
|
end
|
34
34
|
|
35
|
-
def self.
|
36
|
-
|
35
|
+
def self.romaji
|
36
|
+
RomajiGame.new.run
|
37
37
|
end
|
38
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.2
|
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,10 +51,7 @@ 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
|
@@ -65,10 +59,11 @@ files:
|
|
65
59
|
- lib/learn-japanese/cli.rb
|
66
60
|
- lib/learn-japanese/data/dictionary.rb
|
67
61
|
- lib/learn-japanese/data/hiragana.rb
|
62
|
+
- lib/learn-japanese/data/hiragana.yaml
|
68
63
|
- lib/learn-japanese/data/words.yaml
|
69
64
|
- lib/learn-japanese/debug.rb
|
70
65
|
- lib/learn-japanese/game/choose-answer-game.rb
|
71
|
-
- lib/learn-japanese/game/
|
66
|
+
- lib/learn-japanese/game/romaji-game.rb
|
72
67
|
- lib/learn-japanese/game/short-answer-game.rb
|
73
68
|
- lib/learn-japanese/game/sound-game.rb
|
74
69
|
- lib/learn-japanese/version.rb
|
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
|