parsecs 0.11.9 → 0.12.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
  SHA256:
3
- metadata.gz: 27bb96b53f0a4c2da464056a9c3f50acd53d3e00d315e960d08286a19a4d398a
4
- data.tar.gz: 174c608b61872c0d3417324a7053377826f3b679e8b80fed10519be12e32221b
3
+ metadata.gz: e28378b87ca822e69e9a4d48db13bc3431acdb16a9f48093e2e04129764678ec
4
+ data.tar.gz: f1cad169c966b3fada82a0e8d755f61cd6a5e0eb6edf295475afca6e85b2bbb1
5
5
  SHA512:
6
- metadata.gz: d192592844f0e597ba28ec9a8b5e3a93436731b330048fff1b235a4e9f6237174949d25f1bf7d71ba646930257b9c4bef876f7a685678b3b35b3da5575e4af2c
7
- data.tar.gz: 7452c90667c7edac02ce61c2b9f6063d64c3daf49917d4d340a38be3e33f2d13e32451ac8e39b51ca1936be1464e21d51e7be9479b1da13acf73b84b88df0442
6
+ metadata.gz: d05f4661a50c11d978292731897d993797c9bccc1900633980f891758ce4562fbab528b7b90491c9f3cebd209dd3f0d9b3574186c267b8aec3e2a1aa9eb1b437
7
+ data.tar.gz: ea4b8885920feaefe1fc631f30a7253c30bf99c5ee0b141c6c1c62a6ff257eec8b126efd0cd61866297783f0751b9c3a0ed9342e76b868eb75cefa9ea91e1c0d
@@ -38,7 +38,7 @@ libs.each do |lib|
38
38
  end
39
39
 
40
40
  GIT_REPOSITORY = 'https://github.com/oxeanbits/equations-parser.git'.freeze
41
- COMMIT = '8c4fab5b8949704cf4d80d4a4a898f451cbb3890'.freeze
41
+ COMMIT = '8769175390cafd9c40b52477f1c97184266c4a68'.freeze
42
42
 
43
43
  Dir.chdir(BASEDIR) do
44
44
  system('git init')
data/test/test_parsec.rb CHANGED
@@ -302,4 +302,40 @@ class TestParsec < Minitest::Test
302
302
  assert_raises(SyntaxError) { parsec.eval_equation('timediff("02:00:00", "02:30:62")') }
303
303
  assert_raises(SyntaxError) { parsec.eval_equation('timediff("24:00:00", "02:30:59")') }
304
304
  end
305
+
306
+ def test_regex
307
+ parsec = Parsec::Parsec
308
+ assert_equal('World', parsec.eval_equation('regex("Hello World", "Hello (.*)")'))
309
+ assert_equal('71', parsec.eval_equation('regex("71 123456789", "([0-9]{2}) [0-9]{9}")'))
310
+ assert_equal('ISSUE-123', parsec.eval_equation('regex("ISSUE-123 Fix bug", "(ISSUE-[0-9]+) (.*)")'))
311
+ assert_equal('2019-01-01', parsec.eval_equation('regex("2019-01-01T:08:30", "([0-9]{4}-[0-9]{2}-[0-9]{2})T:[0-9]{2}:[0-9]{2}")'))
312
+ assert_equal('2019-01', parsec.eval_equation('regex("2019-01-01T:08:30", "([0-9]{4}-[0-9]{2})-[0-9]{2}T:[0-9]{2}:[0-9]{2}")'))
313
+ assert_equal('2019', parsec.eval_equation('regex("2019-01-01T:08:30", "([0-9]{4})-[0-9]{2}-[0-9]{2}T:[0-9]{2}:[0-9]{2}")'))
314
+ # Regex tests with no capture group
315
+ assert_equal('', parsec.eval_equation('regex("Hello World", "Hello .*")'))
316
+
317
+ # Regex tests with optional groups
318
+ assert_equal('1234', parsec.eval_equation('regex("Product 1234 (color: red)", "Product ([0-9]+)( \\\\(color: (.*)\\\\))?")'))
319
+ assert_equal('1234', parsec.eval_equation('regex("Product 1234", "Product ([0-9]+)( \\\\(color: (.*)\\\\))?")'))
320
+
321
+ # Regex tests with alternation
322
+ assert_equal('Green', parsec.eval_equation('regex("Green Apple", "(Green|Red) Apple")'))
323
+ assert_equal('Red', parsec.eval_equation('regex("Red Apple", "(Green|Red) Apple")'))
324
+
325
+ # Regex tests with character classes
326
+ assert_equal('A123', parsec.eval_equation('regex("BoxA123", "Box([A-Za-z][0-9]+)")'))
327
+ assert_equal('C456', parsec.eval_equation('regex("BoxC456", "Box([A-Za-z][0-9]+)")'))
328
+
329
+ # Regex tests with positive lookaheads
330
+ assert_equal('apple', parsec.eval_equation('regex("apple123banana", "([a-z]+)(?=\\\\d+)")'))
331
+
332
+ assert_equal('456', parsec.eval_equation('regex("123red456blue", "(\\\\d+)(?=blue)")'))
333
+
334
+ # Regex tests with negative lookaheads
335
+ assert_equal('123', parsec.eval_equation('regex("123red456blue", "(\\\\d+)(?!blue)")'))
336
+
337
+ # Regex tests with nested lookaheads
338
+ assert_equal('apple', parsec.eval_equation('regex("apple123redbanana", "(?=apple)([a-z]+)(?=\\\\d+red)")'))
339
+ assert_equal('apple', parsec.eval_equation('regex("apple123red456banana", "(?=apple)([a-z]+)(?=(\\\\d+red)\\\\d+banana)")'))
340
+ end
305
341
  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.11.9
4
+ version: 0.12.0
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: 2023-04-12 00:00:00.000000000 Z
13
+ date: 2023-04-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: minitest
@@ -40,7 +40,7 @@ dependencies:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '12.1'
43
- description: ParseCs is a gem to evaluate equations using a lighter and extented version
43
+ description: Parsecs is a gem to evaluate equations using a lighter and extented version
44
44
  of the muparserx C++ library
45
45
  email:
46
46
  - nilton.vasques@gmail.com
@@ -58,7 +58,7 @@ files:
58
58
  - lib/parsec.rb
59
59
  - lib/string_to_boolean_refinements.rb
60
60
  - test/test_parsec.rb
61
- homepage: https://github.com/niltonvasques/parsec
61
+ homepage: https://github.com/oxeanbits/parsec
62
62
  licenses:
63
63
  - MIT
64
64
  metadata: {}