ascode 0.3.1 → 0.3.2
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/lib/ascode/functions.rb +3 -3
- data/lib/ascode/interpreter.rb +3 -3
- data/lib/ascode/parser.rb +15 -15
- data/lib/ascode.rb +2 -2
- 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: d8e23bc6e653965a74e847c726fd2475c9d80787d36eef439b68a8d4f9ad7f6f
|
4
|
+
data.tar.gz: 2e99a66181a565e217e3820fb18da9a44710dea2e91fb84b6e6dc838b880003d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c8680657e8d13ac141d4f7499f79f522a8b496b86dc28a62f9bc4594f6e3811b493be98a7cadf87f0a5694bb7e5bf02c22f445cd30ed89c990567a84593fa25
|
7
|
+
data.tar.gz: 00fb2ca59f0e7b23d3070b503be1472b338acf6a5cd8be40a6de6d1b9e95c6e673e3112cf488a358094ceb7e7ed49cd3b5290c8f3d43f54a93e5d14241cea51c
|
data/lib/ascode/functions.rb
CHANGED
@@ -5,7 +5,7 @@ module Ascode
|
|
5
5
|
def initialize
|
6
6
|
@csv_data = []
|
7
7
|
|
8
|
-
file = File.open(File.join(File.dirname(__FILE__),
|
8
|
+
file = File.open(File.join(File.dirname(__FILE__), "functions.md"), "r")
|
9
9
|
read_csv file
|
10
10
|
file.close
|
11
11
|
|
@@ -15,7 +15,7 @@ module Ascode
|
|
15
15
|
|
16
16
|
def read_csv(file)
|
17
17
|
until (line = file.gets).nil?
|
18
|
-
src = line.strip.split(
|
18
|
+
src = line.strip.split("|")
|
19
19
|
|
20
20
|
@csv_data.push(
|
21
21
|
short: clear_quotes(src[0]),
|
@@ -29,7 +29,7 @@ module Ascode
|
|
29
29
|
|
30
30
|
def clear_quotes(str)
|
31
31
|
return str unless str
|
32
|
-
str.delete(
|
32
|
+
str.delete("`")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
data/lib/ascode/interpreter.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative "converter"
|
2
2
|
|
3
3
|
module Ascode
|
4
4
|
class Interpreter
|
@@ -12,9 +12,9 @@ module Ascode
|
|
12
12
|
@ast.each do |action|
|
13
13
|
name = action[:action]
|
14
14
|
|
15
|
-
if name ==
|
15
|
+
if name == "push"
|
16
16
|
push(action[:what])
|
17
|
-
elsif name ==
|
17
|
+
elsif name == "condition"
|
18
18
|
condition_begin action[:true_block], action[:false_block]
|
19
19
|
else
|
20
20
|
send(name)
|
data/lib/ascode/parser.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require_relative
|
2
|
-
require_relative
|
1
|
+
require_relative "functions"
|
2
|
+
require_relative "converter"
|
3
3
|
|
4
4
|
module Ascode
|
5
5
|
class Parser
|
@@ -16,7 +16,7 @@ module Ascode
|
|
16
16
|
@skip_chars = 0
|
17
17
|
@implicit_output = @do_implicit_output
|
18
18
|
|
19
|
-
@code.split(
|
19
|
+
@code.split("").to_enum.each_with_index do |char, index|
|
20
20
|
if @skip_chars > 0
|
21
21
|
@skip_chars -= 1
|
22
22
|
next
|
@@ -26,7 +26,7 @@ module Ascode
|
|
26
26
|
end
|
27
27
|
ast_add_buffer
|
28
28
|
|
29
|
-
ast_add_action
|
29
|
+
ast_add_action "output" if @implicit_output
|
30
30
|
|
31
31
|
@ast
|
32
32
|
end
|
@@ -52,15 +52,15 @@ module Ascode
|
|
52
52
|
false_block_ast = (Parser.new block_code[(split_pos + 1)..-1], false).parse
|
53
53
|
end
|
54
54
|
|
55
|
-
@ast.push(action:
|
55
|
+
@ast.push(action: "condition", true_block: true_block_ast, false_block: false_block_ast )
|
56
56
|
|
57
57
|
end_index + 2
|
58
58
|
end
|
59
59
|
|
60
60
|
def find_block_end(block)
|
61
61
|
end_index = -1
|
62
|
-
block.split(
|
63
|
-
if char ==
|
62
|
+
block.split("").to_enum.with_index.reverse_each do |char, index|
|
63
|
+
if char == "]"
|
64
64
|
end_index = index
|
65
65
|
break
|
66
66
|
end
|
@@ -72,12 +72,12 @@ module Ascode
|
|
72
72
|
def find_block_split(block)
|
73
73
|
level = 0
|
74
74
|
split_pos = -1
|
75
|
-
block.split(
|
76
|
-
if char ==
|
75
|
+
block.split("").to_enum.each_with_index do |char, index|
|
76
|
+
if char == "["
|
77
77
|
level += 1
|
78
|
-
elsif char ==
|
78
|
+
elsif char == "]"
|
79
79
|
level -= 1
|
80
|
-
elsif char ==
|
80
|
+
elsif char == "~" && level.zero?
|
81
81
|
split_pos = index
|
82
82
|
end
|
83
83
|
end
|
@@ -86,12 +86,12 @@ module Ascode
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def parse_character(char, index)
|
89
|
-
if char ==
|
89
|
+
if char == "["
|
90
90
|
end_index = parse_condition_block index
|
91
91
|
@skip_chars = end_index - index
|
92
92
|
elsif char =~ /[\w.,:;!?]/
|
93
93
|
buffer_push char
|
94
|
-
elsif char ==
|
94
|
+
elsif char == " "
|
95
95
|
ast_add_buffer
|
96
96
|
else
|
97
97
|
ast_add_buffer
|
@@ -121,12 +121,12 @@ module Ascode
|
|
121
121
|
|
122
122
|
@push_buffer = Converter.convert @push_buffer
|
123
123
|
|
124
|
-
ast_add_action
|
124
|
+
ast_add_action "push", @push_buffer
|
125
125
|
@push_buffer = false
|
126
126
|
end
|
127
127
|
|
128
128
|
def ast_add_action(name, what = nil)
|
129
|
-
@implicit_output = false if name ==
|
129
|
+
@implicit_output = false if name == "output"
|
130
130
|
|
131
131
|
data = { action: name }
|
132
132
|
data[:what] = what if what
|
data/lib/ascode.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ascode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artem Varaksa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Esoteric golfing language. In active development, so behavior may be
|
14
14
|
changed without prior notice.
|