traduce 0.1.0 → 0.1.2

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
  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