nelson 0.4.1 → 0.5.0

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: 505266cdf76433347a2a7142af7bd5b4478c13d8
4
- data.tar.gz: 0d0390a1c7b3c08773a36ed1094c3f145abb46b1
3
+ metadata.gz: 3fc4c34810d4cde8b5d8fc7228708acd891b3442
4
+ data.tar.gz: 4fecf9537288391a76e32187c6de46d7e6c9daff
5
5
  SHA512:
6
- metadata.gz: 7efe402a4c0b0c131c04716cfeec79b7674c6841add263709c097cf040c5af7cf153cb2af328cd916ccaa138dfd933b8302ca30c31a45cbfba190df873e8e2b6
7
- data.tar.gz: e085f27abeb6224d77fbde17df79f1f373be8b8ca13254d2b3688d21d7e7d49987fdb69d888792b2eb7a96e4ad40f895fea1d9087f99de3a2a2c80ba0c9c71c4
6
+ metadata.gz: d0510cb77e8a7876983137d7dc3609a3e50a767dc00820b22466dc468429e30d32d298929294af5f3dd72cb51fafd0b6bd8617e4b9d5a7b9a2bf6206092f86fc
7
+ data.tar.gz: 9c76ba2a597640269f2add63dd51f45a712f59e4b37177e265c97487f874bd03b77e975afae2064f0cee288188df95d583a32ee8a6e89b13ef44072ea083557e
data/lib/nelson/dsl.rb CHANGED
@@ -10,5 +10,14 @@ module Nelson
10
10
  def sum_of(*terms)
11
11
  AdditionExpressionBuilder.new(*terms)
12
12
  end
13
+
14
+ def quotient_of(*terms)
15
+ DivisionExpressionBuilder.new(*terms)
16
+ end
17
+
18
+ def difference_of(*terms)
19
+ SubtractionExpressionBuilder.new(*terms)
20
+ end
21
+ alias :difference_between :difference_of
13
22
  end
14
23
  end
@@ -26,6 +26,12 @@ module Nelson
26
26
  SubtractionExpression.new(rhs_value, lhs_value).call
27
27
  end
28
28
 
29
+ def /(term)
30
+ rhs_value = self.call
31
+ lhs_value = try_to_eval term
32
+ DivisionExpression.new(rhs_value, lhs_value).call
33
+ end
34
+
29
35
  private
30
36
 
31
37
  def try_to_eval(term)
@@ -36,4 +42,5 @@ module Nelson
36
42
  autoload :MultipicationExpression, "nelson/expressions/multipication_expression"
37
43
  autoload :AdditionExpression, "nelson/expressions/addition_expression"
38
44
  autoload :SubtractionExpression, "nelson/expressions/subtraction_expression"
45
+ autoload :DivisionExpression, "nelson/expressions/division_expression"
39
46
  end
@@ -24,9 +24,14 @@ module Nelson
24
24
  def minus(term)
25
25
  SubtractionExpressionBuilder.new(self, term)
26
26
  end
27
+
28
+ def divided_by(term)
29
+ DivisionExpressionBuilder.new(self, term)
30
+ end
27
31
  end
28
32
 
29
33
  autoload :MultipicationExpressionBuilder, "nelson/expression_builders/multipication_expression_builder"
30
34
  autoload :AdditionExpressionBuilder, "nelson/expression_builders/addition_expression_builder"
31
35
  autoload :SubtractionExpressionBuilder, "nelson/expression_builders/subtraction_expression_builder"
36
+ autoload :DivisionExpressionBuilder, "nelson/expression_builders/division_expression_builder"
32
37
  end
@@ -0,0 +1,13 @@
1
+
2
+ module Nelson
3
+ class DivisionExpressionBuilder < ExpressionBuilder
4
+ def initialize(term1, term2)
5
+ super(term1, term2)
6
+ end
7
+
8
+ def build
9
+ terms.map! { |e| e.is_a?(ExpressionBuilder) ? e.build : e }
10
+ DivisionExpression.new(*terms)
11
+ end
12
+ end
13
+ end
@@ -1,19 +1,9 @@
1
1
 
2
2
  module Nelson
3
- class MultipicationExpression < Expression
4
- def call
5
- terms.reduce(:*)
6
- end
7
-
8
- def to_s
9
- terms.sort_by { |t| t.is_a?(Expression) ? 1 : 0 }.reduce("") do |c, t|
10
- case t
11
- when Expression
12
- c << "(#{t})"
13
- else
14
- c = [c, t].map(&:to_s).reject(&:empty?).join("*")
15
- end
16
- end
3
+ class MultipicationExpressionBuilder < ExpressionBuilder
4
+ def build
5
+ terms.map! { |e| e.is_a?(ExpressionBuilder) ? e.build : e }
6
+ MultipicationExpression.new(*terms)
17
7
  end
18
8
  end
19
9
  end
@@ -0,0 +1,23 @@
1
+
2
+ module Nelson
3
+ class DivisionExpression < Expression
4
+ def initialize(term1, term2)
5
+ super(term1.to_f, term2.to_f)
6
+ end
7
+
8
+ def call
9
+ terms.reduce(:/)
10
+ end
11
+
12
+ def to_s
13
+ terms.sort_by { |t| t.is_a?(Expression) ? 1 : 0 }.reduce("") do |c, t|
14
+ case t
15
+ when Expression
16
+ c << "(#{t})"
17
+ else
18
+ c = [c, t].map(&:to_s).reject(&:empty?).join("/")
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,9 +1,19 @@
1
1
 
2
2
  module Nelson
3
- class MultipicationExpressionBuilder < ExpressionBuilder
4
- def build
5
- terms.map! { |e| e.is_a?(ExpressionBuilder) ? e.build : e }
6
- MultipicationExpression.new(*terms)
3
+ class MultipicationExpression < Expression
4
+ def call
5
+ terms.reduce(:*)
6
+ end
7
+
8
+ def to_s
9
+ terms.sort_by { |t| t.is_a?(Expression) ? 1 : 0 }.reduce("") do |c, t|
10
+ case t
11
+ when Expression
12
+ c << "(#{t})"
13
+ else
14
+ c = [c, t].map(&:to_s).reject(&:empty?).join("*")
15
+ end
16
+ end
7
17
  end
8
18
  end
9
19
  end
@@ -1,3 +1,3 @@
1
1
  module Nelson
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nelson
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Metcalfe
@@ -117,9 +117,11 @@ files:
117
117
  - lib/nelson/expression.rb
118
118
  - lib/nelson/expression_builder.rb
119
119
  - lib/nelson/expression_builders/addition_expression_builder.rb
120
+ - lib/nelson/expression_builders/division_expression_builder.rb
120
121
  - lib/nelson/expression_builders/multipication_expression_builder.rb
121
122
  - lib/nelson/expression_builders/subtraction_expression_builder.rb
122
123
  - lib/nelson/expressions/addition_expression.rb
124
+ - lib/nelson/expressions/division_expression.rb
123
125
  - lib/nelson/expressions/multipication_expression.rb
124
126
  - lib/nelson/expressions/subtraction_expression.rb
125
127
  - lib/nelson/version.rb