learn-japanese 0.6.0 → 0.8.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.
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