learn-japanese 0.8.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -12
- data/lib/learn-japanese/cli.rb +2 -2
- data/lib/learn-japanese/data/hiragana.rb +33 -78
- data/lib/learn-japanese/data/hiragana.yaml +31 -36
- data/lib/learn-japanese/game/choose-answer-game.rb +3 -5
- data/lib/learn-japanese/game/romaji-game.rb +2 -1
- data/lib/learn-japanese/game/short-answer-game.rb +6 -8
- data/lib/learn-japanese/game/sound-game.rb +9 -5
- data/lib/learn-japanese/version.rb +1 -1
- data/lib/learn-japanese.rb +5 -6
- data/tests/all.rb +3 -0
- data/tests/learn-japanese/data/hiragana_test.rb +19 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5c1fca5b0ff073f6ce6a77acf3bab9907a7375e0f9478ee7ce4c7ee36a3d52d
|
4
|
+
data.tar.gz: c06390a9a5be368f29e42520c152b3fafc9844363d2969ad989aaa1c5dc402f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a886b203ddb9a0471c8e57341b34341b0d52c48e6134b4d96a8d03e8be44b1d226ae541729bd55fbdb23e09a29793366202f5f2d5505555d8368bae33f2cb63
|
7
|
+
data.tar.gz: 8d16c2416b30f85c75afe9e320b18ef0f4ac872c1acf675ae580df79a0fd78d47af5cce3e79946e19e9f1dfa0f0631266f7a6740af25c2f0069467c667aadbec
|
data/README.md
CHANGED
@@ -5,9 +5,9 @@
|
|
5
5
|
|
6
6
|
`learn-japanese` helps us to learn japanese.
|
7
7
|
|
8
|
-
> WARNING: just only Hiragana (groups 1-
|
9
|
-
|
10
|
-
Every few week will be grow with more functions... at the same time I'm learning too... I hope.
|
8
|
+
> WARNING: just only Hiragana (groups 1-6) for now.
|
9
|
+
>
|
10
|
+
> Every few week will be grow with more functions... at the same time I'm learning too... I hope.
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
@@ -16,15 +16,18 @@ Every few week will be grow with more functions... at the same time I'm learning
|
|
16
16
|
|
17
17
|
## Usage
|
18
18
|
|
19
|
-
* Open a terminal and run `learn-japanese
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
* Open a terminal and run `learn-japanese` command to show available functions.
|
20
|
+
|
21
|
+
```
|
22
|
+
❯ ./bin/learn-japanese
|
23
|
+
Commands:
|
24
|
+
learn-japanese choose-answer [--level=NUMBER] # Values 1-6
|
25
|
+
learn-japanese help [COMMAND] # Describe available commands or one specific command
|
26
|
+
learn-japanese romaji # Write Romaji for Hiragana word
|
27
|
+
learn-japanese short-answer [--level=NUMBER] # Values 1-6
|
28
|
+
learn-japanese sound # Write sounds and get the Hiragana
|
29
|
+
learn-japanese version # Show the program version
|
30
|
+
```
|
28
31
|
|
29
32
|
# ANEXO
|
30
33
|
|
data/lib/learn-japanese/cli.rb
CHANGED
@@ -27,13 +27,13 @@ class CLI < Thor
|
|
27
27
|
end
|
28
28
|
|
29
29
|
map ['so', '-so', '--sound', 'sound'] => 'sound'
|
30
|
-
desc 'sound', 'Write sounds and
|
30
|
+
desc 'sound', 'Util: Write sounds and show Hiragana'
|
31
31
|
def sound
|
32
32
|
LearnJapanese.sound
|
33
33
|
end
|
34
34
|
|
35
35
|
map ['ro', '-ro', '--romanji' ] => 'romaji'
|
36
|
-
desc 'romaji', 'Write Romaji for Hiragana word'
|
36
|
+
desc 'romaji', 'You have to Write Romaji for every Hiragana word'
|
37
37
|
def romaji
|
38
38
|
LearnJapanese.romaji
|
39
39
|
end
|
@@ -1,93 +1,48 @@
|
|
1
|
+
require 'yaml'
|
1
2
|
require 'colorize'
|
2
3
|
require_relative '../debug'
|
3
4
|
|
4
|
-
# Silabario japonés
|
5
5
|
class Hiragana
|
6
|
+
# Silabario japonés
|
7
|
+
attr_reader :data
|
6
8
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
u: "\u{3046}",
|
11
|
-
e: "\u{3048}",
|
12
|
-
o: "\u{304A}"
|
13
|
-
}
|
9
|
+
def initialize
|
10
|
+
filename = File.join(File.dirname(__FILE__), 'hiragana.yaml')
|
11
|
+
@data = YAML.load(File.read(filename))
|
14
12
|
end
|
15
13
|
|
16
|
-
def
|
17
|
-
|
18
|
-
ki: "\u{304D}",
|
19
|
-
ku: "\u{304F}",
|
20
|
-
ke: "\u{3051}",
|
21
|
-
ko: "\u{3053}"
|
22
|
-
}
|
14
|
+
def group(index)
|
15
|
+
@data[index - 1]
|
23
16
|
end
|
24
17
|
|
25
|
-
def
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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)
|
18
|
+
def all_groups
|
19
|
+
output = {}
|
20
|
+
@data.each do |group|
|
21
|
+
output.merge!(group)
|
22
|
+
end
|
68
23
|
output
|
69
24
|
end
|
70
25
|
|
71
|
-
def
|
72
|
-
return
|
26
|
+
def groups(levels)
|
27
|
+
return all if levels == :all
|
73
28
|
hiragana = {}
|
74
|
-
hiragana.merge!
|
75
|
-
hiragana.merge!
|
76
|
-
hiragana.merge!
|
77
|
-
hiragana.merge!
|
78
|
-
hiragana.merge!
|
79
|
-
hiragana.merge!
|
29
|
+
hiragana.merge! group 1 if levels.include? 1
|
30
|
+
hiragana.merge! group 2 if levels.include? 2
|
31
|
+
hiragana.merge! group 3 if levels.include? 3
|
32
|
+
hiragana.merge! group 4 if levels.include? 4
|
33
|
+
hiragana.merge! group 4 if levels.include? 5
|
34
|
+
hiragana.merge! group 5 if levels.include? 6
|
80
35
|
hiragana
|
81
36
|
end
|
82
37
|
|
83
|
-
def
|
84
|
-
hiraganas =
|
38
|
+
def sounds_to_hiragana(sounds)
|
39
|
+
hiraganas = all_groups
|
85
40
|
hiragana_array = sounds.map { hiraganas[_1.to_sym] || '*' }
|
86
41
|
hiragana = hiragana_array.join('')
|
87
42
|
end
|
88
43
|
|
89
|
-
def
|
90
|
-
all_hiraganas =
|
44
|
+
def hiraganas_to_sound(hiraganas_input)
|
45
|
+
all_hiraganas = all_groups
|
91
46
|
|
92
47
|
sounds_array = hiraganas_input.map do |hiragana_input|
|
93
48
|
sound = '*'
|
@@ -100,16 +55,16 @@ class Hiragana
|
|
100
55
|
sounds_array.join('')
|
101
56
|
end
|
102
57
|
|
103
|
-
def
|
58
|
+
def show_help(level=1)
|
104
59
|
Debug.puts_line
|
105
60
|
puts "Hiragana help\n".upcase.cyan
|
106
61
|
|
107
|
-
Debug.puts_group
|
108
|
-
Debug.puts_group
|
109
|
-
Debug.puts_group
|
110
|
-
Debug.puts_group
|
111
|
-
Debug.puts_group
|
112
|
-
Debug.puts_group
|
113
|
-
Debug.puts_group
|
62
|
+
Debug.puts_group group(1)
|
63
|
+
Debug.puts_group group(2) if level > 1
|
64
|
+
Debug.puts_group group(3) if level > 2
|
65
|
+
Debug.puts_group group(4) if level > 3
|
66
|
+
Debug.puts_group group(5) if level > 4
|
67
|
+
Debug.puts_group group(6) if level > 5
|
68
|
+
Debug.puts_group group(7) if level > 6
|
114
69
|
end
|
115
70
|
end
|
@@ -1,36 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
i: "\u{3044}"
|
4
|
-
u: "\u{3046}"
|
5
|
-
e: "\u{3048}"
|
6
|
-
o: "\u{304A}"
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
ha: "\u{306F}"
|
33
|
-
hi: "\u{3072}"
|
34
|
-
hu: "\u{3075}"
|
35
|
-
he: "\u{3078}"
|
36
|
-
ho: "\u{307B}"
|
1
|
+
---
|
2
|
+
- :a: あ #"\u{3042}"
|
3
|
+
:i: い #"\u{3044}"
|
4
|
+
:u: う #"\u{3046}"
|
5
|
+
:e: え #"\u{3048}"
|
6
|
+
:o: お #"\u{304A}"
|
7
|
+
- :ka: か #"\u{304B}"
|
8
|
+
:ki: き #"\u{304D}"
|
9
|
+
:ku: く #"\u{304F}"
|
10
|
+
:ke: け #"\u{3051}"
|
11
|
+
:ko: こ #"\u{3053}"
|
12
|
+
- :sa: さ #"\u{3055}"
|
13
|
+
:shi: し #"\u{3057}"
|
14
|
+
:su: す #"\u{3059}"
|
15
|
+
:se: せ #"\u{305B}"
|
16
|
+
:so: そ #"\u{305D}"
|
17
|
+
- :ta: た #"\u{305F}"
|
18
|
+
:chi: ち #"\u{3061}"
|
19
|
+
:tsu: つ #"\u{3064}"
|
20
|
+
:te: て #"\u{3066}"
|
21
|
+
:to: と #"\u{3068}"
|
22
|
+
- :na: な #"\u{306A}"
|
23
|
+
:ni: に #"\u{306B#}"
|
24
|
+
:nu: ぬ #"\u{306C}"
|
25
|
+
:ne: ね #"\u{306D}"
|
26
|
+
:no: の #"\u{306E}"
|
27
|
+
- :ha: は #"\u{306F}"
|
28
|
+
:hi: ひ #"\u{3072}"
|
29
|
+
:hu: ふ #"\u{3075}"
|
30
|
+
:he: へ #"\u{3078}"
|
31
|
+
:ho: ほ #"\u{307B}"
|
@@ -6,6 +6,7 @@ require_relative '../data/hiragana'
|
|
6
6
|
class ChooseAnswerGame
|
7
7
|
|
8
8
|
def initialize(level=1, max=10)
|
9
|
+
@hiragana = Hiragana.new
|
9
10
|
@level = level
|
10
11
|
@score = 1
|
11
12
|
@max_score = max
|
@@ -18,16 +19,13 @@ class ChooseAnswerGame
|
|
18
19
|
#@silabario.merge! Hiragana.group5 if @level > 5
|
19
20
|
#@silabario.merge! Hiragana.group6 if @level > 6
|
20
21
|
levels = (1..@level).to_a
|
21
|
-
@silabario =
|
22
|
+
@silabario = @hiragana.groups(levels)
|
22
23
|
|
23
24
|
@keys = @silabario.keys
|
24
25
|
end
|
25
26
|
|
26
|
-
def self.show_help(level=1)
|
27
|
-
Hiragana.show_help(level)
|
28
|
-
end
|
29
|
-
|
30
27
|
def run
|
28
|
+
@hiragana.show_help(@level)
|
31
29
|
Debug.puts_line
|
32
30
|
while @score < @max_score
|
33
31
|
guess_japanise_symbol(@keys)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require_relative '../debug'
|
4
4
|
require_relative '../data/dictionary'
|
5
|
+
require_relative '../data/hiragana'
|
5
6
|
|
6
7
|
class RomajiGame
|
7
8
|
|
@@ -33,7 +34,7 @@ class RomajiGame
|
|
33
34
|
resp = STDIN.gets.chomp
|
34
35
|
exit if resp.empty?
|
35
36
|
|
36
|
-
good = Hiragana.hiraganas_to_sound(hiragana.split(''))
|
37
|
+
good = Hiragana.new.hiraganas_to_sound(hiragana.split(''))
|
37
38
|
if resp == good
|
38
39
|
@score += 1
|
39
40
|
puts ' ' * 9 + "#{spanish} (#{sounds})".white
|
@@ -6,25 +6,23 @@ require_relative '../data/hiragana'
|
|
6
6
|
class ShortAnswerGame
|
7
7
|
|
8
8
|
def initialize(level=1, max=10)
|
9
|
+
@hiragana = Hiragana.new
|
10
|
+
|
9
11
|
@level = level
|
10
12
|
@score = 1
|
11
13
|
@max_score = max
|
12
14
|
|
13
|
-
@silabario =
|
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.group5 if @level > 4
|
18
|
-
@silabario.merge! Hiragana.group6 if @level > 5
|
15
|
+
@silabario = @hiragana.groups( (1..level).to_a )
|
19
16
|
|
20
17
|
@keys = @silabario.keys
|
21
18
|
end
|
22
19
|
|
23
|
-
def
|
24
|
-
|
20
|
+
def show_help(level=1)
|
21
|
+
@hiragana.show_help(level)
|
25
22
|
end
|
26
23
|
|
27
24
|
def run
|
25
|
+
@hiragana.show_help(@level)
|
28
26
|
Debug.puts_line
|
29
27
|
while @score < @max_score
|
30
28
|
@keys.shuffle!
|
@@ -4,10 +4,14 @@ require_relative '../debug'
|
|
4
4
|
require_relative '../data/dictionary'
|
5
5
|
require_relative '../data/hiragana'
|
6
6
|
|
7
|
-
|
7
|
+
class SoundGame
|
8
8
|
|
9
|
-
def
|
10
|
-
hiragana = Hiragana.
|
9
|
+
def initialize()
|
10
|
+
@hiragana = Hiragana.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_hiragana(sounds)
|
14
|
+
hiragana = @hiragana.sounds_to_hiragana(sounds)
|
11
15
|
|
12
16
|
none = {'hiragana' => hiragana, 'spanish' => '?', 'sounds' => '?'}
|
13
17
|
words = Dictionary.words
|
@@ -16,7 +20,7 @@ module SoundGame
|
|
16
20
|
word
|
17
21
|
end
|
18
22
|
|
19
|
-
def
|
23
|
+
def run
|
20
24
|
Debug.puts_line
|
21
25
|
puts "SOUNDS TO HIRAGANA".light_cyan
|
22
26
|
puts "Example: a i => あい (amor - ái)".blue
|
@@ -27,7 +31,7 @@ module SoundGame
|
|
27
31
|
sounds = STDIN.gets.chomp.split
|
28
32
|
return if sounds.empty?
|
29
33
|
|
30
|
-
word =
|
34
|
+
word = to_hiragana(sounds)
|
31
35
|
print "Hiragana => ".white
|
32
36
|
puts word["hiragana"]
|
33
37
|
print "Spanish => ".white
|
data/lib/learn-japanese.rb
CHANGED
@@ -18,21 +18,20 @@ module LearnJapanese
|
|
18
18
|
|
19
19
|
def self.choose_answer(level)
|
20
20
|
show_help unless level > 0
|
21
|
-
ChooseAnswerGame.show_help(level)
|
22
21
|
ChooseAnswerGame.new(level).run
|
23
22
|
end
|
24
23
|
|
24
|
+
def self.romaji
|
25
|
+
RomajiGame.new.run
|
26
|
+
end
|
27
|
+
|
25
28
|
def self.short_answer(level)
|
26
29
|
show_help unless level > 0
|
27
|
-
ShortAnswerGame.show_help(level)
|
28
30
|
ShortAnswerGame.new(level).run
|
29
31
|
end
|
30
32
|
|
31
33
|
def self.sound
|
32
|
-
SoundGame.run
|
34
|
+
SoundGame.new.run
|
33
35
|
end
|
34
36
|
|
35
|
-
def self.romaji
|
36
|
-
RomajiGame.new.run
|
37
|
-
end
|
38
37
|
end
|
data/tests/all.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require_relative '../../../lib/learn-japanese/data/hiragana'
|
5
|
+
|
6
|
+
class HiraganaTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_new
|
9
|
+
h = Hiragana.new
|
10
|
+
|
11
|
+
assert_equal 6, h.data.size
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_every_group_has_6_symbols
|
15
|
+
data = Hiragana.new.data
|
16
|
+
|
17
|
+
data.each { |group| assert_equal 5, group.size }
|
18
|
+
end
|
19
|
+
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.9.0
|
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-05-
|
11
|
+
date: 2022-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -67,6 +67,8 @@ files:
|
|
67
67
|
- lib/learn-japanese/game/short-answer-game.rb
|
68
68
|
- lib/learn-japanese/game/sound-game.rb
|
69
69
|
- lib/learn-japanese/version.rb
|
70
|
+
- tests/all.rb
|
71
|
+
- tests/learn-japanese/data/hiragana_test.rb
|
70
72
|
homepage: https://github.com/dvarrui/learn-japanese
|
71
73
|
licenses:
|
72
74
|
- GPL-3
|