nendo 0.3.5 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/nendo +9 -0
- data/example/KyotoCabinet/kcsample.nnd +24 -0
- data/example/KyotoCabinet/kcsample.rb +24 -0
- data/example/html-lite-sample.nnd +2 -2
- data/lib/init.nnd +54 -41
- data/lib/init.nndc +1547 -1274
- data/lib/nendo.rb +15 -12
- data/test/nendo_spec.rb +46 -9
- data/test/srfi-1-test.nnd +1 -1
- metadata +10 -4
data/bin/nendo
CHANGED
@@ -48,6 +48,8 @@ def userOptionEater
|
|
48
48
|
i += 1
|
49
49
|
when '-c'
|
50
50
|
i += 1
|
51
|
+
when '-V'
|
52
|
+
i += 1
|
51
53
|
when '-l'
|
52
54
|
i += 2
|
53
55
|
when '-O'
|
@@ -76,6 +78,7 @@ def main
|
|
76
78
|
[ '-h', GetoptLong::NO_ARGUMENT ],
|
77
79
|
[ '-q', GetoptLong::NO_ARGUMENT ],
|
78
80
|
[ '-c', GetoptLong::NO_ARGUMENT ],
|
81
|
+
[ '-V', GetoptLong::NO_ARGUMENT ],
|
79
82
|
[ '-l', GetoptLong::REQUIRED_ARGUMENT ],
|
80
83
|
[ '-O', GetoptLong::REQUIRED_ARGUMENT ]
|
81
84
|
).each { |opt, arg|
|
@@ -91,6 +94,9 @@ def main
|
|
91
94
|
-q:
|
92
95
|
Does not read the default initialization file.
|
93
96
|
|
97
|
+
-V:
|
98
|
+
show version
|
99
|
+
|
94
100
|
-l file:
|
95
101
|
load nendo script files. ( can specify n times like -l a.nnd -l b.nnd )
|
96
102
|
|
@@ -102,6 +108,9 @@ def main
|
|
102
108
|
|
103
109
|
EOF
|
104
110
|
exit 0
|
111
|
+
when '-V'
|
112
|
+
printf( "Nendo %s\n", Nendo::Core.version )
|
113
|
+
exit( 1 )
|
105
114
|
when '-q'
|
106
115
|
loadInit = false
|
107
116
|
conflict += 1
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
:; #-*- mode: nendo; syntax: scheme -*-;;
|
3
|
+
:; exec /usr/local/bin/nendo $0 $*
|
4
|
+
(require "kyotocabinet")
|
5
|
+
|
6
|
+
(let1 db (KyotoCabinet::DB.new)
|
7
|
+
;; データベースを開く
|
8
|
+
(unless (db.open
|
9
|
+
"sample.kch"
|
10
|
+
(+ KyotoCabinet::DB::OWRITER KyotoCabinet::DB::OCREATE))
|
11
|
+
(printf "open error: %s\n" db.error))
|
12
|
+
|
13
|
+
|
14
|
+
;; 書きこみ
|
15
|
+
(db.set "key1" "value1")
|
16
|
+
(db.set "key2" "value2")
|
17
|
+
(db.set "key3" "value3")
|
18
|
+
|
19
|
+
;; 内容確認
|
20
|
+
(db.each
|
21
|
+
(&block (key value)
|
22
|
+
(printf "key=[%s] value=[%s]\n" key value)))
|
23
|
+
|
24
|
+
(db.close))
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
require 'kyotocabinet'
|
5
|
+
|
6
|
+
db = KyotoCabinet::DB.new
|
7
|
+
# データベースを開く
|
8
|
+
unless db.open(
|
9
|
+
'sample.kch',
|
10
|
+
KyotoCabinet::DB::OWRITER | KyotoCabinet::DB::OCREATE)
|
11
|
+
printf("open error: %s\n", db.error)
|
12
|
+
end
|
13
|
+
|
14
|
+
# 書きこみ
|
15
|
+
db.set( 'key1', 'value1' )
|
16
|
+
db.set( 'key2', 'value2' )
|
17
|
+
db.set( 'key3', 'value3' )
|
18
|
+
|
19
|
+
# 内容確認
|
20
|
+
db.each { |key, value|
|
21
|
+
printf( "key=[%s] value=[%s]\n", key,value )
|
22
|
+
}
|
23
|
+
|
24
|
+
db.close
|
data/lib/init.nnd
CHANGED
@@ -859,41 +859,6 @@
|
|
859
859
|
(apply hash-table alist)))
|
860
860
|
|
861
861
|
|
862
|
-
;; ----------------------------------------
|
863
|
-
;; Ruby interop librarys
|
864
|
-
;; ----------------------------------------
|
865
|
-
;; export Nendo's function to the Ruby world
|
866
|
-
(define export-to-ruby
|
867
|
-
(macro (funcname)
|
868
|
-
`(%export-to-ruby ,funcname.to_s ,funcname)))
|
869
|
-
|
870
|
-
(define (load-library name)
|
871
|
-
(let* ((home (get-nendo-home))
|
872
|
-
(path (+ home "/" name)))
|
873
|
-
(cond
|
874
|
-
((File.exist? (+ path ".nndc"))
|
875
|
-
(load-compiled-code (+ path ".nndc")))
|
876
|
-
((File.exist? (+ path ".nnd"))
|
877
|
-
(load (+ path ".nnd")))
|
878
|
-
(else
|
879
|
-
(errorf "Error: can't load library file [%s]\n" path )))))
|
880
|
-
|
881
|
-
;; use macro like Gauche
|
882
|
-
(define use
|
883
|
-
(macro (sym)
|
884
|
-
(if (symbol? sym)
|
885
|
-
(let*
|
886
|
-
((str (symbol->string sym))
|
887
|
-
(pathname (str.gsub "." "/")))
|
888
|
-
`(load-library ,pathname))
|
889
|
-
(errorf "Error: use macro requires a symbol argument."))))
|
890
|
-
|
891
|
-
;; exporting a symbol in the module. (I will implement in the future...)
|
892
|
-
(define export
|
893
|
-
(macro (name)
|
894
|
-
`(define ,name nil)))
|
895
|
-
|
896
|
-
|
897
862
|
;; ----------------------------------------
|
898
863
|
;; Vector Library
|
899
864
|
;; ----------------------------------------
|
@@ -1083,6 +1048,59 @@
|
|
1083
1048
|
#f))))
|
1084
1049
|
|
1085
1050
|
|
1051
|
+
|
1052
|
+
;; ----------------------------------------
|
1053
|
+
;; Ruby interop librarys
|
1054
|
+
;; ----------------------------------------
|
1055
|
+
;; export Nendo's function to the Ruby world
|
1056
|
+
(define export-to-ruby
|
1057
|
+
(macro (funcname)
|
1058
|
+
`(%export-to-ruby ,funcname.to_s ,funcname)))
|
1059
|
+
|
1060
|
+
(define (load path)
|
1061
|
+
(if (rxmatch #/^([.]\/|[.][.]\/|\/)/ path)
|
1062
|
+
(%load path)
|
1063
|
+
(let loop ((load-path *load-path*))
|
1064
|
+
(cond ((null? load-path)
|
1065
|
+
(errorf "Error: can't load file [%s]\n" path))
|
1066
|
+
(else
|
1067
|
+
(let1 full-path (+ (car load-path) "/" path)
|
1068
|
+
(cond
|
1069
|
+
((File.exist? full-path)
|
1070
|
+
(if (rxmatch #/[.]nndc$/ full-path)
|
1071
|
+
(%load-compiled-code full-path)
|
1072
|
+
(%load full-path)))
|
1073
|
+
((File.exist? (+ full-path ".nndc"))
|
1074
|
+
(%load-compiled-code (+ full-path ".nndc")))
|
1075
|
+
((File.exist? (+ full-path ".nnd"))
|
1076
|
+
(%load (+ full-path ".nnd")))
|
1077
|
+
(else
|
1078
|
+
(loop (cdr load-path))))))))))
|
1079
|
+
|
1080
|
+
(define (add-load-path path . afterp)
|
1081
|
+
(set! *load-path*
|
1082
|
+
(if (get-optional afterp #f)
|
1083
|
+
(append *load-path* (list path))
|
1084
|
+
(cons path *load-path*)))
|
1085
|
+
*load-path*)
|
1086
|
+
|
1087
|
+
;; use macro like Gauche
|
1088
|
+
(define use
|
1089
|
+
(macro (sym)
|
1090
|
+
(if (symbol? sym)
|
1091
|
+
(let*
|
1092
|
+
((str (symbol->string sym))
|
1093
|
+
(pathname (str.gsub "." "/")))
|
1094
|
+
`(load ,pathname))
|
1095
|
+
(errorf "Error: use macro requires a symbol argument."))))
|
1096
|
+
|
1097
|
+
;; exporting a symbol in the module. (I will implement in the future...)
|
1098
|
+
(define export
|
1099
|
+
(macro (name)
|
1100
|
+
`(define ,name nil)))
|
1101
|
+
|
1102
|
+
|
1103
|
+
|
1086
1104
|
;; ----------------------------------------
|
1087
1105
|
;; global variables bind checker
|
1088
1106
|
;; ----------------------------------------
|
@@ -1321,9 +1339,4 @@
|
|
1321
1339
|
setup-tailcall-mark
|
1322
1340
|
))
|
1323
1341
|
|
1324
|
-
;;
|
1325
|
-
;; global variables
|
1326
|
-
;; ----------------------------------------
|
1327
|
-
(define *nendo-version*
|
1328
|
-
"0.3.5" ;;NENDO-VERSION
|
1329
|
-
)
|
1342
|
+
;;[EOS]
|