nydp 0.2.0 → 0.2.1

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
  SHA1:
3
- metadata.gz: f7639157cc6f6e6959cec1491e180b71930204ae
4
- data.tar.gz: 80357a5ba720caa3065845a575a154087d9ff25c
3
+ metadata.gz: f085b808304453eb137f0660f08359d1ff6c540f
4
+ data.tar.gz: 534eaffd255ebc2b1f5c665843995753182bab95
5
5
  SHA512:
6
- metadata.gz: 8a0824e45483b39ca5cd26730753025ffc57a1a976a83ec4e16f10c62c217993f30ef85d892aec26c52e08fb36dc8be9e55f460ed10a492bb2955260eb5e0636
7
- data.tar.gz: c8530f8e2afcce52d310d2b76bf09de29dc162fd97df159e4c4fd3a7ac1c35b1deb103972d00fd7d7027ded94d98a85683cee28f849329f20975a955f85dbc62
6
+ metadata.gz: 6698547343c2b0b0b3744504323460c0128ee004cff02a701173a931f293bed5c820ba1e75392969a7fad6ac80997ca5e9a30fe737fb5eff2e76e4fdfb85b6b8
7
+ data.tar.gz: 66870fc5bf0bbeb8b5887f14338ecf2fa44e511005a8c494b5e4f34d4d75af80b97e25b6632aadd988a3676709a174550348ea30f9c93c6fabc005623eb6abe3
@@ -1,27 +1,77 @@
1
+ ((fn (this-chapter-name chapters chapter-new chapter-build chapter-add-to-chapter)
2
+ (assign chapters (hash))
3
+
4
+ (def chapter-end ()
5
+ (assign this-chapter-name nil))
6
+
7
+ (def chapter-start (name description)
8
+ (assign this-chapter-name name)
9
+ (chapter-describe description))
10
+
11
+ (def chapter-new (hsh name)
12
+ (hash-set hsh 'name name)
13
+ hsh)
14
+
15
+ (def chapter-names () (hash-keys chapters))
16
+
17
+ (def chapter-build (name chapter)
18
+ (cond chapter
19
+ chapter
20
+ (cond name
21
+ (hash-set chapters
22
+ name
23
+ (chapter-new (hash)
24
+ name)))))
25
+
26
+ (def chapter-find (name)
27
+ (chapter-build (cond name
28
+ name
29
+ this-chapter-name)
30
+ (hash-get chapters
31
+ name)))
32
+
33
+ (def chapter-add-to-chapter (chapter attribute thing)
34
+ (cond chapter
35
+ (hash-cons chapter attribute thing)))
36
+
37
+ (def chapter-add-item (item chapter-name)
38
+ (chapter-add-to-chapter (chapter-find chapter-name)
39
+ 'contents
40
+ item))
41
+
42
+ (def chapter-describe (description chapter-name)
43
+ (cond description
44
+ (chapter-add-to-chapter (chapter-find chapter-name)
45
+ 'description
46
+ description)))))
47
+
48
+ (assign this-script nil)
49
+ (assign this-plugin nil)
50
+
1
51
  ((fn (dox examples chapters dox-new dox-build)
2
52
  (def dox-build (hsh name what texts args src chapters)
3
- (hash-set hsh 'name name )
4
- (hash-set hsh 'what what )
5
- (hash-set hsh 'texts texts )
6
- (hash-set hsh 'args args )
7
- (hash-set hsh 'src src )
8
- (hash-set hsh 'chapters chapters )
53
+ (hash-set hsh 'name name )
54
+ (hash-set hsh 'what what )
55
+ (hash-set hsh 'texts texts )
56
+ (hash-set hsh 'args args )
57
+ (hash-set hsh 'src src )
58
+ (hash-set hsh 'chapters chapters )
59
+ (hash-set hsh 'file this-script )
60
+ (hash-set hsh 'plugin this-plugin )
9
61
  hsh)
10
62
 
11
63
  (def dox-new (item)
12
64
  (hash-cons dox (hash-get item 'name) item)
13
- (dox-add-to-chapters (hash-get item 'chapters) item))
65
+ (dox-add-to-chapters item (hash-get item 'chapters)))
14
66
 
15
67
  (def dox-add-doc (name what texts args src chapters)
16
68
  (dox-new (dox-build (hash) name what texts args src chapters)))
17
69
 
18
- (def dox-add-to-chapter (chapter item)
19
- (hash-cons chapters chapter item))
20
-
21
- (def dox-add-to-chapters (chapters item)
70
+ (def dox-add-to-chapters (item chapters)
71
+ (chapter-add-item item)
22
72
  (cond chapters
23
- (do (dox-add-to-chapter (car chapters) item)
24
- (dox-add-to-chapters (cdr chapters) item))
73
+ (do (chapter-add-item item (car chapters))
74
+ (dox-add-to-chapters item (cdr chapters)))
25
75
  item))
26
76
 
27
77
  (def dox-add-examples (name example-exprs)
@@ -46,6 +96,21 @@
46
96
  (def dox-example-names () (hash-keys examples )))
47
97
  (hash) (hash) (hash) nil)
48
98
 
99
+ (def plugin-start (name) (assign this-plugin name) (chapter-end))
100
+ (def plugin-end (name) (assign this-plugin nil ) (chapter-end))
101
+ (def script-start (name) (assign this-script name) (chapter-end))
102
+ (def script-end (name) (assign this-script nil ) (chapter-end))
103
+
104
+ (def script-run (event name)
105
+ (cond (eq? event 'plugin-start)
106
+ (plugin-start name)
107
+ (cond (eq? event 'plugin-end)
108
+ (plugin-end name)
109
+ (cond (eq? event 'script-start)
110
+ (script-start name)
111
+ (cond (eq? event 'script-end)
112
+ (script-end name))))))
113
+
49
114
  (def filter-form (hsh form)
50
115
  ; if the car of 'form is a key of 'hsh, add the cdr of 'form to the value of the key in 'hsh
51
116
  ; otherwise add the form to the list whose key is nil
@@ -1,16 +1,55 @@
1
- (dox-add-doc 'cons 'def '("with args a and b, returns a new cons cell, (a . b)") '(a b) nil)
2
- (dox-add-doc 'car 'def '("with args a, where a is a cons cell (x . y), return x." "Commonly used to get the first element of a list") '(a) nil)
3
- (dox-add-doc 'cdr 'def '("with args a, where a is a cons cell (x . y), return y." "Commonly used to get contents of a list, excluding the first element") '(a) nil)
4
- (dox-add-doc '+ 'def '("with rest-args things, return the sum of the elements of things." "Will also increment dates and concatenate strings and lists") 'things nil)
5
- (dox-add-doc '- 'def '("return the result of subtracting all other args from the first arg." "(- a b c d) is equivalent to (- a (+ b c d))") 'things nil)
6
- (dox-add-doc '* 'def '("with rest-args things, return the product of the elements of things.") 'things nil)
7
- (dox-add-doc '/ 'def '("return the result of dividing all other args into the first arg." "(/ a b c d) is equivalent to (/ a (* b c d))") 'things nil)
8
- (dox-add-doc '> 'def '("true if each arg is greater than the next arg") 'things nil)
9
- (dox-add-doc '< 'def '("true if each arg is less than the next arg") 'things nil)
10
- (dox-add-doc 'mod 'def '("return the remainder after diving a by b") '(a b) nil)
11
- (dox-add-doc 'eval 'def '("evaluate the given lisp expression") '(expr) nil)
12
- (dox-add-doc 'hash 'def '("create a new Hash instance") nil nil)
13
- (dox-add-doc 'apply 'def '("invoke f with args 'args") '(f . args) nil)
14
- (dox-add-doc 'date 'def '("create a new date instance") '(year month day) nil)
15
- (dox-add-doc 'error 'def '("raise an exception") 'args nil)
16
- (dox-add-doc 'parse 'def '("parse the given string and return the corresponding lisp objects") '(str) nil)
1
+ (dox-add-doc 'cons 'def '("with args a and b, returns a new cons cell, (a . b)") '(a b) nil '(list-manipulation))
2
+ (dox-add-doc 'car 'def '("with args a, where a is a cons cell (x . y), return x." "Commonly used to get the first element of a list") '(a) nil '(list-manipulation))
3
+ (dox-add-doc 'cdr 'def '("with args a, where a is a cons cell (x . y), return y." "Commonly used to get contents of a list, excluding the first element") '(a) nil '(list-manipulation))
4
+ (dox-add-doc '+ 'def '("with rest-args things, return the sum of the elements of things." "Will also increment dates and concatenate strings and lists") 'things nil '(math))
5
+ (dox-add-doc '- 'def '("return the result of subtracting all other args from the first arg." "(- a b c d) is equivalent to (- a (+ b c d))") 'things nil '(math))
6
+ (dox-add-doc '* 'def '("with rest-args things, return the product of the elements of things.") 'things nil '(math))
7
+ (dox-add-doc '/ 'def '("return the result of dividing all other args into the first arg." "(/ a b c d) is equivalent to (/ a (* b c d))") 'things nil '(math))
8
+ (dox-add-doc '> 'def '("true if each arg is greater than the next arg") 'things nil '(math))
9
+ (dox-add-doc '< 'def '("true if each arg is less than the next arg") 'things nil '(math))
10
+ (dox-add-doc 'mod 'def '("return the remainder after diving a by b") '(a b) nil '(math))
11
+ (dox-add-doc 'eval 'def '("evaluate the given lisp expression") '(expr) nil '(nydp-core))
12
+ (dox-add-doc 'hash 'def '("create a new Hash instance") nil nil '(hash-manipulation))
13
+ (dox-add-doc 'apply 'def '("invoke f with args 'args") '(f . args) nil '(nydp-core))
14
+ (dox-add-doc 'date 'def '("create a new date instance") '(year month day) nil '(time-date))
15
+ (dox-add-doc 'error 'def '("raise an exception") 'args nil '(flow-control))
16
+ (dox-add-doc 'parse 'def '("parse the given string and return the corresponding lisp objects") '(str) nil '(nydp-core))
17
+ (dox-add-doc 'p 'def '("print a message on $stdout") 'args nil '(nydp-core))
18
+ (dox-add-doc 'sort 'def '("return 'things, sorted according to their natural sort order") 'things nil '(list-manipulation))
19
+ (dox-add-doc 'sqrt 'def '("return the square root of 'arg") '(arg) nil '(math))
20
+ (dox-add-doc 'sym 'def '("return the symbol for the given string 'arg") '(arg) nil '(nydp-core))
21
+ (dox-add-doc 'ensuring 'def '("execute 'tricky-f, then 'ensure-f afterwards"
22
+ "'ensure-f will always be executed, even if there is an error in 'tricky-f"
23
+ "returns the return value of 'tricky-f") '(ensure-f tricky-f) nil '(flow-control))
24
+ (dox-add-doc 'inspect 'def '("return a string representing 'arg, potentially (but not always) in a way that can be parsed back in to get the original object") '(arg) nil '(nydp-core))
25
+ (dox-add-doc 'comment 'def '("does nothing at all." "Intercepted inside 'def and 'mac and used for documentation") '(arg) nil '(nydp-core))
26
+ (dox-add-doc 'parse-in-string 'def '("parse the given string assuming a string-open delimiter has already been encountered") '(str) nil '(nydp-core))
27
+ (dox-add-doc 'random-string 'def '("return a random string of length 'len (default 10)") '(len) nil '(string-manipulation))
28
+ (dox-add-doc 'to-string 'def '("return a human-readable string representation of 'arg") '(arg) nil '(string-manipulation))
29
+ (dox-add-doc 'string-length 'def '("return the length of 'arg") '(arg) nil '(string-manipulation))
30
+ (dox-add-doc 'string-replace 'def '("replace 'pattern with 'insert in 'str") '(pattern insert str) nil '(string-manipulation))
31
+ (dox-add-doc 'string-split 'def '("split 'str delimited by 'delim") '(str delim) nil '(string-manipulation))
32
+ (dox-add-doc 'time 'def '("with no args, return the current time."
33
+ "With one arg, if 'arg-0 is a number, return the current time plus 'arg-0 seconds."
34
+ "With one arg, if 'arg-0 is a date, return the time at the beginning of the given date."
35
+ "With one arg, if 'arg-0 is a time, return the number of seconds between 'arg-0 and now."
36
+ "With two args, 'arg-0 must be a time."
37
+ "If 'arg-1 is a number, return 'arg-0 plus 'arg-1 seconds as a time object."
38
+ "If 'arg-1 is a time, return the number of seconds between the two (- 'arg-0 arg-1)."
39
+ "Otherwise, expect 3, 4, 5, or 6 args, to construct a time from"
40
+ "year, month, date, hours, minutes, seconds, milliseconds, reading arguments in that order,"
41
+ "where hours, minutes, seconds, and milliseconds are optional") 'args nil '(date-time))
42
+ (dox-add-doc 'thread-locals 'def '("return a hash bound to the current thread") nil nil '(nydp-core))
43
+ (dox-add-doc 'type-of 'def '("return a symbol for the type of 'arg") '(arg) nil '(nydp-core))
44
+ (dox-add-doc 'eq? 'def '("return 't if 'arg-0 and 'arg-1 are equal, nil otherwise") '(arg-0 arg-1) nil '(nydp-core))
45
+ (dox-add-doc 'cdr-set 'def '("set the cdr of the given 'cell to 'arg, returns 'cell") '(cell arg) nil '(list-manipulation))
46
+ (dox-add-doc 'hash-get 'def '("return the value stored by 'key in 'hsh") '(hsh key) nil '(hash-manipulation))
47
+ (dox-add-doc 'hash-set 'def '("store 'val under 'key in 'hsh, return 'val") '(hsh key val) nil '(hash-manipulation))
48
+ (dox-add-doc 'hash-keys 'def '("return the list of keys in 'hsh") '(hsh) nil '(hash-manipulation))
49
+ (dox-add-doc 'hash-key? 'def '("return 't if 'key is a key of 'hsh") '(hsh key) nil '(hash-manipulation))
50
+ (dox-add-doc 'hash-merge 'def '("return a new hash containing keys and values from 'h0 and 'h1, where values of 'h1 override values of 'h0") '(h0 h1) nil '(hash-manipulation))
51
+ (dox-add-doc 'vm-info 'def '("return some information about the state of the current thread") nil nil '(nydp-core))
52
+ (dox-add-doc 'pre-compile 'def '("transform parsed forms before the compile and eval stages") '(arg) nil '(nydp-compilation))
53
+ (dox-add-doc 'script-run 'def '("announces the start of a plugin load or a script load."
54
+ "'event may be one of '(script-start script-end plugin-start plugin-end)"
55
+ "'name is the name of the script or plugin concerned") '(event name) nil '(nydp-core))
@@ -1,3 +1,5 @@
1
+ (assign script-name "core-012-utils.nydp")
2
+
1
3
  (dox-add-doc 'if
2
4
  'mac
3
5
  '("with arguments a, return a"
@@ -26,3 +28,17 @@
26
28
  (cons (f (car things)) (map f (cdr things)))
27
29
  (map f (list things)))
28
30
  '(list-manipulation))
31
+
32
+ (dox-add-doc 'rev
33
+ 'def
34
+ '("returns 'things in reverse order")
35
+ '(things)
36
+ '(rev-accum things nil)
37
+ '(list-manipulation))
38
+
39
+ (dox-add-doc 'hash-cons
40
+ 'def
41
+ '("push 'v onto the value for 'k in 'h")
42
+ '(h k v)
43
+ '(hash-set h k (cons v (hash-get h k)))
44
+ '(hash-manipulation))
@@ -11,9 +11,9 @@
11
11
  (p "Benchmark: ~desc - ~repeats runs of ~iterations iterations each")
12
12
  (let times 0
13
13
  (for reps 1 repeats
14
- (let time (millisecs)
14
+ (let started (time)
15
15
  (bm-repeat f iterations)
16
- (let elapsed (- (millisecs) time)
16
+ (let elapsed (- (time) started)
17
17
  (assign times (+ elapsed times))
18
18
  (p " took: ~elapsed ms, ~(/ elapsed iterations) ms per iteration"))))
19
19
  (p "total ~(just times), average ~(/ times repeats) per run")
@@ -22,8 +22,6 @@
22
22
  ("ensuring" (inspect ensuring ) "builtin/ensuring" )
23
23
  ("inspect" (inspect inspect ) "builtin/inspect" )
24
24
  ("comment" (inspect comment ) "builtin/comment" )
25
- ("millisecs" (inspect millisecs ) "builtin/millisecs" )
26
- ("load-tests" (inspect load-tests ) "builtin/load-tests" )
27
25
  ("handle-error" (inspect handle-error ) "builtin/handle-error" )
28
26
  ("parse-in-string" (inspect parse-in-string ) "builtin/parse-in-string" )
29
27
  ("random-string" (inspect random-string ) "builtin/random-string" )
@@ -2,7 +2,7 @@ class Nydp::Builtin::Eval
2
2
  include Nydp::Builtin::Base, Singleton
3
3
 
4
4
  def builtin_invoke vm, args
5
- evaluator = Nydp::Evaluator.new Nydp::VM.new(vm.ns), vm.ns
5
+ evaluator = Nydp::Evaluator.new Nydp::VM.new(vm.ns), vm.ns, "<eval>"
6
6
  vm.push_arg evaluator.evaluate args.car
7
7
  end
8
8
  end
@@ -0,0 +1,7 @@
1
+ class Nydp::Builtin::ScriptRun
2
+ include Nydp::Builtin::Base, Singleton
3
+
4
+ def builtin_invoke vm, args
5
+ vm.push_arg args
6
+ end
7
+ end
data/lib/nydp/core.rb CHANGED
@@ -8,6 +8,10 @@ module Nydp
8
8
  File.join File.expand_path(File.dirname(__FILE__)), name
9
9
  end
10
10
 
11
+ def base_path
12
+ relative_path "../lisp/"
13
+ end
14
+
11
15
  def load_rake_tasks
12
16
  load relative_path '../tasks/tests.rake'
13
17
  end
@@ -48,8 +52,6 @@ module Nydp
48
52
  Symbol.mk(:ensuring, ns).assign(Nydp::Builtin::Ensuring.instance)
49
53
  Symbol.mk(:inspect, ns).assign(Nydp::Builtin::Inspect.instance)
50
54
  Symbol.mk(:comment, ns).assign(Nydp::Builtin::Comment.instance)
51
- Symbol.mk(:millisecs, ns).assign(Nydp::Builtin::Millisecs.instance)
52
- Symbol.mk("load-tests", ns).assign(Nydp::Builtin::LoadTests.instance)
53
55
  Symbol.mk("handle-error" , ns).assign(Nydp::Builtin::HandleError.instance)
54
56
  Symbol.mk("parse-in-string", ns).assign(Nydp::Builtin::ParseInString.instance)
55
57
  Symbol.mk("random-string" , ns).assign(Nydp::Builtin::RandomString.instance)
@@ -70,6 +72,7 @@ module Nydp
70
72
  Symbol.mk(:"hash-merge", ns).assign(Nydp::Builtin::HashMerge.instance)
71
73
  Symbol.mk(:"vm-info", ns).assign Nydp::Builtin::VmInfo.instance
72
74
  Symbol.mk(:"pre-compile", ns).assign Nydp::Builtin::PreCompile.instance
75
+ Symbol.mk(:"script-run" , ns).assign Nydp::Builtin::ScriptRun.instance
73
76
  end
74
77
  end
75
78
  end
data/lib/nydp/pair.rb CHANGED
@@ -2,17 +2,21 @@ class Nydp::Pair
2
2
  include Nydp::Helper, Enumerable
3
3
  extend Nydp::Helper
4
4
 
5
- attr_accessor :car, :cdr
5
+ attr_reader :car, :cdr
6
6
 
7
7
  def initialize car, cdr
8
8
  @car, @cdr = car, cdr
9
9
  end
10
10
 
11
- def nydp_type ; :pair ; end
12
- def caar ; car.car ; end
13
- def cadr ; cdr.car ; end
14
- def cdar ; car.cdr ; end
15
- def cddr ; cdr.cdr ; end
11
+ def nydp_type ; :pair ; end
12
+ def caar ; car.car ; end
13
+ def cadr ; cdr.car ; end
14
+ def cdar ; car.cdr ; end
15
+ def cddr ; cdr.cdr ; end
16
+ def car= thing ; @car = thing ; @_hash = nil ; end
17
+ def cdr= thing ; @cdr = thing ; @_hash = nil ; end
18
+ def hash ; @_hash ||= (car.hash + cdr.hash) ; end
19
+ def eql? other ; self == other ; end
16
20
 
17
21
  def to_ruby list=[]
18
22
  list << n2r(car)
data/lib/nydp/runner.rb CHANGED
@@ -37,11 +37,12 @@ module Nydp
37
37
  end
38
38
 
39
39
  class Evaluator
40
- attr_accessor :vm, :ns
40
+ attr_accessor :vm, :ns, :name
41
41
 
42
- def initialize vm, ns
43
- @vm = vm
44
- @ns = ns
42
+ def initialize vm, ns, name
43
+ @name = name
44
+ @vm = vm
45
+ @ns = ns
45
46
  @precompile = Symbol.mk(:"pre-compile", ns)
46
47
  @quote = Symbol.mk(:quote, ns)
47
48
  end
@@ -73,8 +74,8 @@ module Nydp
73
74
  end
74
75
 
75
76
  class Runner < Evaluator
76
- def initialize vm, ns, stream, printer=nil
77
- super vm, ns
77
+ def initialize vm, ns, stream, printer=nil, name=nil
78
+ super vm, ns, name
78
79
  @printer = printer
79
80
  @parser = Nydp::Parser.new(ns)
80
81
  @tokens = Nydp::Tokeniser.new stream
@@ -92,16 +93,21 @@ module Nydp
92
93
  end
93
94
 
94
95
  def run
96
+ Nydp.apply_function ns, :"script-run", :"script-start", name
95
97
  res = Nydp::NIL
96
- while !@tokens.finished
97
- expr = @parser.expression(@tokens)
98
- unless expr.nil?
99
- begin
100
- print(res = evaluate(expr))
101
- rescue Exception => e
102
- handle_run_error e
98
+ begin
99
+ while !@tokens.finished
100
+ expr = @parser.expression(@tokens)
101
+ unless expr.nil?
102
+ begin
103
+ print(res = evaluate(expr))
104
+ rescue Exception => e
105
+ handle_run_error e
106
+ end
103
107
  end
104
108
  end
109
+ ensure
110
+ Nydp.apply_function ns, :"script-run", :"script-end", name
105
111
  end
106
112
  res
107
113
  end
data/lib/nydp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nydp
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/nydp.rb CHANGED
@@ -7,20 +7,26 @@ module Nydp
7
7
  def self.loadfiles; PLUGINS.map(&:loadfiles).flatten ; end
8
8
  def self.testfiles; PLUGINS.map(&:testfiles).flatten ; end
9
9
  def self.plugin_names ; PLUGINS.map(&:name) ; end
10
- def self.loadall ns, files
10
+ def self.loadall ns, plugin, files
11
11
  vm = VM.new(ns)
12
+ apply_function ns, :"script-run", :"plugin-start", plugin.name if plugin
12
13
  files.each { |f|
14
+ script_name = f.gsub plugin.base_path, ""
13
15
  reader = Nydp::StreamReader.new(File.new(f))
14
- Nydp::Runner.new(vm, ns, reader).run
16
+ Nydp::Runner.new(vm, ns, reader, nil, (script_name || f)).run
15
17
  }
18
+ ensure
19
+ apply_function ns, :"script-run", :"plugin-end", plugin.name if plugin
16
20
  end
17
21
 
18
22
  def self.build_nydp extra_files=nil
19
23
  ns = { }
20
24
  setup(ns)
21
- loadall ns, loadfiles
22
- loadall ns, testfiles
23
- loadall ns, extra_files if extra_files
25
+ PLUGINS.each { |plg|
26
+ loadall ns, plg, plg.loadfiles
27
+ loadall ns, plg, plg.testfiles
28
+ }
29
+ loadall ns, nil, extra_files if extra_files
24
30
  ns
25
31
  end
26
32
 
@@ -33,17 +39,17 @@ module Nydp
33
39
  vm.thread
34
40
  end
35
41
 
36
- def self.reader txt ; Nydp::StringReader.new txt ; end
37
- def self.eval_src ns, src_txt ; eval_with Nydp::Runner, ns, src_txt ; end
38
- def self.eval_src! ns, src_txt ; eval_with Nydp::ExplodeRunner, ns, src_txt ; end
39
- def self.eval_with runner, ns, src_txt ; runner.new(VM.new(ns), ns, reader(src_txt)).run ; end
42
+ def self.reader txt ; Nydp::StringReader.new txt ; end
43
+ def self.eval_src ns, src_txt, name=nil ; eval_with Nydp::Runner, ns, src_txt, name ; end
44
+ def self.eval_src! ns, src_txt, name=nil ; eval_with Nydp::ExplodeRunner, ns, src_txt, name ; end
45
+ def self.eval_with runner, ns, src_txt, name ; runner.new(VM.new(ns), ns, reader(src_txt), nil, name).run ; end
40
46
 
41
47
  def self.repl
42
48
  puts "welcome to nydp"
43
49
  puts "^D to exit"
44
50
  reader = Nydp::ReadlineReader.new $stdin, "nydp > "
45
51
  ns = build_nydp
46
- Nydp::Runner.new(VM.new(ns), ns, reader, $stdout).run
52
+ Nydp::Runner.new(VM.new(ns), ns, reader, $stdout, "<stdin>").run
47
53
  end
48
54
 
49
55
  def self.tests *options
@@ -51,7 +57,7 @@ module Nydp
51
57
  puts "welcome to nydp : running tests"
52
58
  reader = Nydp::StringReader.new "(run-all-tests #{verbose})"
53
59
  ns = build_nydp
54
- Nydp::Runner.new(VM.new(ns), ns, reader).run
60
+ Nydp::Runner.new(VM.new(ns), ns, reader, nil, "<test-runner>").run
55
61
  end
56
62
 
57
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nydp
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
  - Conan Dalton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-26 00:00:00.000000000 Z
11
+ date: 2016-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -167,8 +167,6 @@ files:
167
167
  - lib/nydp/builtin/inspect.rb
168
168
  - lib/nydp/builtin/is_equal.rb
169
169
  - lib/nydp/builtin/less_than.rb
170
- - lib/nydp/builtin/load_tests.rb
171
- - lib/nydp/builtin/millisecs.rb
172
170
  - lib/nydp/builtin/minus.rb
173
171
  - lib/nydp/builtin/modulo.rb
174
172
  - lib/nydp/builtin/parse.rb
@@ -178,6 +176,7 @@ files:
178
176
  - lib/nydp/builtin/puts.rb
179
177
  - lib/nydp/builtin/quit.rb
180
178
  - lib/nydp/builtin/random_string.rb
179
+ - lib/nydp/builtin/script_run.rb
181
180
  - lib/nydp/builtin/sort.rb
182
181
  - lib/nydp/builtin/sqrt.rb
183
182
  - lib/nydp/builtin/string_match.rb
@@ -1,8 +0,0 @@
1
- class Nydp::Builtin::LoadTests
2
- include Nydp::Builtin::Base, Singleton
3
-
4
- def builtin_invoke vm, args
5
- Nydp.loadall vm, vm.ns, Nydp.testfiles
6
- vm.push_arg Nydp::NIL
7
- end
8
- end
@@ -1,7 +0,0 @@
1
- class Nydp::Builtin::Millisecs
2
- include Nydp::Helper, Nydp::Builtin::Base, Singleton
3
-
4
- def builtin_invoke vm, args
5
- vm.push_arg (Time.now.to_f * 1000).to_i
6
- end
7
- end