nelson 0.4.1 → 0.5.0

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