learn-japanese 0.5.0 → 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 +4 -4
- data/.ruby-version +1 -0
- data/README.md +20 -13
- data/bin/sounds-to-hiragana +1 -1
- data/lib/learn-japanese/cli.rb +12 -0
- data/lib/learn-japanese/data/dictionary.rb +11 -0
- data/lib/learn-japanese/{hiragana.rb → data/hiragana.rb} +34 -4
- data/lib/learn-japanese/data/words.yaml +33 -3
- data/lib/learn-japanese/debug.rb +5 -0
- data/lib/learn-japanese/game/choose-answer-game.rb +1 -1
- data/lib/learn-japanese/game/romanji-game.rb +47 -0
- data/lib/learn-japanese/game/short-answer-game.rb +1 -1
- data/lib/learn-japanese/game/sound-game.rb +23 -17
- data/lib/learn-japanese/version.rb +1 -1
- data/lib/learn-japanese.rb +10 -0
- metadata +6 -4
- data/lib/learn-japanese/dictionary.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 164745bdc76d66bff134ec0e06fb5fceef44fb480f9c266c32beb6342dfe252b
|
4
|
+
data.tar.gz: 9bea86b40b59102cad35e1749fc379e6c14b2384b9f6f6f4b0abcd29409c446b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0b5cf252d1a7eefb8b3953a7285bb7a6ec99b1059c284f7f934ca7813307ba37f9297423a77498277750b1a6da17745bb1c200f7067607a45884c70edb9bb17
|
7
|
+
data.tar.gz: 37b4068955aa70702a166265a2e9482e9141da5404251f0888a1f2bce44337b9970f70edafd0adc5cf81d20574d2431533e795a9e158ca737d5f440645b7dec8
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.1.0
|
data/README.md
CHANGED
@@ -1,25 +1,32 @@
|
|
1
1
|
|
2
2
|
[](https://badge.fury.io/rb/learn-japanese)
|
3
3
|
|
4
|
-
#
|
4
|
+
# Learn Japanese
|
5
5
|
|
6
|
-
`learn-japanese`
|
7
|
-
De momento, sólo se está empezando a implementar la funcionalidad para aprender el Silabario Hiragana, pero poco a poco irá creciendo a medida que yo mismo aprenda más japonés.
|
6
|
+
`learn-japanese` helps us to learn japanese.
|
8
7
|
|
9
|
-
|
10
|
-
1. Debes tener Ruby instalado en tu equipo.
|
11
|
-
2. Abrir un terminal y ejecutar `sudo gem install learn-japanese`, para instalar la herramienta.
|
8
|
+
> WARNING: just only Hiragana (groups 1-4) for now.
|
12
9
|
|
13
|
-
|
10
|
+
Every few week will be grow with more functions... at the same time I'm learning too... I hope.
|
14
11
|
|
15
|
-
|
16
|
-
* Ejecutar `short-answer-game`, para el juego de preguntas donde debemos escribir la respuesta.
|
17
|
-
* Ejecutar `choose-answer-game`, para el juego de preguntas donde debemos elegir la respuesta correcta.
|
18
|
-
* `sounds-to-hiragana`, pasar sonidos a Hiragana.
|
12
|
+
## Installation
|
19
13
|
|
20
|
-
|
14
|
+
1. Install Ruby on your system.
|
15
|
+
2. Open a terminal and run `sudo gem install learn-japanese`, to install the Ruby gem.
|
21
16
|
|
22
|
-
|
17
|
+
## Usage
|
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 |
|
28
|
+
|
29
|
+
# ANEXO
|
23
30
|
|
24
31
|
## Hiragana
|
25
32
|
|
data/bin/sounds-to-hiragana
CHANGED
data/lib/learn-japanese/cli.rb
CHANGED
@@ -21,4 +21,16 @@ class CLI < Thor
|
|
21
21
|
def short_answer(level)
|
22
22
|
LearnJapanese.short_answer(level.to_i)
|
23
23
|
end
|
24
|
+
|
25
|
+
map ['so', '-so', '--sound', 'sound'] => 'sound'
|
26
|
+
desc 'sound', 'Write sounds and get the Hiragana'
|
27
|
+
def sound
|
28
|
+
LearnJapanese.sound
|
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
|
24
36
|
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
|
@@ -24,7 +24,7 @@ class Hiragana
|
|
24
24
|
|
25
25
|
def self.group3
|
26
26
|
{ sa: "\u{3055}",
|
27
|
-
|
27
|
+
shi: "\u{3057}",
|
28
28
|
su: "\u{3059}",
|
29
29
|
se: "\u{305B}",
|
30
30
|
so: "\u{305D}"
|
@@ -33,8 +33,8 @@ class Hiragana
|
|
33
33
|
|
34
34
|
def self.group4
|
35
35
|
{ ta: "\u{305F}",
|
36
|
-
|
37
|
-
|
36
|
+
chi: "\u{3061}",
|
37
|
+
tsu: "\u{3064}",
|
38
38
|
te: "\u{3066}",
|
39
39
|
to: "\u{3068}"
|
40
40
|
}
|
@@ -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
|
@@ -1,19 +1,49 @@
|
|
1
1
|
---
|
2
|
-
- sounds: e
|
3
|
-
hiragana: え
|
4
|
-
spanish: pintura
|
5
2
|
- sounds: ái
|
6
3
|
hiragana: あい
|
7
4
|
spanish: amor
|
5
|
+
- sounds: áka
|
6
|
+
hiragana: あか
|
7
|
+
spanish: rojo
|
8
8
|
- sounds: áo
|
9
9
|
hiragana: あお
|
10
10
|
spanish: azul
|
11
|
+
- sounds: e
|
12
|
+
hiragana: え
|
13
|
+
spanish: pintura
|
14
|
+
- sounds: éki
|
15
|
+
hiragana: えき
|
16
|
+
spanish: estación de tren
|
11
17
|
- sounds: ié
|
12
18
|
hiragana: いえ
|
13
19
|
spanish: casa
|
14
20
|
- sounds: íi
|
15
21
|
hiragana: いい
|
16
22
|
spanish: bien
|
23
|
+
- sounds: i-e
|
24
|
+
hiragana: いいえ
|
25
|
+
spanish: 'no'
|
17
26
|
- sounds: ué
|
18
27
|
hiragana: うえ
|
19
28
|
spanish: arriba
|
29
|
+
- sounds: ka
|
30
|
+
hiragana: か
|
31
|
+
spanish: mosquito
|
32
|
+
- sounds: kaó
|
33
|
+
hiragana: かお
|
34
|
+
spanish: cara
|
35
|
+
- sounds: ki
|
36
|
+
hiragana: き
|
37
|
+
spanish: árbol
|
38
|
+
- sounds: kíkai
|
39
|
+
hiragana: きかい
|
40
|
+
spanish: máquina, oportunidad
|
41
|
+
- sounds: áisatsu
|
42
|
+
hiragana: あいさつ
|
43
|
+
spanish: salud
|
44
|
+
- sounds: áisatsu wo suru
|
45
|
+
hiragana: あいさつをする
|
46
|
+
spanish: saludar
|
47
|
+
- sounds: ohayou
|
48
|
+
hiragana: おはよう
|
49
|
+
spanish: Buenos días (casual)
|
data/lib/learn-japanese/debug.rb
CHANGED
@@ -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,33 +1,39 @@
|
|
1
1
|
|
2
|
-
require_relative '../hiragana'
|
3
|
-
require_relative '../dictionary'
|
4
2
|
require 'colorize'
|
3
|
+
require_relative '../debug'
|
4
|
+
require_relative '../data/dictionary'
|
5
|
+
require_relative '../data/hiragana'
|
5
6
|
|
6
7
|
module SoundGame
|
7
8
|
|
8
9
|
def self.to_hiragana(sounds)
|
9
|
-
|
10
|
+
hiragana = Hiragana.sounds_to_hiragana(sounds)
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
none = {'hiragana': hiragana, 'spanish': '?', 'sounds': '?'}
|
15
|
-
words = Dictionary.new.words
|
12
|
+
none = {'hiragana' => hiragana, 'spanish' => '?', 'sounds' => '?'}
|
13
|
+
words = Dictionary.words
|
16
14
|
word = (words.select {_1["hiragana"] == hiragana})[0] || none
|
17
15
|
|
18
16
|
word
|
19
17
|
end
|
20
18
|
|
21
|
-
def self.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
def self.run
|
20
|
+
Debug.puts_line
|
21
|
+
puts "SOUNDS TO HIRAGANA".light_cyan
|
22
|
+
puts "Example: a i => あい (amor - ái)".blue
|
23
|
+
Debug.puts_line
|
24
|
+
|
25
|
+
loop do
|
26
|
+
print "\nWrite sounds ? ".light_yellow
|
27
|
+
sounds = STDIN.gets.chomp.split
|
28
|
+
return if sounds.empty?
|
29
|
+
|
27
30
|
word = self.to_hiragana(sounds)
|
28
|
-
|
29
|
-
puts
|
30
|
-
|
31
|
+
print "Hiragana => ".white
|
32
|
+
puts word["hiragana"]
|
33
|
+
print "Spanish => ".white
|
34
|
+
puts word["spanish"]
|
35
|
+
print "Pronounce => ".white
|
36
|
+
puts word["sounds"]
|
31
37
|
end
|
32
38
|
end
|
33
39
|
|
data/lib/learn-japanese.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
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
|
+
require_relative 'learn-japanese/game/sound-game'
|
6
|
+
require_relative 'learn-japanese/game/romanji-game'
|
5
7
|
|
6
8
|
module LearnJapanese
|
7
9
|
|
@@ -25,4 +27,12 @@ module LearnJapanese
|
|
25
27
|
ShortAnswerGame.show_help(level)
|
26
28
|
ShortAnswerGame.new(level).run
|
27
29
|
end
|
30
|
+
|
31
|
+
def self.sound
|
32
|
+
SoundGame.run
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.romanji
|
36
|
+
RomanjiGame.new.run
|
37
|
+
end
|
28
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.
|
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-
|
11
|
+
date: 2022-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -49,6 +49,7 @@ extensions: []
|
|
49
49
|
extra_rdoc_files: []
|
50
50
|
files:
|
51
51
|
- ".gitignore"
|
52
|
+
- ".ruby-version"
|
52
53
|
- Gemfile
|
53
54
|
- LICENSE
|
54
55
|
- README.md
|
@@ -62,13 +63,14 @@ files:
|
|
62
63
|
- learn-japanese.gemspec
|
63
64
|
- lib/learn-japanese.rb
|
64
65
|
- lib/learn-japanese/cli.rb
|
66
|
+
- lib/learn-japanese/data/dictionary.rb
|
67
|
+
- lib/learn-japanese/data/hiragana.rb
|
65
68
|
- lib/learn-japanese/data/words.yaml
|
66
69
|
- lib/learn-japanese/debug.rb
|
67
|
-
- lib/learn-japanese/dictionary.rb
|
68
70
|
- lib/learn-japanese/game/choose-answer-game.rb
|
71
|
+
- lib/learn-japanese/game/romanji-game.rb
|
69
72
|
- lib/learn-japanese/game/short-answer-game.rb
|
70
73
|
- lib/learn-japanese/game/sound-game.rb
|
71
|
-
- lib/learn-japanese/hiragana.rb
|
72
74
|
- lib/learn-japanese/version.rb
|
73
75
|
homepage: https://github.com/dvarrui/learn-japanese
|
74
76
|
licenses:
|