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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56a53ac9e7d74b5ac133f329c8b49829bea61f343014cb3fb4715728286bfe9d
4
- data.tar.gz: 16449663b042b8b857548db94dbab7d4d3034d88a7b9b00e191e5e28cd136601
3
+ metadata.gz: c5c1fca5b0ff073f6ce6a77acf3bab9907a7375e0f9478ee7ce4c7ee36a3d52d
4
+ data.tar.gz: c06390a9a5be368f29e42520c152b3fafc9844363d2969ad989aaa1c5dc402f2
5
5
  SHA512:
6
- metadata.gz: ad4108e66120821a75139feb827162cbf3300f828c6cb8b1019dd2b7ecc952cf156e0e840ac7c840fc72c3244efdc4fc5f54c31a7fad39cfe0fbcaf93b71a4b9
7
- data.tar.gz: 16b2ca13e45f9764f7bd78dc4f04382d9feba4fa0d8ec37de3e93097056013aa05ed065403ab3670898f2e8beefe25da2d25bd36b82b9f2de28229399ecbd25b
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-4) for now.
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
- ## Functions or mini-games
22
-
23
- | Function name | Description |
24
- | ------------- | ---------------------------------------- |
25
- | short-answer | Write the sound associated to the symbol |
26
- | choose-answer | Choose the symbol associated to the sound |
27
- | sound | Write the sounds and get the word |
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
 
@@ -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 get the Hiragana'
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 self.group1
8
- { a: "\u{3042}",
9
- i: "\u{3044}",
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 self.group2
17
- { ka: "\u{304B}",
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 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)
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 self.groups(levels)
72
- return self.all if levels == :all
26
+ def groups(levels)
27
+ return all if levels == :all
73
28
  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
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 self.sounds_to_hiragana(sounds)
84
- hiraganas = Hiragana.all
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 self.hiraganas_to_sound(hiraganas_input)
90
- all_hiraganas = Hiragana.all
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 self.show_help(level=1)
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 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
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
- 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}"
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 = Hiragana.groups(levels)
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 = 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.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 self.show_help(level=1)
24
- Hiragana.show_help(level)
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
- module SoundGame
7
+ class SoundGame
8
8
 
9
- def self.to_hiragana(sounds)
10
- hiragana = Hiragana.sounds_to_hiragana(sounds)
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 self.run
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 = self.to_hiragana(sounds)
34
+ word = to_hiragana(sounds)
31
35
  print "Hiragana => ".white
32
36
  puts word["hiragana"]
33
37
  print "Spanish => ".white
@@ -1,6 +1,6 @@
1
1
 
2
2
  module LearnJapanese
3
- VERSION = '0.8.2'
3
+ VERSION = '0.9.0'
4
4
  NAME = 'learn-japanese'
5
5
  HOMEPAGE = 'https://github.com/dvarrui/learn-japanese'
6
6
  end
@@ -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,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative 'learn-japanese/data/hiragana_test'
@@ -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.8.2
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-13 00:00:00.000000000 Z
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