learn-japanese 0.8.1 → 0.9.1

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: c5265cf2cdc7e5919c77300d3bc624ea0e98dcc64310ebe21b08c343319fee93
4
- data.tar.gz: ced6eb30b6fba2e4d744bb5015b76619a03335a90bb3a5182bc072c5333b2ce9
3
+ metadata.gz: 52da24b46602b78c834c0280da97b1a4d3fcdb986ead6c0f665c48b78679aa7e
4
+ data.tar.gz: c589d470bd68118718a8bc79d59e526ff44e00bfcedda02e5ce1959d47871dbd
5
5
  SHA512:
6
- metadata.gz: 5d43d584404ae0defbb6afc81d6c5c296fff3bf9f7219af373145fc2a298c82ec33b0a9df7752bafab0067bd4272505e5f868961bf146a97fca8554278fd355d
7
- data.tar.gz: b4bfd549d68de45944a27abc45e21d70f835b7881f85fa55b775a559047c1c3e48391ac89dab431e20539c38a88f6d800d5c15d84de254daa0b62805d760ac15
6
+ metadata.gz: f668ae54250703582c1d5bf55ae7df621e34c4dbaabbd3e932e5dc7de67cf49169c5736b043532d7961bf544baf87185298d29d4a6ef974c81e56cbb53ae6062
7
+ data.tar.gz: 9b79d2ecd8d5aca62e4339511caa5f872fd884ca8d57067f1318671ef286c49a1f3e59db3ee9562f4d4219a51a7e151658cab9b68c2f3d1f6c0f58b318a14bd1
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
 
@@ -11,25 +11,29 @@ 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-6'
15
- def choose_answer(level)
16
- LearnJapanese.choose_answer(level.to_i)
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
- desc 'short-answer [LEVEL]', 'LEVEL = 1-6'
21
- def short_answer(level)
22
- LearnJapanese.short_answer(level.to_i)
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'
26
- desc 'sound', 'Write sounds and get the Hiragana'
30
+ desc 'sound', 'Util: Write sounds and show Hiragana'
27
31
  def sound
28
32
  LearnJapanese.sound
29
33
  end
30
34
 
31
35
  map ['ro', '-ro', '--romanji' ] => 'romaji'
32
- desc 'romaji', 'Write Romaji for Hiragana word'
36
+ desc 'romaji', 'You have to Write Romaji for every Hiragana word'
33
37
  def romaji
34
38
  LearnJapanese.romaji
35
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.1'
3
+ VERSION = '0.9.1'
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.1
4
+ version: 0.9.1
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-22 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