learn-japanese 0.6.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d63b5f7f7aafa4c249290ead834bad949693cb156bb25f537fba3c0665211ab
4
- data.tar.gz: 758f37922314566ac2e95a944428bbd6180de32df90549fad521037548c72cdf
3
+ metadata.gz: b9551ba5848ab1baac33056aea1f97eaeba4057bf3de1c2cace4fe48b871e28d
4
+ data.tar.gz: 4101529e9a6874489cc7001d5eccf4b83691cabdd0db6c057ce32fc92373c805
5
5
  SHA512:
6
- metadata.gz: 9cd09b6001f729cbf395e3bf10eadc7e3a8a69a80d3201c1ef41290d3df67b120071cff1435566f857cf2a5678a5df6a59fb53e1e14fb313582cb52f90d0b738
7
- data.tar.gz: 6ad71c8b31c20cb5a7196968ef58bf6f32b3f7e719bf7ac3d33d0cb8e2e8f31126166ad80c16ddff7224c6b8fe4a183c2d99d7469b95ebaffb0f7466f9f6eb7d
6
+ metadata.gz: 71d59ed075201be14f7f46d69e0d1ffe98d45f46c36b96cc62f56619198c00b8c35b22a398e414b60d789cc4ed475ddf3099ade875050f185e08bb324a99b917
7
+ data.tar.gz: c81f8b3190ed01932c2f9483d87ebecdf9026df68c8b770631c735e89033ad6d2e89e3e30aa42b1144658beb30e1ef15ad071167592e2ad09c82e430131e80fa
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.5
1
+ 3.1.0
@@ -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-4'
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-4'
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 romanji
34
+ LearnJapanese.romanji
35
+ end
30
36
  end
@@ -0,0 +1,11 @@
1
+
2
+ require 'yaml'
3
+
4
+ module Dictionary
5
+
6
+ def self.words
7
+ filename = File.join(File.dirname(__FILE__), 'words.yaml')
8
+ words = YAML.load(File.read(filename))
9
+ end
10
+
11
+ 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
@@ -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)
@@ -15,4 +15,9 @@ class Debug
15
15
  def self.puts_line
16
16
  STDOUT.puts ('=' * 20).white
17
17
  end
18
+
19
+ def self.break
20
+ require 'debug'
21
+ binding.break
22
+ end
18
23
  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 ChooseAnswerGame
7
7
 
@@ -10,10 +10,15 @@ class ChooseAnswerGame
10
10
  @score = 1
11
11
  @max_score = max
12
12
 
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
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 RomanjiGame
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_romanji(@words.first)
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def guess_romanji(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 ' '*10+"#{spanish} (#{sounds})".white
40
+ return true
41
+ end
42
+ puts "Right answer is #{good}".light_red
43
+ puts ' '*10+"#{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
- hiraganas = Hiragana.all
10
+ hiragana = Hiragana.sounds_to_hiragana(sounds)
11
11
 
12
- hiragana_array = sounds.map { hiraganas[_1.to_sym] || '*' }
13
- hiragana = hiragana_array.join('')
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
- sounds = "init"
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"]
@@ -1,6 +1,6 @@
1
1
 
2
2
  module LearnJapanese
3
- VERSION = '0.6.0'
3
+ VERSION = '0.8.0'
4
4
  NAME = 'learn-japanese'
5
5
  HOMEPAGE = 'https://github.com/dvarrui/learn-japanese'
6
6
  end
@@ -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/romanji-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.romanji
36
+ RomanjiGame.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.6.0
4
+ version: 0.8.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-04-19 00:00:00.000000000 Z
11
+ date: 2022-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -63,13 +63,14 @@ files:
63
63
  - learn-japanese.gemspec
64
64
  - lib/learn-japanese.rb
65
65
  - lib/learn-japanese/cli.rb
66
+ - lib/learn-japanese/data/dictionary.rb
67
+ - lib/learn-japanese/data/hiragana.rb
66
68
  - lib/learn-japanese/data/words.yaml
67
69
  - lib/learn-japanese/debug.rb
68
- - lib/learn-japanese/dictionary.rb
69
70
  - lib/learn-japanese/game/choose-answer-game.rb
71
+ - lib/learn-japanese/game/romanji-game.rb
70
72
  - lib/learn-japanese/game/short-answer-game.rb
71
73
  - lib/learn-japanese/game/sound-game.rb
72
- - lib/learn-japanese/hiragana.rb
73
74
  - lib/learn-japanese/version.rb
74
75
  homepage: https://github.com/dvarrui/learn-japanese
75
76
  licenses:
@@ -90,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  - !ruby/object:Gem::Version
91
92
  version: '0'
92
93
  requirements: []
93
- rubygems_version: 3.1.6
94
+ rubygems_version: 3.3.3
94
95
  signing_key:
95
96
  specification_version: 4
96
97
  summary: Learn Japanese (UNDER DEVELOPMENT)
@@ -1,12 +0,0 @@
1
-
2
- require 'yaml'
3
-
4
- class Dictionary
5
- attr_reader :words
6
-
7
- def initialize()
8
- filename = File.join(File.dirname(__FILE__), 'data', 'words.yaml')
9
- @words = YAML.load(File.read(filename))
10
- end
11
-
12
- end
@@ -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
- si: "\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
- ti: "\u{3061}",
37
- tu: "\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