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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7b62dfb65953b052a27c939de90b03db7515ea6
4
- data.tar.gz: e9163ce1a3f951e2be444086c99d5b8c3b0aa8c2
3
+ metadata.gz: 84d930b8e9d4e6beb9bc54e91e0309992df644ec
4
+ data.tar.gz: 0749bb7984aedbc9ff2568aa2594729f1f94aa30
5
5
  SHA512:
6
- metadata.gz: 3768f7ec6480ccec0885f83e1633f0641cd2f56f1fc8c7202477c452f38a012a22719a83b424cff50e846b12706f7ab1da716638c50ff86c685afb1e8697e98c
7
- data.tar.gz: ba6e52c48ee4e62ec5295ada5b06167c3614afd9a03b6c9227ffdf680b98a501cf5917a71e703b3a93b46ef9d911cdee7db8c57c5455da38f06a7f0adad6632d
6
+ metadata.gz: 23cd4a5f5852c4a249ac240a6e9d5b58f1a2cbe7441a18e0a8ed9d125275e7c145ad82f79171b56407470ff9acc76765ce383149b3d9e1941cfe2b5a187b4fb4
7
+ data.tar.gz: 313661a721f625ae34a5bce8aacd6b36c09789a22adf63b5c98758c781831a2f11272c9b3c7f634ef226ccbe0f12b712f1f8d2ff2174d8e18b42473f46ccaf32
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ *.gem
@@ -4,3 +4,5 @@ rvm:
4
4
  addons:
5
5
  code_climate:
6
6
  repo_token: dfe79b3cc8f63242aecb9cb046c8f4598d2cfae275a146754ab691143a01dedb
7
+ notifications:
8
+ email: false
data/Guardfile CHANGED
@@ -46,5 +46,7 @@ guard :rspec, cmd: "bundle exec rspec" do
46
46
 
47
47
  # Ruby files
48
48
  ruby = dsl.ruby
49
+ watch(ruby.lib_files)
49
50
  dsl.watch_spec_files_for(ruby.lib_files)
51
+
50
52
  end
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/[my-github-username]/traduce/fork )
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`)
File without changes
@@ -1,40 +1,10 @@
1
1
  require "traduce/version"
2
- require 'delegate'
2
+ require "traduce/verb"
3
+ require "traduce/conjugation"
3
4
 
4
5
  module Traduce
5
- def self.conjugate(verb, person:, number: 1, tense: :present, mood: :indictive, voice: :active)
6
+ def self.conjugate(verb, **conjugation_options)
6
7
  verb = Verb.new(verb) unless verb.is_a? Verb
7
- verb.gsub(/([e|a|i])r\Z/) do |m|
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Traduce
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
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.0
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-16 00:00:00.000000000 Z
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