danica 2.6.2 → 2.6.3

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: d736e0ee01a6528dec7f12896f5c1338e00d51d6
4
- data.tar.gz: ca775b26d49286a0822f90c8a75568da819deac2
3
+ metadata.gz: bf05d8589ce6ce95ce844f0ac85322cbdf21cf17
4
+ data.tar.gz: 270bbcd3b2bf5f1f134706a2af56d1f326bc7cd3
5
5
  SHA512:
6
- metadata.gz: 599da1c0739706613bf7b9b67fe6915ed08faa9229003f35742a8f6dbcd9a0e033fe11ce6d2c66022aeb21d6b47c5d16ff1a8a03a1964d8be854860403b7b82d
7
- data.tar.gz: 3de9269044e1ed521210f137d95bf283d2ee9809de5b8db38ccd062e5c4e7eb404649fcf4bd6ff75c5ff11a1902af341fbbff8331ca01145dfe37ea19d90812e
6
+ metadata.gz: 7a09f2532b3dbe9b2265051781daec18e84a861d32c86a29b45c098717e12e2da39f6697e95f7c37c2025f73bccce707e7c290af0e57f889174ab8a283839da0
7
+ data.tar.gz: d37d4442d434cba7f5179c2688b05aecb8dafb4bf1f6fabbc1279896b5c7a2fbb3b15364b70397ffa31eb21ae306b8f526f3fbba1d91bf5936cc3a635082b3b7
data/README.md CHANGED
@@ -341,6 +341,31 @@ returns
341
341
  ```gnuplot
342
342
  x**(2) -y**(2)
343
343
  ```
344
+
345
+ #### Danica::Function.for
346
+ A function can also created after an expression
347
+
348
+ ```ruby
349
+ module Danica
350
+ class Expression
351
+ class QuadraticSum < build(:x, :y) { (x + y) ** 2 }
352
+ end
353
+ end
354
+ class Function
355
+ class QuadraticSum < Function.for(Expression::QuadraticSum)
356
+ end
357
+ end
358
+ end
359
+
360
+ fx = Danica::Function::QuadraticSum.new
361
+
362
+ fx.to_tex
363
+ ```
364
+
365
+ ```tex
366
+ f(x, y) = \left(x + y\right)^{2}
367
+ ```
368
+
344
369
  ### DSL and building
345
370
  An expression can be created using the DSL direct from ```Danica```
346
371
 
@@ -12,7 +12,7 @@ services:
12
12
  danica:
13
13
  <<: *base
14
14
  container_name: danica
15
- command: bundle exec rspec
15
+ command: /bin/bash -c 'bundle install && bundle exec rspec'
16
16
 
17
17
  volumes:
18
18
  danica_gems_2_4_0:
@@ -9,6 +9,12 @@ module Danica
9
9
 
10
10
  built_with(:function_block)
11
11
 
12
+ def self.for(expression_class)
13
+ build(expression_class.variables_hash) do
14
+ expression_class.new(variables_hash)
15
+ end
16
+ end
17
+
12
18
  def name
13
19
  Name.new(name: @name, variables: containers)
14
20
  end
@@ -1,3 +1,3 @@
1
1
  module Danica
2
- VERSION = '2.6.2'
2
+ VERSION = '2.6.3'
3
3
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Danica::Wrapper::Constant do
4
+ subject do
5
+ Danica::Wrapper::Constant.new(gnu: 'pi', latex: '\pi', value: 3.141592)
6
+ end
7
+ let(:output) do
8
+ {
9
+ tex: '\pi',
10
+ gnu: 'pi',
11
+ f: 3.141592
12
+ }
13
+ end
14
+
15
+ describe 'outputs' do
16
+ it do
17
+ output.each do |format, expected|
18
+ expect(subject.to(format)).to eq(expected)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -72,3 +72,11 @@ describe Danica::Function::MyFunction do
72
72
  end
73
73
  end
74
74
  end
75
+
76
+ describe Danica::Function::QuadraticSum do
77
+ describe '#to_tex' do
78
+ it 'creates a funcion out of an expression' do
79
+ expect(subject.to_tex).to eq("f(x, y) = \\left(x + y\\right)^{2}")
80
+ end
81
+ end
82
+ end
@@ -52,7 +52,7 @@ describe Danica::Expression do
52
52
  end
53
53
 
54
54
  context 'when creating a class using build' do
55
- let(:expression_class) { Danica::Hyperbole }
55
+ let(:expression_class) { Danica::Parabole }
56
56
 
57
57
  it_behaves_like 'an object with basic operation'
58
58
  it_behaves_like 'an object that respond to basic_methods'
@@ -78,7 +78,7 @@ describe Danica::Expression do
78
78
  end
79
79
 
80
80
  context 'when using a class that inherits from another class' do
81
- let(:expression_class) { Danica::SaddleHyperbole }
81
+ let(:expression_class) { Danica::SaddleParabole }
82
82
 
83
83
  it_behaves_like 'an object with basic operation'
84
84
  it_behaves_like 'an object that respond to basic_methods'
@@ -34,6 +34,36 @@ describe Danica::Function do
34
34
  end
35
35
  end
36
36
 
37
+ describe '.for' do
38
+ let(:expression_class) { Danica::Expression::Gauss }
39
+ let(:expression) { expression_class.new }
40
+ subject do
41
+ described_class.for(expression_class).new
42
+ end
43
+
44
+ it 'returns a function' do
45
+ expect(subject).to be_a(described_class)
46
+ end
47
+
48
+ it 'behaves like a function' do
49
+ expect do
50
+ subject.to_tex
51
+ end.not_to raise_error
52
+ end
53
+
54
+ it 'creates a funcion out of an expression' do
55
+ expect(subject.to_tex).to eq("f(x, \\mu, \\sigma) = #{expression.to_tex}")
56
+ end
57
+
58
+ context 'when passing an operator' do
59
+ let(:expression_class) { Danica::Operator::Cos }
60
+
61
+ it do
62
+ expect(subject.to_tex).to eq("f(value) = #{expression.to_tex}")
63
+ end
64
+ end
65
+ end
66
+
37
67
  describe '.build' do
38
68
  let(:function) do
39
69
  function_class.new(name: :f)
@@ -52,7 +82,7 @@ describe Danica::Function do
52
82
  end
53
83
 
54
84
  context 'when creating a class using build' do
55
- let(:function_class) { Danica::Function::Hyperbole }
85
+ let(:function_class) { Danica::Function::Parabole }
56
86
 
57
87
  it 'has the defined variables on class definition' do
58
88
  expect(function_class.variables_names).to eq([:x])
@@ -76,7 +106,7 @@ describe Danica::Function do
76
106
  end
77
107
 
78
108
  context 'when using a class that inherits from another class' do
79
- let(:function_class) { Danica::Function::SaddleHyperbole }
109
+ let(:function_class) { Danica::Function::SaddleParabole }
80
110
 
81
111
  it 'has the defined variables on class definition' do
82
112
  expect(function_class.variables_names).to eq([:x, :y])
@@ -1,10 +1,10 @@
1
1
  module Danica
2
- class Hyperbole < Expression.build(:x) { power(x, 2) }
2
+ class Parabole < Expression.build(:x) { power(x, 2) }
3
3
  end
4
4
  end
5
5
 
6
6
  module Danica
7
- class SaddleHyperbole < Hyperbole
7
+ class SaddleParabole < Parabole
8
8
  variables :y
9
9
 
10
10
  def expression_block
@@ -0,0 +1,6 @@
1
+ module Danica
2
+ class Expression
3
+ class QuadraticSum < build(:x, :y) { (x + y) ** 2 }
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,16 @@
1
+
2
+ module Danica
3
+ class Function::Parabole < Function.build(:x) { Danica::Parabole.new }
4
+ end
5
+ end
6
+
7
+ module Danica
8
+ class Function::SaddleParabole < Function::Parabole
9
+ variables :y
10
+
11
+ def function_block
12
+ super - power(y, 2)
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,8 @@
1
+ require_relative '../expression/quadratic_sum'
2
+
3
+ module Danica
4
+ class Function
5
+ class QuadraticSum < Function.for(Expression::QuadraticSum)
6
+ end
7
+ end
8
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danica
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.2
4
+ version: 2.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darthjee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-10 00:00:00.000000000 Z
11
+ date: 2018-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -181,6 +181,7 @@ files:
181
181
  - spec/integration/negative_spec.rb
182
182
  - spec/integration/plus_minus_spec.rb
183
183
  - spec/integration/power_spec.rb
184
+ - spec/integration/readme/constant_spec.rb
184
185
  - spec/integration/readme/danica_spec.rb
185
186
  - spec/integration/readme/equation_spec.rb
186
187
  - spec/integration/readme/expression_spec.rb
@@ -217,10 +218,12 @@ files:
217
218
  - spec/lib/danica_spec.rb
218
219
  - spec/spec_helper.rb
219
220
  - spec/support/models/expression/baskara.rb
220
- - spec/support/models/expression/hyperbole.rb
221
+ - spec/support/models/expression/parabole.rb
222
+ - spec/support/models/expression/quadratic_sum.rb
221
223
  - spec/support/models/expression/spatial.rb
222
- - spec/support/models/function/hyperbole.rb
223
224
  - spec/support/models/function/my_function.rb
225
+ - spec/support/models/function/parabole.rb
226
+ - spec/support/models/function/quadratic_sum.rb
224
227
  - spec/support/models/function/spatial.rb
225
228
  - spec/support/models/operator/inverse.rb
226
229
  - spec/support/models/operator/my_operator.rb
@@ -251,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
251
254
  version: '0'
252
255
  requirements: []
253
256
  rubyforge_project:
254
- rubygems_version: 2.6.8
257
+ rubygems_version: 2.6.11
255
258
  signing_key:
256
259
  specification_version: 4
257
260
  summary: Danica
@@ -261,6 +264,7 @@ test_files:
261
264
  - spec/integration/negative_spec.rb
262
265
  - spec/integration/plus_minus_spec.rb
263
266
  - spec/integration/power_spec.rb
267
+ - spec/integration/readme/constant_spec.rb
264
268
  - spec/integration/readme/danica_spec.rb
265
269
  - spec/integration/readme/equation_spec.rb
266
270
  - spec/integration/readme/expression_spec.rb
@@ -297,10 +301,12 @@ test_files:
297
301
  - spec/lib/danica_spec.rb
298
302
  - spec/spec_helper.rb
299
303
  - spec/support/models/expression/baskara.rb
300
- - spec/support/models/expression/hyperbole.rb
304
+ - spec/support/models/expression/parabole.rb
305
+ - spec/support/models/expression/quadratic_sum.rb
301
306
  - spec/support/models/expression/spatial.rb
302
- - spec/support/models/function/hyperbole.rb
303
307
  - spec/support/models/function/my_function.rb
308
+ - spec/support/models/function/parabole.rb
309
+ - spec/support/models/function/quadratic_sum.rb
304
310
  - spec/support/models/function/spatial.rb
305
311
  - spec/support/models/operator/inverse.rb
306
312
  - spec/support/models/operator/my_operator.rb
@@ -1,16 +0,0 @@
1
-
2
- module Danica
3
- class Function::Hyperbole < Function.build(:x) { Danica::Hyperbole.new }
4
- end
5
- end
6
-
7
- module Danica
8
- class Function::SaddleHyperbole < Function::Hyperbole
9
- variables :y
10
-
11
- def function_block
12
- super - power(y, 2)
13
- end
14
- end
15
- end
16
-