nydp 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +32 -3
- data/lib/lisp/core-010-precompile.nydp +31 -13
- data/lib/lisp/core-015-documentation.nydp +5 -1
- data/lib/lisp/core-030-syntax.nydp +8 -1
- data/lib/lisp/core-040-utils.nydp +1 -1
- data/lib/lisp/core-050-test-runner.nydp +3 -5
- data/lib/lisp/core-080-pretty-print.nydp +1 -0
- data/lib/lisp/tests/date-examples.nydp +31 -0
- data/lib/lisp/tests/def-examples.nydp +16 -0
- data/lib/lisp/tests/foundation-test.nydp +8 -0
- data/lib/lisp/tests/hash-examples.nydp +5 -0
- data/lib/lisp/tests/parser-tests.nydp +4 -0
- data/lib/lisp/tests/pre-compile-examples.nydp +19 -0
- data/lib/lisp/tests/pretty-print-tests.nydp +4 -0
- data/lib/nydp/date.rb +16 -5
- data/lib/nydp/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37191dabf60a754266ff7898dad970be1f0cedcd
|
4
|
+
data.tar.gz: fa74bdef9dff4ec5be87e23630064e6a9603ea13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d32cdb68d796ca1434fed7e1e5603e718f00dcadca3779e738e870308e9a4b66a64a5e0d6c5dedb2c09cb0e929fc7560f23b40e8aa32ed42ffbcb702164c3197
|
7
|
+
data.tar.gz: 762f0e8f0b52151b8e85d8b0e4221979207609587f96f061b58fb02c18d55e8a759a10642ffc67cfeb35a7fbea53b4fdd16d42c915606240059b22b4d1f4b01f
|
data/README.md
CHANGED
@@ -65,7 +65,6 @@ After parsing its input, `'nydp` passes the result as an argument to the `pre-co
|
|
65
65
|
You can override `pre-compile` to transform the expression in any way you wish. By default, the `boot.nydp` implementation of `pre-compile` performs macro-expansion.
|
66
66
|
|
67
67
|
|
68
|
-
|
69
68
|
```lisp
|
70
69
|
(def pre-compile (expr)
|
71
70
|
(map pre-compile
|
@@ -80,7 +79,6 @@ nydp > (pre-compile '(yoyo 42))
|
|
80
79
|
==> (do-yoyo 42)
|
81
80
|
```
|
82
81
|
|
83
|
-
|
84
82
|
#### 2. Special symbol syntax
|
85
83
|
|
86
84
|
The parser detects syntax embedded in smybol names and emits a form whose first element names the syntax used. Here's an example:
|
@@ -230,7 +228,7 @@ However, this doesn't need to be built-in, it can be done with macros alone. On
|
|
230
228
|
(def fun (a b . others) ...)
|
231
229
|
```
|
232
230
|
|
233
|
-
In this example, `
|
231
|
+
In this example, `others` is either nil, or a list containing the third and subsequent arguments to the call to `fun`. For many examples of this kind of invocation, see [invocation-tests](lib/lisp/tests/invocation-tests.nydp) in the `tests` directory.
|
234
232
|
|
235
233
|
|
236
234
|
|
@@ -398,6 +396,37 @@ nydp > (p:pp:dox-src 'pp/find-breaks)
|
|
398
396
|
The pretty-printer is still rather primitive in that it only indents according to some hard-coded rules, and according to argument-count
|
399
397
|
for documented macros. It has no means of wrapping forms that get too long, or that extend beyond a certain predefined margin or column number.
|
400
398
|
|
399
|
+
#### 11 DSLs
|
400
|
+
|
401
|
+
The `pre-compile` system (described earlier in "Macro-expansion runs in lisp") is available for implementing local, mini-languages. To do this, use `pre-compile-with`
|
402
|
+
in a macro. `pre-compile-with` expects a hash with expansion rules, and an expression to expand using these rules. For example, to build a "describe" dsl :
|
403
|
+
|
404
|
+
```lisp
|
405
|
+
(= describe-dsl (hash))
|
406
|
+
(= describe-dsl.def (fn (a b c) `(a-special-kind-of-def ,a ,b ,c)))
|
407
|
+
(= describe-dsl.p (fn (w) `(alternative-p ,w)))
|
408
|
+
|
409
|
+
(mac describe (name expr outcome)
|
410
|
+
`(add-description ',name
|
411
|
+
(pre-compile-with describe-dsl ',expr)
|
412
|
+
',outcome))
|
413
|
+
```
|
414
|
+
|
415
|
+
In this example, `describe-dsl` establishes rules for expanding `def` and for `p` which will shadow their usual meanings, but only in the context
|
416
|
+
of a `describe` form.
|
417
|
+
|
418
|
+
This technique is useful to avoid cluttering the global macro-namespace with rules that are used only in a specific context. A word of warning:
|
419
|
+
if you shadow a popular name, for example `let`, `map` or `do`, you are likely to run into trouble when some non-shadowed macro inside your
|
420
|
+
dsl context expands into something you have shadowed; in this case your shadowy definitions will be used to further expand the result.
|
421
|
+
|
422
|
+
For example, if you shadow `with`, but not `let`, and then you use a `let` form within a sample of the dsl you are specifying ; the `let`
|
423
|
+
form expands into a `with` form, thinking the `with` will expand in the usual way, but in fact no, your private dsl is going to expand
|
424
|
+
this `with` in your private special way, possibly in a way that's incompatible with the form produced by `let`.
|
425
|
+
|
426
|
+
If, notwithstanding the aforementioned, the outcome works the way you expected it to, then you have the wrong kind of genius and your
|
427
|
+
license to program should be revoked.
|
428
|
+
|
429
|
+
|
401
430
|
## Installation
|
402
431
|
|
403
432
|
Add this line to your application's Gemfile:
|
@@ -1,22 +1,27 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
(assign mac-expand (fn (macfn name body)
|
2
|
+
(assign mac-expand (fn (names macfn name body)
|
4
3
|
(cond macfn
|
5
|
-
(pre-compile
|
4
|
+
(pre-compile-with names
|
5
|
+
(apply macfn body))
|
6
6
|
(cons name body))))
|
7
7
|
|
8
8
|
(assign macs (hash))
|
9
9
|
|
10
10
|
(assign pre-compile-expr
|
11
|
-
(fn (name body)
|
12
|
-
(mac-expand
|
11
|
+
(fn (names name body)
|
12
|
+
(mac-expand names
|
13
|
+
(hash-get names name)
|
14
|
+
name
|
15
|
+
body)))
|
13
16
|
|
14
17
|
(assign pre-compile-each
|
15
|
-
(fn (args)
|
18
|
+
(fn (names args)
|
16
19
|
(cond args
|
17
20
|
(cond (pair? args)
|
18
|
-
(cons (pre-compile
|
19
|
-
|
21
|
+
(cons (pre-compile-with names
|
22
|
+
(car args))
|
23
|
+
(pre-compile-each names
|
24
|
+
(cdr args)))
|
20
25
|
args))))
|
21
26
|
|
22
27
|
(assign pre-compile-msg
|
@@ -25,23 +30,36 @@
|
|
25
30
|
compiled))
|
26
31
|
|
27
32
|
(assign pre-compile-raw
|
28
|
-
(fn (arg)
|
33
|
+
(fn (names arg)
|
29
34
|
(cond (pair? arg)
|
30
35
|
(cond (eq? (car arg) 'quote)
|
31
36
|
arg
|
32
|
-
(pre-compile-each
|
37
|
+
(pre-compile-each names
|
38
|
+
(pre-compile-expr names
|
39
|
+
(car arg)
|
40
|
+
(cdr arg))))
|
33
41
|
arg)))
|
34
42
|
|
35
43
|
(assign pre-compile-debug
|
36
|
-
(fn (arg)
|
37
|
-
(pre-compile-msg arg
|
44
|
+
(fn (names arg)
|
45
|
+
(pre-compile-msg arg
|
46
|
+
(pre-compile-raw names
|
47
|
+
arg))))
|
38
48
|
|
39
49
|
(assign debug-pre-compile
|
40
50
|
(fn (arg)
|
41
|
-
(assign pre-compile
|
51
|
+
(assign pre-compile-with
|
52
|
+
(cond arg
|
53
|
+
pre-compile-debug
|
54
|
+
pre-compile-raw))))
|
42
55
|
|
43
56
|
(debug-pre-compile nil)
|
44
57
|
|
58
|
+
; builtin pre-compile does nothing; override here to provide macro-expansion
|
59
|
+
(assign pre-compile
|
60
|
+
(fn (arg)
|
61
|
+
(pre-compile-with macs arg)))
|
62
|
+
|
45
63
|
; we override this later to provide automatic documentation
|
46
64
|
(hash-set macs 'def
|
47
65
|
(fn (name args . body)
|
@@ -28,6 +28,8 @@
|
|
28
28
|
(def dox-examples (name)
|
29
29
|
(hash-get examples name))
|
30
30
|
|
31
|
+
(def dox-example-names () (hash-keys examples))
|
32
|
+
|
31
33
|
(def dox-arg-names (name)
|
32
34
|
(cond (dox? name)
|
33
35
|
(cadddr (car (dox-lookup name))))))
|
@@ -81,9 +83,11 @@
|
|
81
83
|
'args
|
82
84
|
'`((fn nil ,@args)))
|
83
85
|
|
86
|
+
(mac def-assign args `(assign ,@args))
|
87
|
+
|
84
88
|
(def define-def-expr (name args documentation body)
|
85
89
|
; used internally by 'def
|
86
|
-
`(do (assign ,name (fn ,args ,@body))
|
90
|
+
`(do (def-assign ,name (fn ,args ,@body))
|
87
91
|
(dox-add-doc ',name
|
88
92
|
'def
|
89
93
|
',documentation
|
@@ -168,12 +168,16 @@
|
|
168
168
|
,(build-hash-get-key:car rnames)
|
169
169
|
,value-expr)))
|
170
170
|
|
171
|
+
(def isa (type obj) (eq? (type-of obj) type))
|
172
|
+
|
171
173
|
(mac = (name value)
|
172
174
|
(if (isa 'symbol name)
|
173
175
|
`(assign ,name ,value)
|
174
176
|
(caris 'dot-syntax name)
|
175
177
|
(dot-syntax-assignment (cdr name) value)))
|
176
178
|
|
179
|
+
(mac def-assign args `(= ,@args))
|
180
|
+
|
177
181
|
(def brace-list-hash-key (k)
|
178
182
|
(if (isa 'symbol k) `(quote ,k)
|
179
183
|
(caris 'unquote k) (cadr k)
|
@@ -199,8 +203,11 @@
|
|
199
203
|
(build-ampersand-syntax (car rest))))
|
200
204
|
|
201
205
|
(mac brace-list-mono (arg) arg)
|
206
|
+
(mac brace-list-empty () '(hash))
|
202
207
|
|
203
208
|
(mac brace-list args
|
204
|
-
(if (no
|
209
|
+
(if (no args)
|
210
|
+
`(brace-list-empty)
|
211
|
+
(no (cdr args))
|
205
212
|
`(brace-list-mono ,(car args))
|
206
213
|
(brace-list-build-hash args)))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
(def eachr (f things)
|
2
3
|
(when things
|
3
4
|
(eachr f (cdr things))
|
@@ -78,7 +79,6 @@
|
|
78
79
|
(iso (cdr x) (cdr y)))))
|
79
80
|
|
80
81
|
(def x1 (thing) thing)
|
81
|
-
(def isa (type obj) (eq? (type-of obj) type))
|
82
82
|
(def sym? (arg) (isa 'symbol arg))
|
83
83
|
(def string? (arg) (isa 'string arg))
|
84
84
|
(mac just (arg) arg)
|
@@ -51,8 +51,6 @@
|
|
51
51
|
|
52
52
|
(mac examples-for (name . examples)
|
53
53
|
(let suite-name "examples for ~(pp name)"
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
',(collect (curry !caris 'comment)
|
58
|
-
examples)))))
|
54
|
+
(let plain-examples (collect (fn (x) (isa 'string (car x))) examples)
|
55
|
+
`(do (register-test '(suite ,suite-name ,@plain-examples))
|
56
|
+
(dox-add-examples ',name ',plain-examples)))))
|
@@ -0,0 +1,31 @@
|
|
1
|
+
(examples-for date
|
2
|
+
("creates a single date" (to-string (date 1965 6 8)) "1965-06-08" )
|
3
|
+
("navigates to next day" (let d (date 2004 3 11) (to-string d.tomorrow)) "2004-03-12" )
|
4
|
+
("navigates to previous day" (let d (date 2006 6 22) (to-string d.yesterday)) "2006-06-21" )
|
5
|
+
("navigates to previous year" (let d (date 1971 12 18) (to-string d.last-year)) "1970-12-18" )
|
6
|
+
("navigates to next year" (let d (date 1974 1 11) (to-string d.next-year)) "1975-01-11" )
|
7
|
+
("navigates to previous month" (let d (date 1971 12 18) (to-string d.last-month)) "1971-11-18" )
|
8
|
+
("navigates to next month" (let d (date 1974 1 11) (to-string d.next-month)) "1974-02-11" )
|
9
|
+
("jumps a year to previous month" (let d (date 1974 1 11) (to-string d.last-month)) "1973-12-11" )
|
10
|
+
("navigates to previous week" (let d (date 2008 2 16) (to-string d.last-week)) "2008-02-09" )
|
11
|
+
("navigates to next week" (let d (date 1972 11 13) (to-string d.next-week)) "1972-11-20" )
|
12
|
+
("navigates to year start" (let d (date 1972 11 13) (to-string d.beginning-of-year)) "1972-01-01" )
|
13
|
+
("navigates to year end" (let d (date 1972 11 13) (to-string d.end-of-year)) "1972-12-31" )
|
14
|
+
("navigates to month start" (let d (date 1971 11 18) (to-string d.beginning-of-month)) "1971-11-01" )
|
15
|
+
("navigates to month end" (let d (date 1971 11 18) (to-string d.end-of-month)) "1971-11-30" )
|
16
|
+
("navigates to week start" (let d (date 2015 11 6) (to-string d.beginning-of-week)) "2015-11-02" )
|
17
|
+
("navigates to week end" (let d (date 2015 11 6) (to-string d.end-of-week)) "2015-11-08" )
|
18
|
+
|
19
|
+
("returns its year" (let d (date 1999 12 31) d.year) 1999)
|
20
|
+
("returns its month" (let d (date 1999 12 31) d.month) 12 )
|
21
|
+
("returns its day" (let d (date 1999 12 31) d.day) 31 )
|
22
|
+
("returns its week-day" (let d (date 1999 12 31) d.week-day) 5 )
|
23
|
+
("recognises not monday" (let d (date 2015 11 1) d.monday? ) nil )
|
24
|
+
("recognises monday" (let d (date 2015 11 2) d.monday? ) t )
|
25
|
+
("recognises tuesday" (let d (date 2015 11 3) d.tuesday? ) t )
|
26
|
+
("recognises wednesday" (let d (date 2015 11 4) d.wednesday?) t )
|
27
|
+
("recognises thursday" (let d (date 2015 11 5) d.thursday? ) t )
|
28
|
+
("recognises friday" (let d (date 2015 11 6) d.friday? ) t )
|
29
|
+
("recognises not friday" (let d (date 2015 11 7) d.friday? ) nil )
|
30
|
+
("recognises saturday" (let d (date 2015 11 7) d.saturday? ) t )
|
31
|
+
("recognises sunday" (let d (date 2015 11 8) d.sunday? ) t ))
|
@@ -0,0 +1,16 @@
|
|
1
|
+
(assign foo (hash))
|
2
|
+
(def foo.bar (a b) (* a b))
|
3
|
+
(def foo.zeb (a b) (* a (foo.bar a b)))
|
4
|
+
|
5
|
+
(examples-for def
|
6
|
+
("can assign a function to a hash key"
|
7
|
+
(foo.bar 3 4)
|
8
|
+
12)
|
9
|
+
|
10
|
+
("sets hash keys"
|
11
|
+
(hash-keys foo)
|
12
|
+
(bar zeb))
|
13
|
+
|
14
|
+
("hash defs are accessible wherever the hash is"
|
15
|
+
(foo.zeb 5 7)
|
16
|
+
175))
|
@@ -4,6 +4,14 @@
|
|
4
4
|
2.5))
|
5
5
|
|
6
6
|
(examples-for eq?
|
7
|
+
("is nil for two different dates"
|
8
|
+
(eq? (today) (+ (today) 1))
|
9
|
+
nil)
|
10
|
+
|
11
|
+
("is true for two identical dates"
|
12
|
+
(eq? (date 2015 3 12) (+ (date 2015 3 1) 11))
|
13
|
+
t)
|
14
|
+
|
7
15
|
("true for two empty symbols"
|
8
16
|
(eq? '|| '||)
|
9
17
|
t)
|
@@ -19,6 +19,11 @@
|
|
19
19
|
nil))
|
20
20
|
|
21
21
|
(examples-for brace-list
|
22
|
+
("with no args builds an empty hash"
|
23
|
+
(let thing {}
|
24
|
+
(list (type-of thing) (hash-keys thing)))
|
25
|
+
(hash nil))
|
26
|
+
|
22
27
|
("build a hash table from brace-list syntax"
|
23
28
|
(let hsh { foo 1 bar 2 }
|
24
29
|
(list 'foo hsh.foo 'bar hsh.bar))
|
@@ -20,6 +20,10 @@
|
|
20
20
|
(parse "%this-and-that")
|
21
21
|
((percent-syntax || this-and-that)) )
|
22
22
|
|
23
|
+
("parses a percent-prefix-mixed-with-dot-syntax symbol"
|
24
|
+
(parse "%this.and.that")
|
25
|
+
((percent-syntax || (dot-syntax this and that))) )
|
26
|
+
|
23
27
|
("parses a dot-syntax symbol"
|
24
28
|
(parse "this.that.zozo")
|
25
29
|
((dot-syntax this that zozo)) )
|
@@ -0,0 +1,19 @@
|
|
1
|
+
(examples-for pre-compile-with
|
2
|
+
("does nothing with an empty hash"
|
3
|
+
(pre-compile-with (hash) '(let a 1 (p a)))
|
4
|
+
(let a 1 (p a)))
|
5
|
+
|
6
|
+
("uses the given macros to expand the given expression"
|
7
|
+
(let lang { p (fn args `(print-stuff ,@args))
|
8
|
+
def (fn (name . body) `(define-it ,(to-string name) ,(len body) ,@body))
|
9
|
+
brace-list (fn (first second third) `(brace-things ,first (p ,second))) }
|
10
|
+
(pre-compile-with lang
|
11
|
+
'(let a 'b
|
12
|
+
(p { a b c }
|
13
|
+
(with (m n)
|
14
|
+
(def p q r s tt))))))
|
15
|
+
(let a 'b
|
16
|
+
(print-stuff (brace-things a
|
17
|
+
(print-stuff b))
|
18
|
+
(with (m n)
|
19
|
+
(define-it "p" 4 q r s tt))))))
|
@@ -25,6 +25,10 @@
|
|
25
25
|
(pp '(string-pieces "hello " (bang-syntax || (dot-syntax x y (ampersand-syntax foo bar))) " and welcome to " (prefix-list "%%" (a b c d)) " and friends!"))
|
26
26
|
"\"hello ~~!x.y.foo&bar and welcome to ~~%%(a b c d) and friends!\"")
|
27
27
|
|
28
|
+
("perent-syntax"
|
29
|
+
(pp '(percent-syntax || (dot-syntax x y)))
|
30
|
+
"%x.y")
|
31
|
+
|
28
32
|
("brace list"
|
29
33
|
(pp '(&x {a 1 b "two" c 'three d ,four e (sub invocation) f {sub brace list} }))
|
30
34
|
"(&x {a 1 b \"two\" c 'three d ,four e (sub invocation) f {sub brace list}})"))
|
data/lib/nydp/date.rb
CHANGED
@@ -8,8 +8,12 @@ module Nydp
|
|
8
8
|
|
9
9
|
MONTH_SIZES = [nil, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
10
10
|
def build y, m, d
|
11
|
-
|
12
|
-
|
11
|
+
if m < 1
|
12
|
+
build( y - 1, m + 12, d )
|
13
|
+
else
|
14
|
+
s = MONTH_SIZES[m]
|
15
|
+
::Date.new(y, m, (d > s ? s : d))
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
def initialize ruby_date
|
@@ -24,14 +28,16 @@ module Nydp
|
|
24
28
|
def + int ; r2n(ruby_date + int , nil) ; end
|
25
29
|
def > other ; ruby_date > other.ruby_date ; end
|
26
30
|
def < other ; ruby_date < other.ruby_date ; end
|
31
|
+
def == other ; ruby_date == other.ruby_date ; end
|
27
32
|
|
33
|
+
@@pass_through = %i{ monday? tuesday? wednesday? thursday? friday? saturday? sunday? }
|
28
34
|
@@keys = Set.new %i{
|
29
35
|
year month week_day day
|
30
36
|
last_year next_year beginning_of_year end_of_year
|
31
37
|
last_month next_month beginning_of_month end_of_month
|
32
38
|
last_week next_week beginning_of_week end_of_week
|
33
39
|
yesterday tomorrow
|
34
|
-
}
|
40
|
+
} + @@pass_through
|
35
41
|
|
36
42
|
def year y, m, d, w ; y ; end
|
37
43
|
def month y, m, d, w ; m ; end
|
@@ -56,6 +62,12 @@ module Nydp
|
|
56
62
|
def yesterday y, m, d, w ; ruby_date - 1 ; end
|
57
63
|
def tomorrow y, m, d, w ; ruby_date + 1 ; end
|
58
64
|
|
65
|
+
@@pass_through.each do |n|
|
66
|
+
class_eval "def #{n} * ; ruby_date.#{n} ; end"
|
67
|
+
end
|
68
|
+
|
69
|
+
def dispatch key, y, m, d, w ; self.send(key, y, m, d, w) if @@keys.include?(key) ; end
|
70
|
+
|
59
71
|
def [] key
|
60
72
|
key = key.to_s.gsub(/-/, '_').to_sym
|
61
73
|
y = ruby_date.year
|
@@ -63,8 +75,7 @@ module Nydp
|
|
63
75
|
d = ruby_date.day
|
64
76
|
w = ruby_date.wday
|
65
77
|
|
66
|
-
|
67
|
-
r2n adjusted, nil
|
78
|
+
r2n(dispatch(key, y, m, d, w), nil)
|
68
79
|
end
|
69
80
|
end
|
70
81
|
end
|
data/lib/nydp/version.rb
CHANGED
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.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Conan Dalton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -101,6 +101,8 @@ files:
|
|
101
101
|
- lib/lisp/tests/collect-tests.nydp
|
102
102
|
- lib/lisp/tests/cons-examples.nydp
|
103
103
|
- lib/lisp/tests/curry-tests.nydp
|
104
|
+
- lib/lisp/tests/date-examples.nydp
|
105
|
+
- lib/lisp/tests/def-examples.nydp
|
104
106
|
- lib/lisp/tests/detect-examples.nydp
|
105
107
|
- lib/lisp/tests/dot-syntax-examples.nydp
|
106
108
|
- lib/lisp/tests/dox-tests.nydp
|
@@ -115,6 +117,7 @@ files:
|
|
115
117
|
- lib/lisp/tests/len-examples.nydp
|
116
118
|
- lib/lisp/tests/list-tests.nydp
|
117
119
|
- lib/lisp/tests/parser-tests.nydp
|
120
|
+
- lib/lisp/tests/pre-compile-examples.nydp
|
118
121
|
- lib/lisp/tests/pretty-print-tests.nydp
|
119
122
|
- lib/lisp/tests/quasiquote-examples.nydp
|
120
123
|
- lib/lisp/tests/range-examples.nydp
|