nydp 0.1.14 → 0.1.15

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: 4934e2de2e4ae2558056bd67df1bfb85e8285d80
4
- data.tar.gz: 591950ecbf8f0d76ef6e7afd79a48138bb7164b4
3
+ metadata.gz: 2e6fd1dc5fc3149b5f11a0ebdde15b780b18961e
4
+ data.tar.gz: f0f7f42ba740494b00425e3c5200acc12b9483c9
5
5
  SHA512:
6
- metadata.gz: e3efdac8cdb5dfdc6cf6908e2d4950430769d888af64252a2153c05e06d25dff99a47be81d48e36478a1716327d2544ad78f76bff7a9a7f7e717b3ba564a4dda
7
- data.tar.gz: 13cb1296116e684380b86b0f887b13ca2b22aef929ce933429ad74f5d49d40f151cd5095ecb96eb934e57d0c94755f3f9cc55eb9377f9b8dc749dd98f3d89cca
6
+ metadata.gz: 20c231e32e8a611446082c2a3eb144ac5782226dcb15f44224a0a77813577d77bf538cf65f6d897f824f0d2c0e7a8a9f8e054c9d84d6b60b06781ede72d1cb1e
7
+ data.tar.gz: ba1e3bc4f43c7c10bd8e06bd0ce45e513413b75a8213f0365abcb6389114e42ddf1e0c7746fbe78fc0829c5e711b57726ce11d6c11594b6f83fc674d8b372252
@@ -0,0 +1,30 @@
1
+
2
+ (hash-set macs 'if (fn args
3
+ (cond (no args) nil
4
+ (cond (cdr args)
5
+ (cond (cddr args)
6
+ `(cond ,(car args) ,(cadr args) (if ,@(cddr args)))
7
+ `(cond ,(car args) ,(cadr args)))
8
+ (car args)))))
9
+
10
+ (def map (f things)
11
+ ; transforms the list 'things by applying 'f to each item
12
+ ; returns the resulting list
13
+ (if (no things)
14
+ nil
15
+ (pair? things)
16
+ (cons (f (car things)) (map f (cdr things)))
17
+ (map f (list things))))
18
+
19
+ (def hash-cons (h k v)
20
+ ; push 'v onto the value for 'k in 'h
21
+ (hash-set h k (cons v (hash-get h k))))
22
+
23
+ (def rev-accum (things acc)
24
+ (cond (no things)
25
+ acc
26
+ (rev-accum (cdr things)
27
+ (cons (car things)
28
+ acc))))
29
+
30
+ (def rev (things) (rev-accum things nil))
@@ -1,21 +1,31 @@
1
- ((fn (dox examples chapters)
2
- (def dox-add-doc (name what texts args src)
3
- (hash-set dox
4
- name
5
- (cons (list name what texts args src)
6
- (hash-get dox sym))))
1
+ ((fn (dox examples chapters dox-new dox-build)
2
+ (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 )
9
+ hsh)
10
+
11
+ (def dox-new (item)
12
+ (hash-cons dox (hash-get item 'name) item)
13
+ (dox-add-to-chapters (hash-get item 'chapters) item))
14
+
15
+ (def dox-add-doc (name what texts args src chapters)
16
+ (dox-new (dox-build (hash) name what texts args src chapters)))
7
17
 
8
18
  (def dox-add-to-chapter (chapter item)
9
- (hash-set chapters
10
- item
11
- (cons item
12
- (hash-get chapters item))))
19
+ (hash-cons chapters chapter item))
20
+
21
+ (def dox-add-to-chapters (chapters item)
22
+ (cond chapters
23
+ (do (dox-add-to-chapter (car chapters) item)
24
+ (dox-add-to-chapters (cdr chapters) item))
25
+ item))
13
26
 
14
27
  (def dox-add-examples (name example-exprs)
15
- (hash-set examples
16
- name
17
- (cons example-exprs
18
- (hash-get examples name))))
28
+ (hash-cons examples name example-exprs))
19
29
 
20
30
  (def dox-lookup (sym) (hash-get dox sym))
21
31
 
@@ -23,65 +33,68 @@
23
33
 
24
34
  (def dox-names () (hash-keys dox))
25
35
 
26
- (def dox-what-is? (name)
27
- (cond (dox? name)
28
- (cadr (car (dox-lookup name)))))
29
-
30
- (def dox-src (name)
31
- (cond (dox? name)
32
- (car (cddr (cddr (car (dox-lookup name)))))))
33
-
34
- (def dox-examples (name)
35
- (hash-get examples name))
36
-
37
- (def dox-example-names () (hash-keys examples))
38
-
39
- (def dox-arg-names (name)
36
+ (def dox-get-attr (name attr)
40
37
  (cond (dox? name)
41
- (cadddr (car (dox-lookup name))))))
42
- (hash) (hash) (hash))
43
-
44
- (def isa-comment? (thing)
45
- (cond (pair? thing)
46
- (eq? (car thing) 'comment)))
47
-
48
- (def rev-accum (things acc)
49
- (cond (no things)
50
- acc
51
- (rev-accum (cdr things)
52
- (cons (car things)
53
- acc))))
54
-
55
- (def rev (things) (rev-accum things nil))
56
-
57
- (def dox-gather-comments (body acc)
58
- (cond (isa-comment? (car body))
59
- (dox-gather-comments (cdr body)
60
- (cons (cadar body)
61
- acc))
62
- (list (rev acc) body)))
63
-
64
- (def define-mac-expr (name args documentation body)
38
+ (hash-get (car (dox-lookup name)) attr)))
39
+
40
+ (def dox-what-is? (name) (dox-get-attr name 'what ))
41
+ (def dox-src (name) (dox-get-attr name 'src ))
42
+ (def dox-examples (name) (hash-get examples name ))
43
+ (def dox-args (name) (dox-get-attr name 'args ))
44
+ (def dox-example-names () (hash-keys examples )))
45
+ (hash) (hash) (hash) nil)
46
+
47
+ (def filter-form (hsh form)
48
+ ; if the car of 'form is a key of 'hsh, add the cdr of 'form to the value of the key in 'hsh
49
+ ; otherwise add the form to the list whose key is nil
50
+ (cond (cond (pair? form)
51
+ (hash-key? hsh (car form)))
52
+ (hash-cons hsh (car form) (cdr form))
53
+ (hash-cons hsh nil form))
54
+ hsh)
55
+
56
+ (def rev-value-key (key keys old new)
57
+ (hash-set new key (rev (hash-get old key)))
58
+ (rev-value-keys keys old new))
59
+
60
+ (def rev-value-keys (keys old new)
61
+ (cond keys
62
+ (rev-value-key (car keys) (cdr keys) old new)
63
+ new))
64
+
65
+ (def rev-values (hsh)
66
+ (rev-value-keys (hash-keys hsh) hsh (hash)))
67
+
68
+ (def filter-forms (hsh forms)
69
+ ; group forms by their first element, if the first element
70
+ ; is already a key in hsh, collect all other elements under key nil
71
+ (cond forms
72
+ (filter-forms (filter-form hsh (car forms)) (cdr forms))
73
+ (rev-values hsh)))
74
+
75
+ (def build-def-hash (hsh)
76
+ (hash-set hsh 'comment nil)
77
+ (hash-set hsh 'chapter nil)
78
+ hsh)
79
+
80
+ (def define-mac-expr (name args body-forms)
65
81
  ; used internally by 'mac
66
- `(do (hash-set macs ',name (fn ,args ,@body))
82
+ `(do (hash-set macs ',name (fn ,args ,@(hash-get body-forms nil)))
67
83
  (dox-add-doc ',name
68
84
  'mac
69
- ',documentation
85
+ ',(map car (hash-get body-forms 'comment))
70
86
  ',args
71
- '(mac ,name ,args ,@body))))
87
+ '(mac ,name ,args ,@(hash-get body-forms nil)))))
72
88
 
73
89
  (hash-set macs 'mac
74
90
  (fn (name args . body)
75
- (apply define-mac-expr
76
- name
77
- args
78
- (dox-gather-comments body))))
91
+ (define-mac-expr name args (filter-forms (build-def-hash (hash)) body))))
79
92
 
80
93
  (dox-add-doc 'mac
81
94
  'mac
82
95
  '("define a new global macro")
83
96
  '(name args . body)
84
- (dox-src 'define-mac-expr))
97
+ '`(hash-set macs ',name (fn ,ooargs ,@body)))
85
98
 
86
99
  (dox-add-doc 'do
87
100
  'mac
@@ -91,18 +104,15 @@
91
104
 
92
105
  (mac def-assign args `(assign ,@args))
93
106
 
94
- (def define-def-expr (name args documentation body)
107
+ (def define-def-expr (name args body-forms)
95
108
  ; used internally by 'def
96
- `(do (def-assign ,name (fn ,args ,@body))
109
+ `(do (def-assign ,name (fn ,args ,@(hash-get body-forms nil)))
97
110
  (dox-add-doc ',name
98
111
  'def
99
- ',documentation
112
+ ',(map car (hash-get body-forms 'comment))
100
113
  ',args
101
- '(def ,name ,args ,@body))))
114
+ '(def ,name ,args ,@(hash-get body-forms nil)))))
102
115
 
103
116
  (mac def (name args . body)
104
117
  ; define a new function in the global namespace
105
- (apply define-def-expr
106
- name
107
- args
108
- (dox-gather-comments body)))
118
+ (define-def-expr name args (filter-forms (build-def-hash (hash)) body)))
@@ -1,9 +1,16 @@
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)
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
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)
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,22 +1,28 @@
1
- (mac if args
2
- ; with arguments a, return a
3
- ; with arguments a b, return b if a is true, otherwise nil
4
- ; with arguments a b c, return b if a is true, otherwise return c
5
- ; with arguments a b c d, return b if a is true, otherwise return d if c is true, otherwise nil
6
- ; with arguments a b c d e, return b if a is true, otherwise return d if c is true, otherwise e
7
- ; and so on for subsequent arguments
8
- (cond (no args) nil
9
- (cond (cdr args)
10
- (cond (cddr args)
11
- `(cond ,(car args) ,(cadr args) (if ,@(cddr args)))
12
- `(cond ,(car args) ,(cadr args)))
13
- (car args))))
1
+ (dox-add-doc 'if
2
+ 'mac
3
+ '("with arguments a, return a"
4
+ "with arguments a b, return b if a is true, otherwise nil"
5
+ "with arguments a b c, return b if a is true, otherwise return c"
6
+ "with arguments a b c d, return b if a is true, otherwise return d if c is true, otherwise nil"
7
+ "with arguments a b c d e, return b if a is true, otherwise return d if c is true, otherwise e"
8
+ "and so on for subsequent arguments")
9
+ 'args
10
+ '(cond (no args) nil
11
+ (cond (cdr args)
12
+ (cond (cddr args)
13
+ `(cond ,(car twargs) ,(cadr twargs) (if ,@(cddr twargs)))
14
+ `(cond ,(car twargs) ,(cadr twargs)))
15
+ (car args)))
16
+ '(flow-control))
14
17
 
15
- (def map (f things)
16
- ; transforms the list 'things by applying 'f to each item
17
- ; returns the resulting list
18
- (if (no things)
19
- nil
20
- (pair? things)
21
- (cons (f (car things)) (map f (cdr things)))
22
- (map f (list things))))
18
+ (dox-add-doc 'map
19
+ 'def
20
+ '("transforms the list 'things by applying 'f to each item"
21
+ "returns the resulting list")
22
+ '(f things)
23
+ '(if (no things)
24
+ nil
25
+ (pair? things)
26
+ (cons (f (car things)) (map f (cdr things)))
27
+ (map f (list things)))
28
+ '(list-manipulation))
@@ -176,11 +176,16 @@
176
176
  ,(build-hash-get-key:car rnames)
177
177
  ,value-expr)))
178
178
 
179
+ (def hash-get-assignment (lookup value)
180
+ `(hash-set ,@lookup ,value))
181
+
179
182
  (mac = (name value)
180
183
  (if (isa 'symbol name)
181
184
  `(assign ,name ,value)
182
185
  (caris 'dot-syntax name)
183
- (dot-syntax-assignment (cdr name) value)))
186
+ (dot-syntax-assignment (cdr name) value)
187
+ (caris 'hash-get name)
188
+ (hash-get-assignment (cdr name) value)))
184
189
 
185
190
  (mac def-assign args `(= ,@args))
186
191
 
@@ -11,7 +11,7 @@
11
11
  (zip (cdr a) (cdr b)))))
12
12
 
13
13
  (mac push (x things)
14
- `(assign ,things (cons ,x ,things)))
14
+ `(= ,things (cons ,x ,things)))
15
15
 
16
16
  (def flatten (things)
17
17
  (let acc nil
@@ -286,7 +286,3 @@
286
286
 
287
287
  (def min things (best < things))
288
288
  (def max things (best > things))
289
-
290
- (def hash-cons (h k v)
291
- ; push 'v onto the value for 'k in 'h
292
- (= h.,k (cons v h.,k)))
@@ -58,7 +58,7 @@ Examples for ~name
58
58
  (if (no infos)
59
59
  (p "No documentation for" ',name)
60
60
  (each info infos
61
- (p:apply dox-show-info info)))
61
+ (p (dox-show-info info.name info.what info.texts info.args))))
62
62
  (let examples (dox-examples ',name)
63
63
  (if (no examples)
64
64
  (p "No examples for" ',name)
@@ -83,7 +83,7 @@
83
83
 
84
84
  (def pp/find-breaks/mac (form)
85
85
  (if (eq? (dox-what-is? (car form)) 'mac)
86
- (let arg-count (list-length:dox-arg-names:car form)
86
+ (let arg-count (list-length:dox-args:car form)
87
87
  (cons (firstn arg-count form)
88
88
  (map list (nthcdr arg-count form))))))
89
89
 
@@ -71,3 +71,9 @@
71
71
  (def seqf (start incr)
72
72
  (let i (or incr 1)
73
73
  (fn () (returning start (++ start i)))))
74
+
75
+ (def mapply (f args)
76
+ ; like 'map, but assumes each item in 'args is a list
77
+ ; of parameters for 'f. Effectively, calls (apply f item)
78
+ ; for each item in 'args
79
+ (map λa(apply f a) args))
@@ -12,96 +12,100 @@
12
12
  (def this-is-an-undocumented-def (a b c)
13
13
  (baz a b c))
14
14
 
15
- (examples-for isa-comment?
16
- ("identifies a comment"
17
- (isa-comment? '(comment "yes, it is"))
18
- t)
19
-
20
- ("identifies a non-comment"
21
- (isa-comment? "not this time")
22
- nil))
23
-
24
- (examples-for dox-gather-comments
25
- ("find no comments"
26
- (dox-gather-comments '((this) (that)))
27
- (nil ((this) (that))))
28
-
29
- ("finds one comment"
30
- (dox-gather-comments '((comment "hello") (this) (that)))
31
- (("hello") ((this) (that))))
32
-
33
- ("finds more comments"
34
- (dox-gather-comments '((comment "hello")
35
- (comment "more details")
36
- (comment "very rigourous")
37
- (this)
38
- (that)))
39
- (("hello" "more details" "very rigourous") ((this) (that)))))
40
-
41
- (examples-for dox-show-info
42
- ("shows each item"
43
- (dox-show-info "bingo"
44
- 'def
45
- '("there was a farmer had a dog" "and Bingo was his name-o")
46
- '(count)
47
- '(def bingo (count) (times count (bark))))
48
- "Function : bingo
49
-
50
- args : (count)
51
-
52
- there was a farmer had a dog
53
- and Bingo was his name-o
54
-
55
- source
56
- ======
57
- \(def bingo (count)
58
- (times count (bark)))
59
- "))
15
+ (examples-for dox-lookup
16
+ ("finds name for a documented macro"
17
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-macro) 'name)
18
+ this-is-a-well-documented-macro)
19
+
20
+ ("finds type for a documented macro"
21
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-macro) 'what)
22
+ mac)
23
+
24
+ ("finds documentation for a documented macro"
25
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-macro) 'texts)
26
+ ("documentation for me!"))
27
+
28
+ ("finds arg names for a documented macro"
29
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-macro) 'args)
30
+ (a b c))
31
+
32
+ ("finds source code for a documented macro"
33
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-macro) 'src)
34
+ (mac this-is-a-well-documented-macro (a b c)
35
+ `(foo ,a ,b ,c)))
36
+
37
+ ("finds name for an undocumented macro"
38
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-macro) 'name)
39
+ this-is-an-undocumented-macro)
40
+
41
+ ("finds type for an undocumented macro"
42
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-macro) 'what)
43
+ mac)
44
+
45
+ ("finds no documentation for an undocumented macro"
46
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-macro) 'texts)
47
+ nil)
48
+
49
+ ("finds arg names for an undocumented macro"
50
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-macro) 'args)
51
+ (a b c))
52
+
53
+ ("finds source code for an undocumented macro"
54
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-macro) 'src)
55
+ (mac this-is-an-undocumented-macro (a b c)
56
+ `(baz ,a ,b ,c))))
60
57
 
61
58
  (examples-for dox-lookup
62
- ("finds info for a documented macro"
63
- (dox-lookup 'this-is-a-well-documented-macro)
64
- ((this-is-a-well-documented-macro
65
- mac
66
- ("documentation for me!")
67
- (a b c)
68
- (mac this-is-a-well-documented-macro (a b c)
69
- `(foo ,a ,b ,c)))))
70
-
71
- ("finds info for an undocumented macro"
72
- (dox-lookup 'this-is-an-undocumented-macro)
73
- ((this-is-an-undocumented-macro
74
- mac
75
- nil
76
- (a b c)
77
- (mac this-is-an-undocumented-macro (a b c)
78
- `(baz ,a ,b ,c)))))
79
-
80
- ("finds info for a documented def"
81
- (dox-lookup 'this-is-a-well-documented-def)
82
- ((this-is-a-well-documented-def
83
- def
84
- ("documentation for me!")
85
- (a b c)
86
- (def this-is-a-well-documented-def (a b c)
87
- (foo a b c)))))
88
-
89
- ("finds info for an undocumented def"
90
- (dox-lookup 'this-is-an-undocumented-def)
91
- ((this-is-an-undocumented-def
92
- def
93
- nil
94
- (a b c)
95
- (def this-is-an-undocumented-def (a b c)
96
- (baz a b c))))))
97
-
98
- (examples-for dox-arg-names
59
+ ("finds name for a documented def"
60
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-def) 'name)
61
+ this-is-a-well-documented-def)
62
+
63
+ ("finds type for a documented def"
64
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-def) 'what)
65
+ def)
66
+
67
+ ("finds documentation for a documented def"
68
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-def) 'texts)
69
+ ("documentation for me!"))
70
+
71
+ ("finds arg names for a documented def"
72
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-def) 'args)
73
+ (a b c))
74
+
75
+ ("finds source code for a documented def"
76
+ (hash-get (car:dox-lookup 'this-is-a-well-documented-def) 'src)
77
+ (def this-is-a-well-documented-def (a b c)
78
+ (foo a b c)))
79
+
80
+ ("finds name for an undocumented def"
81
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-def) 'name)
82
+ this-is-an-undocumented-def)
83
+
84
+ ("finds type for an undocumented def"
85
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-def) 'what)
86
+ def)
87
+
88
+ ("finds no documentation for an undocumented def"
89
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-def) 'texts)
90
+ nil)
91
+
92
+ ("finds arg names for an undocumented def"
93
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-def) 'args)
94
+ (a b c))
95
+
96
+ ("finds source code for an undocumented def"
97
+ (hash-get (car:dox-lookup 'this-is-an-undocumented-def) 'src)
98
+ (def this-is-an-undocumented-def (a b c)
99
+ (baz a b c))))
100
+
101
+
102
+ (examples-for dox-args
99
103
  ("macro"
100
- (dox-arg-names 'this-is-a-well-documented-macro)
104
+ (dox-args 'this-is-a-well-documented-macro)
101
105
  (a b c))
102
106
 
103
107
  ("function def"
104
- (dox-arg-names 'this-is-a-well-documented-def)
108
+ (dox-args 'this-is-a-well-documented-def)
105
109
  (a b c)))
106
110
 
107
111
  (examples-for dox-src
@@ -0,0 +1,46 @@
1
+ (examples-for filter-forms
2
+ ("groups forms by their 'car if the 'car is a key in the given hash"
3
+ (let ff (filter-forms { car nil comment nil mac nil }
4
+ '(let x 1
5
+ ; first comment
6
+ (mac push foo bar)
7
+ (car that)
8
+ ; another comment
9
+ (car engine)
10
+ (drive faster)
11
+ (mac more macaroni)
12
+ (car wheels)
13
+ (mac and cheese)
14
+ ; ok enough cheese
15
+ (finish cheese)
16
+ (car go)))
17
+ (list (hash-keys ff)
18
+ ff.car
19
+ ff.comment
20
+ ff.mac
21
+ (hash-get ff nil)))
22
+ ((car comment mac nil)
23
+ ((that) (engine) (wheels) (go))
24
+ (("first comment") ("another comment") ("ok enough cheese"))
25
+ ((push foo bar) (more macaroni) (and cheese))
26
+ (let x 1 (drive faster) (finish cheese))))
27
+
28
+
29
+
30
+ ("find no comments"
31
+ (hash-values (filter-forms { comment nil } '((this) (that))))
32
+ (nil ((this) (that))))
33
+
34
+ ("finds one comment"
35
+ (hash-values (filter-forms { comment nil }
36
+ '((comment "hello") (this) (that))))
37
+ ((("hello")) ((this) (that))))
38
+
39
+ ("finds more comments"
40
+ (hash-values (filter-forms { comment nil }
41
+ '((comment "hello")
42
+ (comment "more details")
43
+ (comment "very rigourous")
44
+ (this)
45
+ (that))))
46
+ ((("hello") ("more details") ("very rigourous")) ((this) (that)))))
@@ -8,3 +8,8 @@
8
8
  { name "b" age 7 }
9
9
  { name "c" age 12 }))
10
10
  29))
11
+
12
+ (examples-for mapply
13
+ ("applies each list to the given function"
14
+ (mapply + '((1 2 3) (4 5 6) (7 8 9)))
15
+ (6 15 24)))
@@ -0,0 +1,25 @@
1
+ (examples-for push
2
+ ("push a value onto the beginning of a list"
3
+ (let x nil
4
+ (push 'c x)
5
+ (push 'b x)
6
+ (push 'a x)
7
+ x)
8
+ (a b c))
9
+
10
+ ("push a value onto the beginning of a list stored in a hash"
11
+ (let x {}
12
+ (push 'c x.stuff)
13
+ (push 'b x.stuff)
14
+ (push 'a x.stuff)
15
+ (list (hash-keys x) x.stuff))
16
+ ((stuff) (a b c)))
17
+
18
+ ("push a value onto the beginning of a list using a hash-get expression"
19
+ (let x {}
20
+ (push 1 (hash-get x 'foo))
21
+ (push 2 (hash-get x 'foo))
22
+ (push 3 (hash-get x nil))
23
+ (push 4 (hash-get x nil))
24
+ (list (hash-keys x) x.foo (hash-get x nil)))
25
+ ((foo nil) (2 1) (4 3))))
@@ -27,7 +27,7 @@ module Nydp
27
27
 
28
28
  def next_string_fragment open_delimiter, close_delimiter, interpolation_sign, interpolation_escapes={ }
29
29
  s = @scanner
30
- rep = "#{open_delimiter}"
30
+ rep = open_delimiter.to_s
31
31
  string = ""
32
32
  while (!no_more?)
33
33
  if esc = s.scan(/\\/)
data/lib/nydp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nydp
2
- VERSION = "0.1.14"
2
+ VERSION = "0.1.15"
3
3
  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.1.14
4
+ version: 0.1.15
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-04-21 00:00:00.000000000 Z
11
+ date: 2016-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,6 +86,7 @@ files:
86
86
  - bin/nydp-tests
87
87
  - lib/lisp/core-000.nydp
88
88
  - lib/lisp/core-010-precompile.nydp
89
+ - lib/lisp/core-012-utils.nydp
89
90
  - lib/lisp/core-015-documentation.nydp
90
91
  - lib/lisp/core-017-builtin-dox.nydp
91
92
  - lib/lisp/core-020-utils.nydp
@@ -118,6 +119,7 @@ files:
118
119
  - lib/lisp/tests/empty-examples.nydp
119
120
  - lib/lisp/tests/error-tests.nydp
120
121
  - lib/lisp/tests/explain-mac-examples.nydp
122
+ - lib/lisp/tests/filter-forms-examples.nydp
121
123
  - lib/lisp/tests/foundation-test.nydp
122
124
  - lib/lisp/tests/group-by-examples.nydp
123
125
  - lib/lisp/tests/hash-examples.nydp
@@ -131,6 +133,7 @@ files:
131
133
  - lib/lisp/tests/plus-plus-examples.nydp
132
134
  - lib/lisp/tests/pre-compile-examples.nydp
133
135
  - lib/lisp/tests/pretty-print-tests.nydp
136
+ - lib/lisp/tests/push-examples.nydp
134
137
  - lib/lisp/tests/quasiquote-examples.nydp
135
138
  - lib/lisp/tests/range-examples.nydp
136
139
  - lib/lisp/tests/relative-months-examples.nydp