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 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
@@ -2,8 +2,8 @@
2
2
  :; #-*- mode: nendo; syntax: scheme -*-;;
3
3
  :; exec /usr/local/bin/nendo $0 $*
4
4
 
5
- (load-library "text/html-lite")
6
- (load-library "text/tree")
5
+ (load "text/html-lite")
6
+ (load "text/tree")
7
7
 
8
8
  (define (page-sample)
9
9
  `(
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]