delorean_lang 2.4.2 → 2.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 +4 -4
- data/.rubocop_todo.yml +3 -3
- data/lib/delorean/base.rb +1 -1
- data/lib/delorean/engine.rb +11 -1
- data/lib/delorean/version.rb +1 -1
- data/spec/eval_spec.rb +78 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b6cc25679183ee119b6f32c93032dcaf62ec212ccadf9d603db3208343ed6e9f
         | 
| 4 | 
            +
              data.tar.gz: dda2d1e9b7cea95d61686b22a96ed453fe694e3179047a13b9fbaae60c719c7a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 17a9b6906e1f95883084f08236604edbd6197121a175b707a1e91c5f9e0778c224fd526dbb66819f1a6fe8477f8ca88b6ac5e436ec6b63b73aaa7ca717d04b1d
         | 
| 7 | 
            +
              data.tar.gz: 72da6952e2c7cbf92b95b36e1893f2dbbcb4b8c8715e306496e400fc48c7ecd89808fda38711e665c12a9e5fb1ce38fd7082a7c7b185f3edf78939d4651ad599
         | 
    
        data/.rubocop_todo.yml
    CHANGED
    
    | @@ -42,11 +42,11 @@ Metrics/AbcSize: | |
| 42 42 | 
             
            # Offense count: 2
         | 
| 43 43 | 
             
            # Configuration parameters: CountComments.
         | 
| 44 44 | 
             
            Metrics/ClassLength:
         | 
| 45 | 
            -
              Max:  | 
| 45 | 
            +
              Max: 350
         | 
| 46 46 |  | 
| 47 47 | 
             
            # Offense count: 8
         | 
| 48 48 | 
             
            Metrics/CyclomaticComplexity:
         | 
| 49 | 
            -
              Max:  | 
| 49 | 
            +
              Max: 20
         | 
| 50 50 |  | 
| 51 51 | 
             
            # Offense count: 22
         | 
| 52 52 | 
             
            # Configuration parameters: CountComments, ExcludedMethods.
         | 
| @@ -55,7 +55,7 @@ Metrics/MethodLength: | |
| 55 55 |  | 
| 56 56 | 
             
            # Offense count: 6
         | 
| 57 57 | 
             
            Metrics/PerceivedComplexity:
         | 
| 58 | 
            -
              Max:  | 
| 58 | 
            +
              Max: 20
         | 
| 59 59 |  | 
| 60 60 | 
             
            # Offense count: 1
         | 
| 61 61 | 
             
            Naming/AccessorMethodName:
         | 
    
        data/lib/delorean/base.rb
    CHANGED
    
    
    
        data/lib/delorean/engine.rb
    CHANGED
    
    | @@ -220,6 +220,16 @@ module Delorean | |
| 220 220 | 
             
                  @@parser ||= DeloreanParser.new
         | 
| 221 221 | 
             
                end
         | 
| 222 222 |  | 
| 223 | 
            +
                def closing_bracket?(line)
         | 
| 224 | 
            +
                  stripped = line.strip
         | 
| 225 | 
            +
             | 
| 226 | 
            +
                  return true if stripped == ']'
         | 
| 227 | 
            +
                  return true if stripped == ')'
         | 
| 228 | 
            +
                  return true if stripped == '}'
         | 
| 229 | 
            +
             | 
| 230 | 
            +
                  false
         | 
| 231 | 
            +
                end
         | 
| 232 | 
            +
             | 
| 223 233 | 
             
                def generate(t)
         | 
| 224 234 | 
             
                  t.check(self)
         | 
| 225 235 |  | 
| @@ -268,7 +278,7 @@ module Delorean | |
| 268 278 | 
             
                    if multi_line
         | 
| 269 279 | 
             
                      # if line starts with >4 spaces, assume it's a multline
         | 
| 270 280 | 
             
                      # continuation.
         | 
| 271 | 
            -
                      if /\A {5}/.match?(line)
         | 
| 281 | 
            +
                      if /\A {5}/.match?(line) || closing_bracket?(line)
         | 
| 272 282 | 
             
                        multi_line += line
         | 
| 273 283 | 
             
                        next
         | 
| 274 284 | 
             
                      else
         | 
    
        data/lib/delorean/version.rb
    CHANGED
    
    
    
        data/spec/eval_spec.rb
    CHANGED
    
    | @@ -1397,6 +1397,84 @@ eof | |
| 1397 1397 | 
             
                expect(r).to eq 1
         | 
| 1398 1398 | 
             
              end
         | 
| 1399 1399 |  | 
| 1400 | 
            +
              it 'allows to close the bracket with the same spacing as variable' do
         | 
| 1401 | 
            +
                engine.parse defn('A:',
         | 
| 1402 | 
            +
                                  '    a = [',
         | 
| 1403 | 
            +
                                  '        1,',
         | 
| 1404 | 
            +
                                  '        2,',
         | 
| 1405 | 
            +
                                  '    ]',
         | 
| 1406 | 
            +
                                  '    b = 2',
         | 
| 1407 | 
            +
                                 )
         | 
| 1408 | 
            +
                r = engine.evaluate('A', 'a')
         | 
| 1409 | 
            +
                expect(r).to eq [1, 2]
         | 
| 1410 | 
            +
             | 
| 1411 | 
            +
                r = engine.evaluate('A', 'b')
         | 
| 1412 | 
            +
                expect(r).to eq 2
         | 
| 1413 | 
            +
              end
         | 
| 1414 | 
            +
             | 
| 1415 | 
            +
              it 'allows to close the bracket with the same spacing as variable 2' do
         | 
| 1416 | 
            +
                engine.parse defn('A:',
         | 
| 1417 | 
            +
                                  '    a = [',
         | 
| 1418 | 
            +
                                  '        {',
         | 
| 1419 | 
            +
                                  '          "a": 1,',
         | 
| 1420 | 
            +
                                  '          "b": 2,',
         | 
| 1421 | 
            +
                                  '        },',
         | 
| 1422 | 
            +
                                  '        2,',
         | 
| 1423 | 
            +
                                  '    ]',
         | 
| 1424 | 
            +
                                 )
         | 
| 1425 | 
            +
                r = engine.evaluate('A', 'a')
         | 
| 1426 | 
            +
                expect(r).to eq [{ 'a' => 1, 'b' => 2 }, 2]
         | 
| 1427 | 
            +
              end
         | 
| 1428 | 
            +
             | 
| 1429 | 
            +
              it 'allows to close the bracket with the same spacing as variable 3' do
         | 
| 1430 | 
            +
                engine.parse defn('A:',
         | 
| 1431 | 
            +
                                  '    a = {',
         | 
| 1432 | 
            +
                                  '      "a": 1,',
         | 
| 1433 | 
            +
                                  '      "b": 2,',
         | 
| 1434 | 
            +
                                  '    }',
         | 
| 1435 | 
            +
                                  '    b = 2',
         | 
| 1436 | 
            +
                                 )
         | 
| 1437 | 
            +
                r = engine.evaluate('A', 'a')
         | 
| 1438 | 
            +
                expect(r).to eq('a' => 1, 'b' => 2)
         | 
| 1439 | 
            +
             | 
| 1440 | 
            +
                r = engine.evaluate('A', 'b')
         | 
| 1441 | 
            +
                expect(r).to eq 2
         | 
| 1442 | 
            +
              end
         | 
| 1443 | 
            +
             | 
| 1444 | 
            +
              it 'allows to close the bracket with the same spacing as variable 4' do
         | 
| 1445 | 
            +
                engine.parse defn('A:',
         | 
| 1446 | 
            +
                                  '    a = {',
         | 
| 1447 | 
            +
                                  '      "a": 1,',
         | 
| 1448 | 
            +
                                  '      "b": 2,',
         | 
| 1449 | 
            +
                                  '    }',
         | 
| 1450 | 
            +
                                  '    b = [1, 2]',
         | 
| 1451 | 
            +
                                  '    c = [',
         | 
| 1452 | 
            +
                                  '      {',
         | 
| 1453 | 
            +
                                  '        key : value + num',
         | 
| 1454 | 
            +
                                  '        for key, value in a',
         | 
| 1455 | 
            +
                                  '      }',
         | 
| 1456 | 
            +
                                  '      for num in b',
         | 
| 1457 | 
            +
                                  '    ]',
         | 
| 1458 | 
            +
                                 )
         | 
| 1459 | 
            +
                r = engine.evaluate('A', 'c')
         | 
| 1460 | 
            +
                expect(r).to eq([{ 'a' => 2, 'b' => 3 }, { 'a' => 3, 'b' => 4 }])
         | 
| 1461 | 
            +
              end
         | 
| 1462 | 
            +
             | 
| 1463 | 
            +
              it 'allows to close the bracket with the same spacing as variable 5' do
         | 
| 1464 | 
            +
                engine.parse defn('A:',
         | 
| 1465 | 
            +
                                  '    a = (',
         | 
| 1466 | 
            +
                                  '      1 +',
         | 
| 1467 | 
            +
                                  '      2',
         | 
| 1468 | 
            +
                                  '    )',
         | 
| 1469 | 
            +
                                  '    b = 2',
         | 
| 1470 | 
            +
                                 )
         | 
| 1471 | 
            +
                r = engine.evaluate('A', 'a')
         | 
| 1472 | 
            +
                expect(r).to eq(3)
         | 
| 1473 | 
            +
             | 
| 1474 | 
            +
                r = engine.evaluate('A', 'b')
         | 
| 1475 | 
            +
                expect(r).to eq 2
         | 
| 1476 | 
            +
              end
         | 
| 1477 | 
            +
             | 
| 1400 1478 | 
             
              describe 'blocks' do
         | 
| 1401 1479 | 
             
                let(:default_node) do
         | 
| 1402 1480 | 
             
                  ['A:',
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: delorean_lang
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Arman Bostani
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020-03- | 
| 11 | 
            +
            date: 2020-03-19 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activerecord
         |