rbf 0.0.1 → 0.0.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.
Files changed (3) hide show
  1. data/lib/rbf/interpreter.rb +13 -8
  2. data/lib/rbf.rb +7 -7
  3. metadata +1 -1
@@ -89,6 +89,15 @@ class Interpreter
89
89
  @output = STDOUT
90
90
  end
91
91
 
92
+ cycle(tree)
93
+
94
+ if options[:catch]
95
+ @output.rewind
96
+ @output.read
97
+ end
98
+ end
99
+
100
+ def cycle (tree)
92
101
  tree.each {|token|
93
102
  if token.is_a?(Array)
94
103
  self.loop(token)
@@ -96,10 +105,11 @@ class Interpreter
96
105
  self.send(token)
97
106
  end
98
107
  }
108
+ end
99
109
 
100
- if options[:catch]
101
- @output.rewind
102
- @output.read
110
+ def loop (tree)
111
+ while @storage.get != 0
112
+ cycle(tree)
103
113
  end
104
114
  end
105
115
 
@@ -128,11 +138,6 @@ class Interpreter
128
138
  @storage.set @input.read_char
129
139
  end
130
140
 
131
- define_method :loop do |code|
132
- while @storage.get != 0
133
- evaluate(code)
134
- end
135
- end
136
141
  end
137
142
 
138
143
  end
data/lib/rbf.rb CHANGED
@@ -18,18 +18,18 @@ require 'rbf/interpreter'
18
18
  require 'parslet/convenience'
19
19
 
20
20
  module RBF
21
- def self.parse (text, keys=Syntax::Default)
22
- Transform.new.apply(Parser.apply(keys).new.parse_with_debug(text)) or
21
+ def self.parse (text, syntax=nil)
22
+ Transform.new.apply(Parser.apply(syntax || Syntax::Default).new.parse_with_debug(text)) or
23
23
  raise SyntaxError, 'There is a syntax error'
24
24
  end
25
25
 
26
- def self.evaluate (text, keys=Syntax::Default)
27
- tree = text.is_a?(Array) ? text : parse(text.to_s, keys)
26
+ def self.evaluate (text, options={})
27
+ tree = text.is_a?(Array) ? text : parse(text.to_s, options[:syntax])
28
28
 
29
- Interpreter.new.evaluate(tree)
29
+ Interpreter.new.evaluate(tree, options)
30
30
  end
31
31
 
32
- def self.execute (file, keys=Syntax::Default)
33
- evaluate(File.read(file), keys)
32
+ def self.execute (file, options={})
33
+ evaluate(File.read(file), options)
34
34
  end
35
35
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rbf
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - meh.