traduce 0.1.0 → 0.1.2
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/.gitignore +2 -0
- data/.travis.yml +2 -0
- data/Guardfile +2 -0
- data/README.md +1 -1
- data/bin/console +0 -0
- data/lib/traduce.rb +4 -34
- data/lib/traduce/conjugation.rb +53 -0
- data/lib/traduce/verb.rb +38 -0
- data/lib/traduce/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84d930b8e9d4e6beb9bc54e91e0309992df644ec
|
4
|
+
data.tar.gz: 0749bb7984aedbc9ff2568aa2594729f1f94aa30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23cd4a5f5852c4a249ac240a6e9d5b58f1a2cbe7441a18e0a8ed9d125275e7c145ad82f79171b56407470ff9acc76765ce383149b3d9e1941cfe2b5a187b4fb4
|
7
|
+
data.tar.gz: 313661a721f625ae34a5bce8aacd6b36c09789a22adf63b5c98758c781831a2f11272c9b3c7f634ef226ccbe0f12b712f1f8d2ff2174d8e18b42473f46ccaf32
|
data/.travis.yml
CHANGED
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -38,7 +38,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
38
38
|
|
39
39
|
## Contributing
|
40
40
|
|
41
|
-
1. Fork it ( https://github.com/
|
41
|
+
1. Fork it ( https://github.com/pducks32/traduce/fork )
|
42
42
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
43
43
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
44
44
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/bin/console
CHANGED
File without changes
|
data/lib/traduce.rb
CHANGED
@@ -1,40 +1,10 @@
|
|
1
1
|
require "traduce/version"
|
2
|
-
require
|
2
|
+
require "traduce/verb"
|
3
|
+
require "traduce/conjugation"
|
3
4
|
|
4
5
|
module Traduce
|
5
|
-
def self.conjugate(verb,
|
6
|
+
def self.conjugate(verb, **conjugation_options)
|
6
7
|
verb = Verb.new(verb) unless verb.is_a? Verb
|
7
|
-
|
8
|
-
ending = verb.ar? ? "a" : "e"
|
9
|
-
suffix = person.eql?(3) ? "#{ending}" : "#{ending}s"
|
10
|
-
person.eql?(1) ? "o" : suffix
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class Verb < SimpleDelegator
|
15
|
-
|
16
|
-
def initialize(verb)
|
17
|
-
super
|
18
|
-
@verb = verb
|
19
|
-
end
|
20
|
-
|
21
|
-
def er?
|
22
|
-
ending == "er"
|
23
|
-
end
|
24
|
-
alias_method :er_verb?, :er?
|
25
|
-
|
26
|
-
def ar?
|
27
|
-
ending == "ar"
|
28
|
-
end
|
29
|
-
alias_method :ar_verb?, :ar?
|
30
|
-
|
31
|
-
def ir?
|
32
|
-
ending == "ir"
|
33
|
-
end
|
34
|
-
alias_method :ir_verb?, :ir?
|
35
|
-
|
36
|
-
def ending
|
37
|
-
@verb[-2, 2]
|
38
|
-
end
|
8
|
+
Conjugation.new(conjugation_options).conjugate(verb)
|
39
9
|
end
|
40
10
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Traduce
|
2
|
+
class Conjugation
|
3
|
+
|
4
|
+
attr_accessor :person, :plural, :tense, :mood, :voice
|
5
|
+
|
6
|
+
def initialize(person: nil, number: 1, plural: (number > 1), tense: :present, mood: :indictive, voice: :active)
|
7
|
+
@person, @plural, @tense, @mood, @voice = person, plural, tense, mood, voice
|
8
|
+
end
|
9
|
+
|
10
|
+
def conjugate(verb)
|
11
|
+
if plural?
|
12
|
+
return verb.stem + plural_ending(verb)
|
13
|
+
end
|
14
|
+
verb.gsub(/([e|a|i])r\Z/) do |m|
|
15
|
+
ending = verb.ar? ? "a" : "e"
|
16
|
+
suffix = person.eql?(3) ? "#{ending}" : "#{ending}s"
|
17
|
+
person.eql?(1) ? "o" : suffix
|
18
|
+
end
|
19
|
+
end
|
20
|
+
alias_method :call, :conjugate
|
21
|
+
|
22
|
+
def plural?
|
23
|
+
!!plural
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def plural_ending(verb)
|
29
|
+
case person
|
30
|
+
when 1 then nosotros_ending(verb)
|
31
|
+
when 2 then vosotros_ending(verb)
|
32
|
+
when 3 then ellos_ending(verb)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def nosotros_ending(verb)
|
37
|
+
verb.suffix_letter + "mos"
|
38
|
+
end
|
39
|
+
|
40
|
+
def ellos_ending(verb)
|
41
|
+
suffix_letter = verb.ar? ? "a" : "e"
|
42
|
+
suffix_letter + "n"
|
43
|
+
end
|
44
|
+
|
45
|
+
def vosotros_ending(verb)
|
46
|
+
case verb.suffix_letter
|
47
|
+
when "a" then "áis"
|
48
|
+
when "e" then "éis"
|
49
|
+
when "i" then "ís"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/traduce/verb.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'delegate'
|
2
|
+
|
3
|
+
module Traduce
|
4
|
+
class Verb < SimpleDelegator
|
5
|
+
|
6
|
+
def initialize(verb)
|
7
|
+
super
|
8
|
+
@verb = verb
|
9
|
+
end
|
10
|
+
|
11
|
+
def er?
|
12
|
+
ending == "er"
|
13
|
+
end
|
14
|
+
alias_method :er_verb?, :er?
|
15
|
+
|
16
|
+
def ar?
|
17
|
+
ending == "ar"
|
18
|
+
end
|
19
|
+
alias_method :ar_verb?, :ar?
|
20
|
+
|
21
|
+
def ir?
|
22
|
+
ending == "ir"
|
23
|
+
end
|
24
|
+
alias_method :ir_verb?, :ir?
|
25
|
+
|
26
|
+
def ending
|
27
|
+
@verb[-2, 2]
|
28
|
+
end
|
29
|
+
|
30
|
+
def suffix_letter
|
31
|
+
ending.chomp("r")
|
32
|
+
end
|
33
|
+
|
34
|
+
def stem
|
35
|
+
@verb.chomp ending
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/traduce/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traduce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Metcalfe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,6 +98,8 @@ files:
|
|
98
98
|
- bin/console
|
99
99
|
- bin/setup
|
100
100
|
- lib/traduce.rb
|
101
|
+
- lib/traduce/conjugation.rb
|
102
|
+
- lib/traduce/verb.rb
|
101
103
|
- lib/traduce/version.rb
|
102
104
|
- traduce.gemspec
|
103
105
|
homepage: https://github.com/pducks32/traduce
|