learn-japanese 0.6.1 → 0.7.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: 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