rubymotionlisp 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cd26bad53833fe2ee3f15b08e989595f835762a
4
- data.tar.gz: 8bc181d5653cb58ce352f6ca4e1ff79a0d66e6fc
3
+ metadata.gz: 79d1cf36fe85338600c33a3085d4d211d9e6dd5d
4
+ data.tar.gz: 951f1a587966f6e528e00b7159ae7512045e70f2
5
5
  SHA512:
6
- metadata.gz: 85e9ff41520cad81442bb0299bd9087e296dc3cc250df0f9b316d1201201d27ab585f9770cb96b1590833c3d50e49e364537b9321b1a79b06a5e9dba93d1428a
7
- data.tar.gz: 5e27bb3023a10c31605901fcfb9c8493a441371129e0a59c50389d00b73ee928170299096be4a2a689fb0808eeb228e3efa8c4b13e23f28c7ca072c7b7972b4a
6
+ metadata.gz: 3d13696668fe0df15257d56f11c3984eebd96b32ebd98c1af083601be8859f298a230f80316008f4924fc2a094155773e7ae667f50aa8f255947bd29914783ce
7
+ data.tar.gz: 7ff8677aae52bf3bdcc100dce2cdd5768da64ffd92f060c95ad475a7653676d377b04f57d3ab780448f0188cec751529527c8a7cf6135ba2718deb2f64a72944
@@ -30,7 +30,7 @@ module Lisp
30
30
  unless handlers.nil?
31
31
  handler = handler_or_nil(handlers, for: name)
32
32
  unless handler.nil?
33
- handler.apply_to_without_evaluating(args, in: frame)
33
+ handler.apply_to_without_evaluating(args, frame)
34
34
  break
35
35
  end
36
36
  end
@@ -93,7 +93,7 @@ module Lisp
93
93
  local_env = Lisp::EnvironmentFrame.extending(env)
94
94
  local_env.bind_locally(Symbol.named("self"), Lisp::NativeObject.with_value(self))
95
95
  processed_args = args.map {|a| Lisp::ClassObject.convert_to_lisp(a)}
96
- Lisp::ClassObject.convert_to_ruby(body.apply_to(Lisp::ConsCell.array_to_list(processed_args), in: local_env), in: local_env)
96
+ Lisp::ClassObject.convert_to_ruby(body.apply_to(Lisp::ConsCell.array_to_list(processed_args), local_env), local_env)
97
97
  end
98
98
  Lisp::String.with_value("OK")
99
99
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubymotionlisp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Astels
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-16 00:00:00.000000000 Z
11
+ date: 2015-02-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An embeddable Lisp as an extension language for RubyMotion
14
14
  email: dastels@icloud.com
@@ -17,7 +17,6 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - README.md
20
- - lib/rubylisp.rb
21
20
  - lib/rubylisp/alist.rb
22
21
  - lib/rubylisp/assignment.rb
23
22
  - lib/rubylisp/atom.rb
@@ -26,7 +25,6 @@ files:
26
25
  - lib/rubylisp/builtins.rb
27
26
  - lib/rubylisp/character.rb
28
27
  - lib/rubylisp/cons_cell.rb
29
- - lib/rubylisp/debug.rb
30
28
  - lib/rubylisp/environment_frame.rb
31
29
  - lib/rubylisp/equivalence.rb
32
30
  - lib/rubylisp/exception.rb
data/lib/rubylisp.rb DELETED
@@ -1,2 +0,0 @@
1
- require 'set'
2
- Dir[File.dirname(__FILE__) + '/rubylisp/*.rb'].each {|file| require file }
@@ -1,238 +0,0 @@
1
- # Copyright 2014 David R. Astels. All rights reserved.
2
- # Use of this source code is governed by a BSD-style
3
- # license that can be found in the LICENSE file.
4
-
5
-
6
- module Lisp
7
-
8
- class Debug
9
-
10
- class <<self
11
- attr_accessor :trace, :on_error, :on_entry, :single_step, :interactive, :target_env, :eval_in_debug_repl
12
- end
13
-
14
-
15
- def self.register
16
- self.trace = false
17
- self.on_error = false
18
- self.on_entry = Set.new
19
- self.single_step = false
20
- self.interactive = false
21
-
22
- Primitive.register("debug-trace") {|args, env| Lisp::Debug::debug_trace_impl(args, env) }
23
- Primitive.register("debug-on-error") {|args, env| Lisp::Debug::debug_on_error_impl(args, env) }
24
- Primitive.register("debug-on-entry") {|args, env| Lisp::Debug::debug_on_entry_impl(args, env) }
25
- Primitive.register("add-debug-on-entry") {|args, env| Lisp::Debug::add_debug_on_entry_impl(args, env) }
26
- Primitive.register("remove-debug-on-entry") {|args, env| Lisp::Debug::remove_debug_on_entry_impl(args, env) }
27
- Primitive.register("debug") {|args, env| Lisp::Debug::debug_impl(args, env) }
28
- Primitive.register("dump") {|args, env| Lisp::Debug::dump_imp2l(args, env) }
29
- end
30
-
31
-
32
- def self.debug_trace_impl(args, env)
33
- return Lisp::Debug.process_error("debug-trace requires 1 argument", env) unless args.length == 1
34
- flag = args.car.evaluate(env)
35
- return Lisp::Debug.process_error("the argument to debug-trace has to be a boolean", env) unless flag.boolean?
36
- self.trace = flag.value
37
- flag
38
- end
39
-
40
- def self.debug_on_error_impl(args, env)
41
- return Lisp::Debug.process_error("debug-on-error requires 1 argument", env) unless args.length == 1
42
- flag = args.car.evaluate(env)
43
- return Lisp::Debug.process_error("the argument to debug-on-error has to be a boolean", env) unless flag.boolean?
44
- self.on_error = flag.value
45
- flag
46
- end
47
-
48
- def self.debug_on_entry_impl(args, env)
49
- Lisp::ConsCell.array_to_list(self.on_entry.to_a.sort.map {|s| Lisp::String.with_value(s) })
50
- end
51
-
52
- def self.add_debug_on_entry_impl(args, env)
53
- return Lisp::Debug.process_error("add-debug-on-error requires 1 argument", env) unless args.length == 1
54
- f = args.car.evaluate(env)
55
- return Lisp::Debug.process_error("the argument to add-debug-on-error has to be a function", env) unless f.function? || f.primitive?
56
-
57
- self.on_entry.add(f.name)
58
- f
59
- end
60
-
61
- def self.remove_debug_on_entry_impl(args, env)
62
- return Lisp::Debug.process_error("remove-debug-on-error requires 1 argument", env) unless args.length == 1
63
- f = args.car.evaluate(env)
64
- return Lisp::Debug.process_error("the argument to remove-debug-on-error has to be a function", env) unless f.function?
65
-
66
- self.on_entry.remove(f.name)
67
- f
68
- end
69
-
70
- def self.debug_impl(args, env)
71
- end
72
-
73
- def self.dump_impl(args, env)
74
- env.dump()
75
- end
76
-
77
-
78
- def self.process_state(tokens)
79
- if tokens.size != 2
80
- puts "Missing on/off"
81
- [false, false]
82
- else
83
- case tokens[1]
84
- when 'on'
85
- [true, true]
86
- when 'off'
87
- [true, false]
88
- else
89
- puts "on/off expected."
90
- [false, false]
91
- end
92
- end
93
- end
94
-
95
-
96
- def func_or_nil(fname, env)
97
- f = env.value_of(Lisp::Symbol.named(fname))
98
- if f.nil? || !f.function?
99
- puts "No such function."
100
- nil
101
- else
102
- f
103
- end
104
- end
105
-
106
-
107
- def self.debug_repl(env)
108
- parser = Lisp::Parser.new
109
- puts("Debugging: #{env.current_code[0]}")
110
- while line = Readline.readline('D> ', true)
111
- if !line.empty?
112
- if line[0] == ':'
113
- tokens = line[1..-1].split
114
- case tokens[0]
115
- when '(+'
116
- f = func_or_nil(tokens[1], env)
117
- self.on_entry.add(f.name) unless f.nil?
118
- when '(-'
119
- f = func_or_nil(tokens[1], env)
120
- self.on_entry.delete(f.name) unless f.nil?
121
- when '('
122
- self.on_entry.to_a.sort.each {|f| puts f}
123
- when '?'
124
- puts "RubyLisp Debugger"
125
- puts "-----------------"
126
- puts ":(+ func - debug on entry to func"
127
- puts ":(- func - don't debug on entry to func"
128
- puts ":( - show functions marked as debug on entry"
129
- puts ":? - show this command summary"
130
- puts ":b - show the environment stack"
131
- puts ":c - continue, exiting the debugger"
132
- puts ":d - do a full of the environment stack"
133
- puts ":e on/off - Enable/disable debug on error"
134
- puts ":f frame# - do a full dump of a single environment frame"
135
- puts ":q - quit GoLisp"
136
- puts ":r sexpr - return from the current evaluation with the specified value"
137
- puts ":s - single step (run to the next evaluation)"
138
- puts ":t on/off - Enable/disable tracing"
139
- puts ":u - continue until the enclosing environment frame is returned to"
140
- puts
141
- when 'b'
142
- env.dump_headers()
143
- puts
144
- when 'c'
145
- self.target_env = nil
146
- self.single_step = false
147
- self.eval_in_debug_repl = false
148
- return
149
- when 'd'
150
- env.dump
151
- when 'e'
152
- ok, state = process_state(tokens)
153
- self.on_error = state if ok
154
- when 'f'
155
- if tokens.size != 2
156
- puts "Missing frame number."
157
- else
158
- fnum = tokens[1].to_i
159
- env.dump_single_frame(fnum)
160
- end
161
- when 'q'
162
- exit()
163
- when 'r'
164
- self.eval_in_debug_repl = true
165
- code = parser.parse(tokens[1..-1].join(' '))
166
- return_value = code.evaluate(env)
167
- self.eval_in_debug_repl = false
168
- self.target_env = nil
169
- self.single_step = false
170
- self.eval_in_debug_repl = false
171
- return return_value
172
- when 's'
173
- self.single_step = true
174
- return
175
- when 't'
176
- ok, state = process_state(tokens)
177
- self.trace = state if ok
178
- when 'u'
179
- if env.previous.nil?
180
- puts "Already at top frame."
181
- else
182
- self.target_env = env
183
- return
184
- end
185
- end
186
- else
187
- begin
188
- self.eval_in_debug_repl = true
189
- code = parser.parse(line)
190
- value = code.evaluate(env)
191
- self.eval_in_debug_repl = false
192
- puts value.to_s
193
- rescue Exception => ex
194
- puts "ERROR: #{ex}"
195
- puts ex.backtrace
196
- end
197
- end
198
- end
199
- end
200
- end
201
-
202
- def self.process_error(error_message, env)
203
- if self.on_error && self.interactive
204
- puts "ERROR: #{error_message}"
205
- self.debug_repl(env)
206
- else
207
- raise error_message
208
- end
209
- end
210
-
211
-
212
- def self.print_dashes(level)
213
- print("-" * level)
214
- end
215
-
216
-
217
- def self.log_eval(sexpr, env)
218
- if !self.eval_in_debug_repl && self.trace
219
- depth = env.depth
220
- print("% #d: " % depth)
221
- print_dashes(depth)
222
- puts("> #{sexpr.to_s}")
223
- end
224
- end
225
-
226
-
227
- def self.log_result(result, env)
228
- if !self.eval_in_debug_repl && self.trace
229
- depth = env.depth
230
- print("% #d: <" % depth)
231
- print_dashes(depth)
232
- puts(" #{result.to_s}")
233
- end
234
- end
235
-
236
-
237
- end
238
- end