parsecs 0.10.3 → 0.11.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
  SHA256:
3
- metadata.gz: 385ba1f20ebbd2b6adf416302a17da854b897cccceeb9726db9c5b573d1be814
4
- data.tar.gz: a2429b043dd767df26f77f2b61cdb229b60de68824505e9ca79256145070178c
3
+ metadata.gz: '0521908edb1a931bc50d3f62042405b9d7820fa50cda37c4313b1320f9520b7a'
4
+ data.tar.gz: 5338f27f94d431e9ae26cf1eb8ff06455f52c2fb5c45c7fa49c565bcf6b2160f
5
5
  SHA512:
6
- metadata.gz: 5d6c0685278184bbe0472ed2eb4d52fbe49a960e066c8c7ca8c30d2628b5e1a0ee568ecbd256f3c3194b56d7d0b5e2f751e3102d665f308398e569badeab41d0
7
- data.tar.gz: 39ca6cb1c9e12b65bb74608763f0b9f21e7ef442d54c02d6024076856615ea5a8109398b580c9e8ba121a7cd228b7b358ae9ca787f0be58f5d3d3a0fad6986dd
6
+ metadata.gz: 249b1aa99be74e1916d3d0395155b8539fd90df8e66f7317a265b13070f74c97bd1c2baacce331eb3137b051493d2181767b82e8abeaf7cd1080bdd6e3742f75
7
+ data.tar.gz: 8446a182b3f3876276d23d313b09e7a7e8b36eeb39dcc3a08ff1b05e6839d3fed84fb31f07880cadbb511fc37f87c087127b3f144e609591a2e93119411f00c2
@@ -38,7 +38,7 @@ libs.each do |lib|
38
38
  end
39
39
 
40
40
  GIT_REPOSITORY = 'https://github.com/niltonvasques/equations-parser.git'.freeze
41
- COMMIT = '948c6e5f32030e1d96b7fc8cd6215edb8168e75e'.freeze
41
+ COMMIT = 'b011ace5697fa65eade579f1c85aa38fd1fb816d'.freeze
42
42
 
43
43
  Dir.chdir(BASEDIR) do
44
44
  system('git init')
data/lib/parsec.rb CHANGED
@@ -6,7 +6,7 @@ module Parsec
6
6
  class Parsec
7
7
  using StringToBooleanRefinements
8
8
 
9
- VERSION = '0.10.3'.freeze
9
+ VERSION = '0.11.2'.freeze
10
10
 
11
11
  # evaluates the equation and returns only the result
12
12
  def self.eval_equation(equation)
@@ -65,7 +65,7 @@ module Parsec
65
65
  when 'int' then return ans['value'].to_i
66
66
  when 'float' then return ans['value'].to_f
67
67
  when 'boolean' then return ans['value'].to_bool
68
- when 'string' then return error_check(ans['value'])
68
+ when 'string' then return error_check(ans['value'].force_encoding(Encoding::UTF_8))
69
69
  when 'complex' then return 'complex number' # Maybe future implementation
70
70
  when 'matrix' then return 'matrix value' # Maybe future implementation
71
71
  end
data/test/test_parsec.rb CHANGED
@@ -70,6 +70,7 @@ class TestParsec < Minitest::Test
70
70
  assert_equal(false, parser.eval_equation('contains("1234567", "789")'))
71
71
  assert_equal(true, parser.eval_equation('contains("2019-01-01T:08:30", "2019-01-01")'))
72
72
  assert_equal(false, parser.eval_equation('contains("2019-01-01T:08:30", "2021-01-01")'))
73
+ assert_equal('Maçã', parser.eval_equation('"Maçã"'))
73
74
  assert_raises(SyntaxError) { parser.eval_equation('contains(1234567, "789")') }
74
75
  assert_raises(SyntaxError) { parser.eval_equation('contains("hello", 2.2)') }
75
76
  assert_raises(SyntaxError) { parser.eval_equation_with_type('link()') }
@@ -84,6 +85,7 @@ class TestParsec < Minitest::Test
84
85
  assert_equal('test lowercase', parser.eval_equation('tolower("TEST LOWERCASE")'))
85
86
  assert_equal('Hello', parser.eval_equation('left("Hello World", 5)'))
86
87
  assert_equal('World', parser.eval_equation('right("Hello World", 5)'))
88
+ assert_equal('Hello World', parser.eval_equation('right("Hello World", 20)'))
87
89
  end
88
90
 
89
91
  def test_general_equations
@@ -272,4 +274,21 @@ class TestParsec < Minitest::Test
272
274
  assert_raises(SyntaxError) { parsec.eval_equation_with_type('concat(1, 2)') }
273
275
  assert_raises(SyntaxError) { parsec.eval_equation_with_type('4 > 2 ? "smaller"') }
274
276
  end
277
+
278
+ def test_timediff
279
+ parsec = Parsec::Parsec
280
+ assert_equal(1.5, parsec.eval_equation('timediff("02:00:00", "03:30:00")'))
281
+ assert_equal(22.5, parsec.eval_equation('timediff("03:30:00", "02:00:00")'))
282
+ assert_equal(0.01, parsec.eval_equation('timediff("02:00:00", "02:00:30")'))
283
+ assert_equal(23.99, parsec.eval_equation('timediff("02:00:30", "02:00:00")'))
284
+ assert_equal(0.0, parsec.eval_equation('timediff("02:00:00", "02:00:00")'))
285
+
286
+ # error scenarios
287
+ assert_raises(SyntaxError) { parsec.eval_equation('timediff("02:00:30", "02/01/20")') }
288
+ assert_raises(SyntaxError) { parsec.eval_equation('timediff("02:00:30", "02/01/20T02:00:30")') }
289
+ assert_raises(SyntaxError) { parsec.eval_equation('timediff("02/01/20", "02:00:30")') }
290
+ assert_raises(SyntaxError) { parsec.eval_equation('timediff("02:00:30", "02:61:30")') }
291
+ assert_raises(SyntaxError) { parsec.eval_equation('timediff("02:00:00", "02:30:62")') }
292
+ assert_raises(SyntaxError) { parsec.eval_equation('timediff("24:00:00", "02:30:59")') }
293
+ end
275
294
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parsecs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.11.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nilton Vasques
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-05-20 00:00:00.000000000 Z
13
+ date: 2022-08-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: minitest