ascode 0.5.3 → 0.5.4

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: d5f4408a0db6f51c967a99742111084fa89aac0c41237313ccbfed61e9d64fe6
4
- data.tar.gz: b1ff0ca8a235111caaa549b768f0d4444480e3d15910c8585e6029b71f44f0bf
3
+ metadata.gz: 56d53aec79abb0959c5e34c61b0f537013168b6ad79bde7a2480472f5259b7a1
4
+ data.tar.gz: b574b6f1f4ff79a222a11a482dead059dd1a1f8f78b3f5eef6d0c5130584286e
5
5
  SHA512:
6
- metadata.gz: fae634110d25627412c71d7d30f6c87cea3f37764db75149f937387f82b03250306d6822cb9482f8e99ce8415fd0fc2eab80366fca99a00e1b945f83d1a94b31
7
- data.tar.gz: af4ffcf2b5779e69583d54e935dbfcc7ffa0aad67d76d2b3694e00b743566aee3ede7c0f748a7908867e85ee93d6cc4996bd87ed10cde69a593a402a27106bbe
6
+ metadata.gz: 16b9ce147aa1a3cdfa24f46884ba9a0d6a16e0c4650a55dab82f30d90360a877aabfc996ad11bd022c37adc9b62ec4779a16c45df197651f2d2658ddd5309a12
7
+ data.tar.gz: dd356e67eba3f008bba0a8e1838f0b45171be8ce2c08e8b7a972e2b44f92cea402fff096df928b1d90e6e74ee075adbcbc385a84d2416826189726f1e6e667a0
@@ -1,3 +1,5 @@
1
+ require_relative "literal"
2
+
1
3
  module Ascode
2
4
  module Parser
3
5
  class ConditionBlock
@@ -26,12 +28,21 @@ module Ascode
26
28
  end
27
29
 
28
30
  def find(what)
29
- # TODO: Ignore '[', ':', ']' when in string
30
31
  level = 0
32
+ skip = 0
31
33
  @block.split("").to_enum.each_with_index do |char, index|
32
- return index if char == what && level.zero?
33
- level += 1 if char == "["
34
- level -= 1 if char == "]"
34
+ if skip > 0
35
+ skip -= 1
36
+ next
37
+ elsif char == "\""
38
+ literal = Literal.new @block, index
39
+ literal.parse
40
+ skip = literal.length
41
+ else
42
+ return index if char == what && level.zero?
43
+ level += 1 if char == "["
44
+ level -= 1 if char == "]"
45
+ end
35
46
  end
36
47
 
37
48
  -1
@@ -3,7 +3,7 @@ require_relative "../converter"
3
3
  module Ascode
4
4
  module Parser
5
5
  class Literal
6
- attr_reader :literal
6
+ attr_reader :length
7
7
 
8
8
  def initialize(code, literal_begin)
9
9
  @code = code
@@ -19,6 +19,7 @@ module Ascode
19
19
  @literal = @literal[0..(@end - 1)]
20
20
 
21
21
  @literal = Converter.convert @literal
22
+ @length = @literal.to_s.length + (@quoted ? 1 : -1)
22
23
  ast
23
24
  end
24
25
 
@@ -32,10 +32,8 @@ module Ascode
32
32
  end
33
33
 
34
34
  def character(char, index)
35
- if char == "\""
36
- literal(index, false)
37
- elsif char =~ /[0-9.]/
38
- literal(index, true)
35
+ if char == "\"" || char =~ /[0-9.]/
36
+ literal index
39
37
  elsif char == "["
40
38
  block index
41
39
  else
@@ -43,12 +41,10 @@ module Ascode
43
41
  end
44
42
  end
45
43
 
46
- def literal(index, num)
47
- add = num ? -1 : 1
48
-
44
+ def literal(index)
49
45
  literal = Literal.new @code, index
50
46
  @ast.push literal.parse
51
- @skip_chars = literal.literal.to_s.length + add
47
+ @skip_chars = literal.length
52
48
  end
53
49
 
54
50
  def block(index)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ascode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Varaksa