learn-japanese 0.6.1 → 0.7.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: 9914d80e21c8c34c39ed26df234b08cd46b4c415cc1abf350cd765b7a356213a
4
- data.tar.gz: 31e75a97b121964b1ef3828ea751c82f9897594cba31763f8a9a35b0b96674b1
3
+ metadata.gz: 164745bdc76d66bff134ec0e06fb5fceef44fb480f9c266c32beb6342dfe252b
4
+ data.tar.gz: 9bea86b40b59102cad35e1749fc379e6c14b2384b9f6f6f4b0abcd29409c446b
5
5
  SHA512:
6
- metadata.gz: 568c67a6f8eb933bad67fc61c47fc0822c6cab94005df74f99bb0ee9415be7556c48faa5060f3dfc970b57bf9cdcaf5ddc16fa439a9baccb697bf701a8bc8059
7
- data.tar.gz: 6f9d1f6b74ad511b674454b9f0638b86cab521bbcb24936d69075205041ec30050fab11e291260eb44f2927be2d42020bdf2fd0e2fa0d1ab83356c917d6748a9
6
+ metadata.gz: a0b5cf252d1a7eefb8b3953a7285bb7a6ec99b1059c284f7f934ca7813307ba37f9297423a77498277750b1a6da17745bb1c200f7067607a45884c70edb9bb17
7
+ data.tar.gz: 37b4068955aa70702a166265a2e9482e9141da5404251f0888a1f2bce44337b9970f70edafd0adc5cf81d20574d2431533e795a9e158ca737d5f440645b7dec8
@@ -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
@@ -1,5 +1,5 @@
1
1
  require 'colorize'
2
- require_relative 'debug'
2
+ require_relative '../debug'
3
3
 
4
4
  # Silabario japonés
5
5
  class Hiragana
@@ -48,6 +48,36 @@ class Hiragana
48
48
  output
49
49
  end
50
50
 
51
+ def self.groups(levels)
52
+ return self.all if levels == :all
53
+ hiragana = {}
54
+ hiragana.merge! Hiragana.group1 if levels.include? 1
55
+ hiragana.merge! Hiragana.group2 if levels.include? 2
56
+ hiragana.merge! Hiragana.group3 if levels.include? 3
57
+ hiragana.merge! Hiragana.group4 if levels.include? 4
58
+ hiragana
59
+ end
60
+
61
+ def self.sounds_to_hiragana(sounds)
62
+ hiraganas = Hiragana.all
63
+ hiragana_array = sounds.map { hiraganas[_1.to_sym] || '*' }
64
+ hiragana = hiragana_array.join('')
65
+ end
66
+
67
+ def self.hiraganas_to_sound(hiraganas_input)
68
+ all_hiraganas = Hiragana.all
69
+
70
+ sounds_array = hiraganas_input.map do |hiragana_input|
71
+ sound = '*'
72
+ all_hiraganas.each_pair do |key, value|
73
+ sound = key if value == hiragana_input
74
+ end
75
+ sound
76
+ end
77
+
78
+ sounds_array.join('')
79
+ end
80
+
51
81
  def self.show_help(level=1)
52
82
  Debug.puts_line
53
83
  puts "Hiragana help\n".upcase.cyan
@@ -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
 
@@ -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
 
@@ -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.1'
3
+ VERSION = '0.7.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.1
4
+ version: 0.7.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-04-28 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:
@@ -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