respanol 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/Gemfile.lock +4 -1
- data/Guardfile +1 -1
- data/README.md +118 -5
- data/lib/respanol/ano.rb +2 -2
- data/lib/respanol/examenes/conjugacion_examen.rb +1 -1
- data/lib/respanol/examenes/examen_base.rb +8 -0
- data/lib/respanol/examenes/fecha_examen.rb +1 -1
- data/lib/respanol/examenes/hora_examen.rb +1 -2
- data/lib/respanol/examenes/numero_examen.rb +6 -1
- data/lib/respanol/impresion.rb +10 -4
- data/lib/respanol/numero.rb +4 -4
- data/lib/respanol/verbos/cantar.rb +7 -0
- data/lib/respanol/verbos/correr.rb +7 -0
- data/lib/respanol/verbos/describir.rb +7 -0
- data/lib/respanol/verbos/escribir.rb +7 -0
- data/lib/respanol/verbos/escuchar.rb +7 -0
- data/lib/respanol/verbos/nadar.rb +7 -0
- data/lib/respanol/verbos/querer.rb +7 -0
- data/lib/respanol/verbos/trabajar.rb +7 -0
- data/lib/respanol/version.rb +1 -1
- data/respanol.gemspec +0 -1
- data/spec/respanol/impresion_spec.rb +6 -5
- metadata +11 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9e5972b737d1d8b180da611aa4364daf00b7e5c
|
4
|
+
data.tar.gz: 3d0d5a36190505bdf44b6bd60b31ff6f10616086
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb1adbda60892e8fd07742c1f5764c8ad483e8caeb70364de8922dbf999a919d679ab3c8485ea0d2fbc2ccc5d13b4fa110e9b5f9ae69aa4ea1b115f31e505438
|
7
|
+
data.tar.gz: 6ed047a3e2bc8fe5dedfd67a2212cc8cd4f7f5728dd85f88ebca408f180f8797ce297176f2a7343c2749f9d959937464450c34f36420ec11e7e5eeede6600d09
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -2,11 +2,13 @@ PATH
|
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
4
|
respanol (0.0.1)
|
5
|
-
glosbe (
|
5
|
+
glosbe (~> 0.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
+
codeclimate-test-reporter (1.0.7)
|
11
|
+
simplecov
|
10
12
|
coderay (1.1.1)
|
11
13
|
diff-lcs (1.3)
|
12
14
|
docile (1.1.5)
|
@@ -83,6 +85,7 @@ PLATFORMS
|
|
83
85
|
ruby
|
84
86
|
|
85
87
|
DEPENDENCIES
|
88
|
+
codeclimate-test-reporter (~> 1.0.0)
|
86
89
|
glosbe
|
87
90
|
guard
|
88
91
|
guard-bundler
|
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
+
[![Gem Version](https://badge.fury.io/rb/respanol.svg)](https://badge.fury.io/rb/respanol)
|
2
|
+
[![Test Coverage](https://codeclimate.com/github/tiev/respanol/badges/coverage.svg)](https://codeclimate.com/github/tiev/respanol/coverage)
|
3
|
+
[![Code Climate](https://codeclimate.com/github/tiev/respanol/badges/gpa.svg)](https://codeclimate.com/github/tiev/respanol)
|
4
|
+
|
1
5
|
# Respanol
|
2
6
|
Some ruby scripts to help learning Espanol.
|
3
7
|
These scripts are developed while I started studying Spanish.
|
4
8
|
|
5
|
-
**IN PROGRESS**: some might not be correct for whole situations but so far it's coped with what I've learnt
|
9
|
+
**IN PROGRESS**: some might not be correct for whole situations but so far it's coped with what I've learnt about Español
|
6
10
|
|
7
11
|
# What's included?
|
8
12
|
These scripts test your Espanol knownledge in many aspects:
|
@@ -13,9 +17,118 @@ These scripts test your Espanol knownledge in many aspects:
|
|
13
17
|
* Months of the year
|
14
18
|
* Verb Conjugations
|
15
19
|
|
16
|
-
#
|
17
|
-
You should have installed Ruby.
|
20
|
+
# Installation
|
21
|
+
You should have installed Ruby.
|
22
|
+
|
23
|
+
Install respanol gem: `gem install respanol`
|
24
|
+
|
25
|
+
Require: `require 'respanol'`
|
26
|
+
|
27
|
+
Then, enjoy studying!
|
28
|
+
|
29
|
+
# Features & Exams
|
30
|
+
|
31
|
+
## Test your number reading and writing
|
32
|
+
|
33
|
+
Using `Respanol::Examen::NumeroExamen`
|
34
|
+
|
35
|
+
Test reading a random number in a range
|
36
|
+
|
37
|
+
`Respanol::Examen::NumeroExamen.new.leer(<rango>)`
|
38
|
+
|
39
|
+
* **rango**: ruby range or maximum (excluded) number. Default: `(1...100)`
|
40
|
+
|
41
|
+
Examples:
|
42
|
+
```ruby
|
43
|
+
> Respanol::Examen::NumeroExamen.new.leer
|
44
|
+
> cincuenta y tres = 53
|
45
|
+
=> Muy bien!
|
46
|
+
> Respanol::Examen::NumeroExamen.new.leer(10)
|
47
|
+
> cinco = 3
|
48
|
+
=> No!
|
49
|
+
cinco = 5
|
50
|
+
=> Muy bien!
|
51
|
+
```
|
52
|
+
|
53
|
+
Test writing a random number in a range
|
54
|
+
|
55
|
+
`Respanol::Examen::NumeroExamen.new.escribir(<rango>)`
|
56
|
+
|
57
|
+
* **rango**: ruby range or maximum (excluded) number. Default: `(1...100)`
|
58
|
+
|
59
|
+
Examples:
|
60
|
+
```ruby
|
61
|
+
> Respanol::Examen::NumeroExamen.new.escribir
|
62
|
+
> 64 = sesenta y cuatro
|
63
|
+
=> Muy bien!
|
64
|
+
```
|
65
|
+
|
66
|
+
You can configure the test to use feminine number or default maximum
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
> Respanol::Examen::NumeroExamen.new.tap { |e| e.feminino!.maximo = 50 }.leer
|
70
|
+
```
|
71
|
+
is the same as:
|
72
|
+
```ruby
|
73
|
+
> e = Respanol::Examen::NumeroExamen.new.feminino
|
74
|
+
> e.leer(50)
|
75
|
+
> e.escribir(50)
|
76
|
+
```
|
77
|
+
|
78
|
+
## Verbs Conjugations
|
79
|
+
In this version, these exams support present tense only.
|
80
|
+
|
81
|
+
All verbs implemented is in namespace `Respanol::Verbo`.
|
82
|
+
|
83
|
+
Test verbs conjugations:
|
84
|
+
|
85
|
+
`Respanol::Examen::ConjugacionExamen.new.conjugado(<verbos>)`
|
86
|
+
|
87
|
+
* **verbos**: accept a single verb class or an array of verb classes to be tested
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
> Respanol::Examen::ConjugacionExamen.new.conjugado(Respanol::Verbo::Poder)
|
91
|
+
Poder:: > Tu puedes
|
92
|
+
=> Muy bien!
|
93
|
+
```
|
94
|
+
|
95
|
+
You can configure a default list of verbs:
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
Respanol::Examen::ConjugacionExamen.new([Respanol::Verbo::Poder, Respanol::Verbo::Tener]).conjugado
|
99
|
+
Poder:: > Yo puedo
|
100
|
+
=> Muy bien!
|
101
|
+
Tener:: > Nosotros tenemos
|
102
|
+
=> Muy bien!
|
103
|
+
```
|
104
|
+
|
105
|
+
## Repeat a test many times
|
106
|
+
|
107
|
+
You can repeat a test many times to practice more:
|
108
|
+
|
109
|
+
`Respanol::Examen::ConjugacionExamen.gaza(<conde>, [<test instance>])`
|
110
|
+
|
111
|
+
Method gaza works with all Respanol::Examen classes.
|
112
|
+
|
113
|
+
Example: 3 following snippets have the same effect - test conjugation for Poder 5 times.
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
Respanol::Examen::ConjugacionExamen.gaza(5) do |t|
|
117
|
+
t.conjugado(Respanol::Verbo::Poder)
|
118
|
+
end
|
119
|
+
```
|
120
|
+
|
121
|
+
or
|
122
|
+
|
123
|
+
```ruby
|
124
|
+
t = Respanol::Examen::ConjugacionExamen.new(Respanol::Verbo::Poder)
|
125
|
+
Respanol::Examen::ConjugacionExamen.gaza(5, t)
|
126
|
+
```
|
127
|
+
|
128
|
+
or
|
18
129
|
|
19
|
-
|
130
|
+
```ruby
|
131
|
+
Respanol::Examen::ConjugacionExamen.new(Respanol::Verbo::Poder).gaza(5)
|
132
|
+
```
|
20
133
|
|
21
|
-
|
134
|
+
If no repeat count given to `gaza()`, the default is `50`
|
data/lib/respanol/ano.rb
CHANGED
@@ -20,6 +20,14 @@ module Respanol
|
|
20
20
|
self.class.gaza(conde, self, &Proc.new)
|
21
21
|
end
|
22
22
|
|
23
|
+
def self.emparejar?(s1, s2)
|
24
|
+
s1.gsub(/\s+/, ' ').strip.downcase == s2.gsub(/\s+/, ' ').strip.downcase
|
25
|
+
end
|
26
|
+
|
27
|
+
def emparejar?(*args)
|
28
|
+
self.class.emparejar?(*args)
|
29
|
+
end
|
30
|
+
|
23
31
|
def ensayar(*args)
|
24
32
|
print "> "
|
25
33
|
exito = true
|
@@ -14,7 +14,7 @@ module Respanol
|
|
14
14
|
def escribir(fecha_rango = (Date.civil(1900,1,1)..Date.today))
|
15
15
|
fe = rand(fecha_rango)
|
16
16
|
ensayar("Fecha #{fe.strftime('%A %Y-%m-%d')}: ") do |v|
|
17
|
-
v
|
17
|
+
emparejar?(v, Fecha.fecha_en_palabras(fe))
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -16,8 +16,7 @@ module Respanol
|
|
16
16
|
fe = Date.today
|
17
17
|
ho = Time.local(fe.year, fe.month, fe.day, rand(from..to), rand(0..60), rand(0..60))
|
18
18
|
ensayar("#{ho.strftime('%I:%M:%S %p')} = ") do |v|
|
19
|
-
v.
|
20
|
-
Hora.responder_hora_en_palabras(ho).downcase
|
19
|
+
emparejar?(v, Hora.responder_hora_en_palabras(ho))
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
@@ -2,6 +2,7 @@ module Respanol
|
|
2
2
|
module Examen
|
3
3
|
class NumeroExamen < ExamenBase
|
4
4
|
attr_accessor :klase
|
5
|
+
attr_writer :maximo
|
5
6
|
|
6
7
|
MAXIMO = 100
|
7
8
|
|
@@ -20,7 +21,11 @@ module Respanol
|
|
20
21
|
self
|
21
22
|
end
|
22
23
|
|
23
|
-
def
|
24
|
+
def maximo
|
25
|
+
@maximo || MAXIMO
|
26
|
+
end
|
27
|
+
|
28
|
+
def leer(rango = (1...maximo))
|
24
29
|
num = rand(rango)
|
25
30
|
ensayar("#{@klase.numero_en_palabras(num)} = ") do |v|
|
26
31
|
v.to_i == num
|
data/lib/respanol/impresion.rb
CHANGED
@@ -1,18 +1,24 @@
|
|
1
1
|
module Respanol
|
2
2
|
module Impresion
|
3
3
|
module ClassMethods
|
4
|
-
def prefijo
|
5
|
-
print "#{
|
4
|
+
def prefijo(klase)
|
5
|
+
print "#{klase.name.split('::').last}:: "
|
6
6
|
end
|
7
7
|
|
8
|
-
def impresion(*args)
|
9
|
-
prefijo
|
8
|
+
def impresion(klase, *args)
|
9
|
+
prefijo(klase)
|
10
10
|
print(*args)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
module InstanceMethods
|
15
|
+
def prefijo(*args)
|
16
|
+
self.class.prefijo(*args)
|
17
|
+
end
|
15
18
|
|
19
|
+
def impresion(*args)
|
20
|
+
self.class.impresion(*args)
|
21
|
+
end
|
16
22
|
end
|
17
23
|
|
18
24
|
def self.included(receiver)
|
data/lib/respanol/numero.rb
CHANGED
@@ -2,10 +2,10 @@ module Respanol
|
|
2
2
|
class Numero
|
3
3
|
UNIDADES = %w( cero uno dos tres cuatro cinco seis siete ocho nueve )
|
4
4
|
DECENA = %w( diez once doce trece catorce quince dieciseis diecisiete dieciocho diecinueve )
|
5
|
-
DECENAS = %
|
6
|
-
CENTENARES = %
|
5
|
+
DECENAS = %w[ diez viente treinta cuarenta cincuenta sesenta setenta ochenta noventa ].unshift('')
|
6
|
+
CENTENARES = %w[ ciento doscientos trescientos cuatrocientos quinientos seiscientos setecientos ochocientos novecientos ].unshift('')
|
7
7
|
UNO_APOCOPE = 'un'
|
8
|
-
MILLONS = %
|
8
|
+
MILLONS = %w[ millon billon trillon cuatrillon quintillon sextillon septillon octillon nonillon decillon undecillon duodecillon tredecillon cuatordecillon quindecillon sexdecillon septendecillon octodecillon novendecillon vigintillon ].unshift('')
|
9
9
|
UNIDAD_1K = 'mil'
|
10
10
|
DECIMAL = 'coma'
|
11
11
|
|
@@ -96,7 +96,7 @@ module Respanol
|
|
96
96
|
|
97
97
|
class FemininoNumero < Numero
|
98
98
|
UNIDADES = %w( cero una dos tres cuatro cinco seis siete ocho nueve )
|
99
|
-
CENTENARES = %
|
99
|
+
CENTENARES = %w[ ciento doscientas trescientas cuatrocientas quinientas seiscientas setecientas ochocientas novecientas ].unshift('')
|
100
100
|
UNO_APOCOPE = 'una'
|
101
101
|
end
|
102
102
|
end
|
data/lib/respanol/version.rb
CHANGED
data/respanol.gemspec
CHANGED
@@ -13,7 +13,6 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.description = 'Makes learning Spanish fun and easy! With all the core and tests'
|
14
14
|
s.homepage = 'https://github.com/tiev/respanol'
|
15
15
|
|
16
|
-
|
17
16
|
s.required_ruby_version = '>= 1.9.0'
|
18
17
|
|
19
18
|
s.add_runtime_dependency 'glosbe', '~> 0.0'
|
@@ -1,15 +1,16 @@
|
|
1
1
|
RSpec.describe Respanol::Impresion do
|
2
2
|
before :all do
|
3
|
-
|
4
|
-
|
3
|
+
ImpresionKlase = Class.new.include(Respanol::Impresion)
|
4
|
+
Klase = Class.new
|
5
|
+
Respanol::KlaseInterna = Class.new
|
5
6
|
end
|
6
7
|
|
7
8
|
describe '.prefijo' do
|
8
|
-
it { expect {
|
9
|
-
it { expect { Respanol::KlaseInterna
|
9
|
+
it { expect { ImpresionKlase.prefijo(Klase) }.to output('Klase:: ').to_stdout }
|
10
|
+
it { expect { ImpresionKlase.prefijo(Respanol::KlaseInterna) }.to output('KlaseInterna:: ').to_stdout }
|
10
11
|
end
|
11
12
|
|
12
13
|
describe '.impresion' do
|
13
|
-
it { expect {
|
14
|
+
it { expect { ImpresionKlase.impresion(Klase, 'test') }.to output('Klase:: test').to_stdout }
|
14
15
|
end
|
15
16
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: respanol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Drake Tran
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glosbe
|
@@ -126,17 +126,25 @@ files:
|
|
126
126
|
- lib/respanol/traductor.rb
|
127
127
|
- lib/respanol/verbos/aprender.rb
|
128
128
|
- lib/respanol/verbos/caminar.rb
|
129
|
+
- lib/respanol/verbos/cantar.rb
|
130
|
+
- lib/respanol/verbos/correr.rb
|
131
|
+
- lib/respanol/verbos/describir.rb
|
129
132
|
- lib/respanol/verbos/dormir.rb
|
130
133
|
- lib/respanol/verbos/entender.rb
|
134
|
+
- lib/respanol/verbos/escribir.rb
|
135
|
+
- lib/respanol/verbos/escuchar.rb
|
131
136
|
- lib/respanol/verbos/hablar.rb
|
132
137
|
- lib/respanol/verbos/hacer.rb
|
133
138
|
- lib/respanol/verbos/jugar.rb
|
134
139
|
- lib/respanol/verbos/leer.rb
|
140
|
+
- lib/respanol/verbos/nadar.rb
|
135
141
|
- lib/respanol/verbos/poder.rb
|
142
|
+
- lib/respanol/verbos/querer.rb
|
136
143
|
- lib/respanol/verbos/ser.rb
|
137
144
|
- lib/respanol/verbos/subir.rb
|
138
145
|
- lib/respanol/verbos/tener.rb
|
139
146
|
- lib/respanol/verbos/tocar.rb
|
147
|
+
- lib/respanol/verbos/trabajar.rb
|
140
148
|
- lib/respanol/verbos/verbo_base.rb
|
141
149
|
- lib/respanol/verbos/viajar.rb
|
142
150
|
- lib/respanol/verbos/vivir.rb
|
@@ -172,10 +180,4 @@ rubygems_version: 2.4.8
|
|
172
180
|
signing_key:
|
173
181
|
specification_version: 4
|
174
182
|
summary: Makes learning Spanish fun and easy!
|
175
|
-
test_files:
|
176
|
-
- spec/respanol/fecha_spec.rb
|
177
|
-
- spec/respanol/hora_spec.rb
|
178
|
-
- spec/respanol/impresion_spec.rb
|
179
|
-
- spec/respanol/numero_spec.rb
|
180
|
-
- spec/respanol_spec.rb
|
181
|
-
- spec/spec_helper.rb
|
183
|
+
test_files: []
|