ascode 0.3.2 → 0.4.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: d8e23bc6e653965a74e847c726fd2475c9d80787d36eef439b68a8d4f9ad7f6f
4
- data.tar.gz: 2e99a66181a565e217e3820fb18da9a44710dea2e91fb84b6e6dc838b880003d
3
+ metadata.gz: 5cd39a387db21b65e74bf8617268f265998de21ad229e34bd39c035ac340fcbc
4
+ data.tar.gz: 92a4c0f8331707b07e71956960c706a34d64f4ba08cb055b5038d5378bd07f45
5
5
  SHA512:
6
- metadata.gz: 1c8680657e8d13ac141d4f7499f79f522a8b496b86dc28a62f9bc4594f6e3811b493be98a7cadf87f0a5694bb7e5bf02c22f445cd30ed89c990567a84593fa25
7
- data.tar.gz: 00fb2ca59f0e7b23d3070b503be1472b338acf6a5cd8be40a6de6d1b9e95c6e673e3112cf488a358094ceb7e7ed49cd3b5290c8f3d43f54a93e5d14241cea51c
6
+ metadata.gz: 14a8a972f71267ff6f38d01903d79f3848f49dea8434dd6af168e72645a2e17fbc09e72da1d3662e6df1350f869b4f2552b2ef7d44181166071fe950a7e0ae86
7
+ data.tar.gz: 75adb189e94e30df9459dbacc96f537659658a7ab30e9831eddab6d6f8a6b957951c8cdb12d99eaa9fc315da3de5c33ddd553cdf113a180cb45d17e340dc941c
data/README.md CHANGED
@@ -25,12 +25,14 @@ At this moment, the only way to play with `ascode` is `irb`.
25
25
 
26
26
  ```bash
27
27
  $ irb
28
- irb(main):001:0> require 'ascode'
28
+ irb(main):001:0> require "ascode"
29
29
  => true
30
- irb(main):002:0> Ascode.run 'Number:>ê[Even~Odd]>'
31
- Number:
30
+ irb(main):002:0> Ascode.run 'ê["Even"~"Odd"]"It is "+'
32
31
  10
33
- Even
32
+ It is Even
33
+ irb(main):003:0> Ascode.run "1.1*"
34
+ 5
35
+ 5.5
34
36
  ```
35
37
 
36
38
  ### Features
@@ -5,9 +5,10 @@ module Ascode
5
5
  def initialize
6
6
  @csv_data = []
7
7
 
8
- file = File.open(File.join(File.dirname(__FILE__), "functions.md"), "r")
9
- read_csv file
10
- file.close
8
+ filename = File.join(File.dirname(__FILE__), "functions.md")
9
+ File.open(filename, "r") do |file|
10
+ read_csv file
11
+ end
11
12
 
12
13
  @csv_data.delete_at 0
13
14
  @csv_data.delete_at 0
@@ -19,10 +20,7 @@ module Ascode
19
20
 
20
21
  @csv_data.push(
21
22
  short: clear_quotes(src[0]),
22
- long: clear_quotes(src[1]),
23
- pop: clear_quotes(src[2]),
24
- push: clear_quotes(src[3]),
25
- desc: clear_quotes(src[4])
23
+ long: clear_quotes(src[1])
26
24
  )
27
25
  end
28
26
  end
data/lib/ascode/parser.rb CHANGED
@@ -14,6 +14,8 @@ module Ascode
14
14
  @ast = []
15
15
  @push_buffer = false
16
16
  @skip_chars = 0
17
+ @is_quoted = false
18
+ @escape = false
17
19
  @implicit_output = @do_implicit_output
18
20
 
19
21
  @code.split("").to_enum.each_with_index do |char, index|
@@ -86,17 +88,27 @@ module Ascode
86
88
  end
87
89
 
88
90
  def parse_character(char, index)
89
- if char == "["
91
+ if char == "\\"
92
+ @escape = true
93
+ return
94
+ end
95
+
96
+ if char == "\"" && !@escape
97
+ ast_add_buffer if @is_quoted
98
+ @is_quoted = !@is_quoted
99
+ elsif @is_quoted || char =~ /[0-9.]/
100
+ buffer_push char
101
+ elsif char == "["
90
102
  end_index = parse_condition_block index
91
103
  @skip_chars = end_index - index
92
- elsif char =~ /[\w.,:;!?]/
93
- buffer_push char
94
104
  elsif char == " "
95
105
  ast_add_buffer
96
106
  else
97
107
  ast_add_buffer
98
108
  parse_function char
99
109
  end
110
+
111
+ @escape = false
100
112
  end
101
113
 
102
114
  def parse_function(char)
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.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Varaksa