sekka 1.6.6 → 1.7.0
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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +0 -3
- data/Rakefile +5 -1
- data/VERSION.yml +2 -2
- data/emacs/sekka.el +2 -2
- data/gemfiles/Gemfile +1 -1
- data/lib/sekka/henkan.nnd +19 -6
- data/lib/sekka/kvs.rb +11 -7
- data/lib/sekka/roman-lib.nnd +14 -7
- data/lib/sekka/sekkaversion.rb +1 -1
- data/lib/sekkaserver.rb +105 -99
- data/test/henkan-main.nnd +43 -34
- data/test/jisyo.nnd +6 -0
- data/test/memcache.nnd +0 -6
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f14974e9acd87ad10f08d88a02162ef21a8c7fff
|
4
|
+
data.tar.gz: c9d7db3ca95a63b316d8089c947ab23424cde502
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97f809c4c8f84c6a5123a7b71ac6f0698c46d4104b1661eb1428ea557cf9c650f47f324d7b2e2c9dfe16e1e30ad3d4b531fc6dcd1595ac5ee34535b392b6b84e
|
7
|
+
data.tar.gz: 68af3d5572e414b082afb7ec85f2024912387a2df90b43de0f68c098854e1698f6def4c01190141e77099a121e749ea74ba54d246b9c5c23c8f9bd2347c8e91d
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Rakefile
CHANGED
@@ -116,7 +116,7 @@ task :test do
|
|
116
116
|
files << "./test/henkan-main.nnd leveldb"
|
117
117
|
end
|
118
118
|
files.each {|filename|
|
119
|
-
sh sprintf( "ruby -I ./lib -S nendo -I ./lib -d %s", filename )
|
119
|
+
sh sprintf( "export RUBY_THREAD_VM_STACK_SIZE=100000 ; ruby -I ./lib -S nendo -I ./lib -d %s", filename )
|
120
120
|
}
|
121
121
|
sh "cat test.record"
|
122
122
|
end
|
@@ -152,6 +152,10 @@ task :dump do
|
|
152
152
|
sh sprintf( "ruby ./bin/sekka-jisyo dump ./data/SEKKA-JISYO.N.tch#xmsiz=1024m > ./data/SEKKA-JISYO-%s.N.tsv", dictVersion )
|
153
153
|
end
|
154
154
|
|
155
|
+
task :restore do
|
156
|
+
sh sprintf("export RUBY_THREAD_VM_STACK_SIZE=100000 ; ruby -I ./lib ./bin/sekka-jisyo restore ./data/SEKKA-JISYO-%s.N.tsv jisyo.N.ldb", dictVersion )
|
157
|
+
end
|
158
|
+
|
155
159
|
task :load_leveldb do
|
156
160
|
sh sprintf( "ruby ./bin/sekka-jisyo load ./data/SEKKA-JISYO.N ./data/SEKKA-JISYO-%s.N.ldb", dictVersion )
|
157
161
|
sh sprintf( "tar zcCf ./data ./data/SEKKA-JISYO-%s.N.ldb.tar.gz ./SEKKA-JISYO-%s.N.ldb" , dictVersion, dictVersion )
|
data/VERSION.yml
CHANGED
data/emacs/sekka.el
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
;; Copyright (C) 2010-2014 Kiyoka Nishiyama
|
4
4
|
;;
|
5
5
|
;; Author: Kiyoka Nishiyama <kiyoka@sumibi.org>
|
6
|
-
;; Version: 1.
|
6
|
+
;; Version: 1.7.0 ;;SEKKA-VERSION
|
7
7
|
;; Keywords: ime, skk, japanese
|
8
8
|
;; Package-Requires: ((cl-lib "0.3") (concurrent "0.3.1") (popup "0.5.2"))
|
9
9
|
;; URL: https://github.com/kiyoka/sekka
|
@@ -1756,7 +1756,7 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
|
|
1756
1756
|
(setq default-input-method "japanese-sekka")
|
1757
1757
|
|
1758
1758
|
(defconst sekka-version
|
1759
|
-
"1.
|
1759
|
+
"1.7.0" ;;SEKKA-VERSION
|
1760
1760
|
)
|
1761
1761
|
(defun sekka-version (&optional arg)
|
1762
1762
|
"入力モード変更"
|
data/gemfiles/Gemfile
CHANGED
data/lib/sekka/henkan.nnd
CHANGED
@@ -386,19 +386,32 @@
|
|
386
386
|
|
387
387
|
|
388
388
|
;; conversion #f => nil for EmacsLisp
|
389
|
-
(define (sekkaHenkan userid kvs cachesv keyword limit roman-method)
|
389
|
+
(define (sekkaHenkan userid kvs cachesv keyword limit roman-method emacs-mode)
|
390
390
|
(define cache-exp-second (* 10 60))
|
391
391
|
(let* ((keyword (keyword.strip))
|
392
|
-
(sekka-keyword (+ "sekka:" roman-method ":" (limit.to_s) ":" keyword)))
|
392
|
+
(sekka-keyword (+ "sekka:" roman-method ":" (limit.to_s) ":" (if emacs-mode "sexp" "json") ":" keyword)))
|
393
393
|
(if-let1 fetched (and cachesv
|
394
394
|
(cachesv.get sekka-keyword #f))
|
395
395
|
(begin
|
396
396
|
keyword
|
397
397
|
(read-from-string fetched))
|
398
|
-
(
|
399
|
-
|
400
|
-
|
401
|
-
|
398
|
+
(let*
|
399
|
+
((henkan-result-tmp
|
400
|
+
(sekka-henkan userid kvs keyword limit (make-keyword roman-method)))
|
401
|
+
(henkan-result
|
402
|
+
(if emacs-mode
|
403
|
+
(map
|
404
|
+
(lambda (x)
|
405
|
+
(map (lambda (val)
|
406
|
+
(if val val nil))
|
407
|
+
x))
|
408
|
+
henkan-result-tmp)
|
409
|
+
(list->vector
|
410
|
+
(map
|
411
|
+
(lambda (x)
|
412
|
+
(list->vector x))
|
413
|
+
henkan-result-tmp)))))
|
414
|
+
|
402
415
|
(and cachesv
|
403
416
|
(not (null? henkan-result))
|
404
417
|
(let1 fetched2 (cachesv.get "sekka:(keys)" #f)
|
data/lib/sekka/kvs.rb
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
#
|
32
32
|
# $Id:
|
33
33
|
#
|
34
|
-
require '
|
34
|
+
require 'memcachepod'
|
35
35
|
|
36
36
|
class Kvs
|
37
37
|
def initialize( dbtype )
|
@@ -110,9 +110,7 @@ class Kvs
|
|
110
110
|
when :redis
|
111
111
|
@db = Redis.new( :host => name )
|
112
112
|
when :memcache
|
113
|
-
@db =
|
114
|
-
:connect_timeout => 1000.0,
|
115
|
-
:timeout => 1000.0 )
|
113
|
+
@db = MemcachePod::Client.new( name, { :expires_in => 600 } )
|
116
114
|
when :gdbm
|
117
115
|
if not name.match( /.db$/ )
|
118
116
|
name = name + ".db"
|
@@ -175,11 +173,17 @@ class Kvs
|
|
175
173
|
if 0 == key.size
|
176
174
|
fallback
|
177
175
|
else
|
178
|
-
val =
|
176
|
+
val = ''
|
177
|
+
case @dbtype
|
178
|
+
when :memcache
|
179
|
+
val = @db.get(key.force_encoding("ASCII-8BIT"))
|
180
|
+
else
|
181
|
+
val = @db[ key ]
|
182
|
+
end
|
179
183
|
if val
|
180
|
-
val.force_encoding("UTF-8")
|
184
|
+
return val.force_encoding("UTF-8")
|
181
185
|
else
|
182
|
-
fallback
|
186
|
+
return fallback
|
183
187
|
end
|
184
188
|
end
|
185
189
|
end
|
data/lib/sekka/roman-lib.nnd
CHANGED
@@ -360,7 +360,7 @@
|
|
360
360
|
|
361
361
|
;; 子音が2音入ったテーブル
|
362
362
|
(define sekka-kana->roman-alist-long
|
363
|
-
|
363
|
+
'(
|
364
364
|
;; "n" 一つで "nn" を表現する件と被るのでAZIK専用拡張とする(エントリ上書き)
|
365
365
|
("にゃ" "nya" "nga")
|
366
366
|
("にゅ" "nyu" "ngu")
|
@@ -711,12 +711,19 @@
|
|
711
711
|
|
712
712
|
;; ハッシュテーブル ローマ字 =>平仮名
|
713
713
|
(define (sekka-alist-swap alist)
|
714
|
-
(
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
714
|
+
(let1 mapped (map
|
715
|
+
(lambda (x)
|
716
|
+
(let ((hira (car x))
|
717
|
+
(romans (cdr x)))
|
718
|
+
(map (lambda (r) (list r hira)) romans)))
|
719
|
+
alist)
|
720
|
+
(let1 lst '()
|
721
|
+
(for-each
|
722
|
+
(lambda (x)
|
723
|
+
(for-each (lambda (y) (push! lst y)) (reverse x)))
|
724
|
+
mapped)
|
725
|
+
(reverse lst))))
|
726
|
+
|
720
727
|
(define sekka-roman->kana-hash-short
|
721
728
|
(alist->hash-table (sekka-alist-swap sekka-kana->roman-alist-short)))
|
722
729
|
(define sekka-roman->kana-hash-long
|
data/lib/sekka/sekkaversion.rb
CHANGED
data/lib/sekkaserver.rb
CHANGED
@@ -60,12 +60,15 @@ module SekkaServer
|
|
60
60
|
@core.evalStr( "(use sekka.henkan)" )
|
61
61
|
@core.evalStr( '(define (writeToString sexp) (write-to-string sexp))' )
|
62
62
|
@core.evalStr( '(export-to-ruby writeToString)' )
|
63
|
+
@core.evalStr( "(use rfc.json)" )
|
64
|
+
@core.evalStr( '(define (constructJsonString sexp) (construct-json-string sexp))' )
|
65
|
+
@core.evalStr( '(export-to-ruby constructJsonString)' )
|
63
66
|
(@kvs,@initialCachesv) = @core.openSekkaJisyo( SekkaServer::Config.dictType,
|
64
67
|
SekkaServer::Config.dictSource,
|
65
68
|
SekkaServer::Config.cacheSource )
|
66
69
|
|
67
70
|
# connection check to memcached
|
68
|
-
fail_message = "sekka-server:
|
71
|
+
fail_message = "sekka-server: failed to access memcached.\n"
|
69
72
|
begin
|
70
73
|
@core.flushCacheServer(@initialCachesv)
|
71
74
|
rescue MemCache::MemCacheError
|
@@ -100,7 +103,6 @@ module SekkaServer
|
|
100
103
|
STDERR.printf( " dict version : %s\n", SekkaVersion.dictVersion )
|
101
104
|
STDERR.printf( " dict-type : %s\n", SekkaServer::Config.dictType )
|
102
105
|
STDERR.printf( " dict-db : %s\n", SekkaServer::Config.dictSource )
|
103
|
-
STDERR.printf( " memcached : %s\n", SekkaServer::Config.cacheSource )
|
104
106
|
STDERR.printf( " listenPort : %s\n", SekkaServer::Config.listenPort )
|
105
107
|
STDERR.printf( " proxyHost : %s\n", SekkaServer::Config.proxyHost )
|
106
108
|
STDERR.printf( " proxyPort : %s\n", SekkaServer::Config.proxyPort )
|
@@ -130,8 +132,8 @@ module SekkaServer
|
|
130
132
|
STDERR.puts "Info: processing [register(" + dictline + ") on " + userid + "] batch command... "
|
131
133
|
begin
|
132
134
|
registered = @core.registerUserJisyo(userid, @kvs, dictline)
|
133
|
-
rescue
|
134
|
-
STDERR.puts "
|
135
|
+
rescue Exception => e
|
136
|
+
STDERR.puts "Error: missing [register(" + dictline + ")] batch command... [" + e.message + "]"
|
135
137
|
end
|
136
138
|
if registered
|
137
139
|
str = d.strftime( "%D %X" )
|
@@ -147,17 +149,16 @@ module SekkaServer
|
|
147
149
|
STDERR.puts "Info: processing [kakutei(" + _tango + ")] batch command..."
|
148
150
|
begin
|
149
151
|
@core.sekkaKakutei( userid, @kvs, @cachesv, _key, _tango )
|
150
|
-
rescue
|
151
|
-
STDERR.puts "
|
152
|
+
rescue Exception => e
|
153
|
+
STDERR.puts "Error: missing [kakutei(" + _tango + ")] batch command... [" + e.message + "]"
|
152
154
|
end
|
153
|
-
|
154
155
|
STDERR.printf( "Info: kakutei [%s:%s] \n", _key, _tango )
|
155
156
|
when 'f' # flush
|
156
157
|
STDERR.puts "Info: processing [flush] batch command..."
|
157
158
|
begin
|
158
159
|
n = @core.flushUserJisyo( userid, @kvs )
|
159
|
-
rescue
|
160
|
-
STDERR.puts "
|
160
|
+
rescue Exception => e
|
161
|
+
STDERR.puts "Error: missing [flush] batch command... [" + e.message + "]"
|
161
162
|
end
|
162
163
|
@core.flushCacheServer( @cachesv )
|
163
164
|
STDERR.printf( "info : flush [%s] user's dict %d entries. \n", userid, n )
|
@@ -169,90 +170,31 @@ module SekkaServer
|
|
169
170
|
}
|
170
171
|
end
|
171
172
|
@thread.run
|
172
|
-
rescue
|
173
|
-
|
173
|
+
rescue Exception => e
|
174
|
+
STDERR.puts "Error: " + e.message # => "unhandled exception"
|
174
175
|
end
|
175
176
|
end
|
176
177
|
|
177
178
|
def call(env)
|
178
179
|
req = Rack::Request.new(env)
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
userid = URI.decode( req.params['userid'].force_encoding("UTF-8") )
|
193
|
-
format = URI.decode( req.params['format'].force_encoding("UTF-8") )
|
194
|
-
case req.path
|
195
|
-
when "/henkan"
|
196
|
-
_yomi = URI.decode( req.params[ 'yomi'].force_encoding("UTF-8") )
|
197
|
-
_limit = URI.decode( req.params[ 'limit'].force_encoding("UTF-8") )
|
198
|
-
_method = URI.decode( req.params['method'].force_encoding("UTF-8") )
|
199
|
-
_orRedis = if :redis == SekkaServer::Config.dictType then "or Redis-server" else "" end
|
200
|
-
@mutex.synchronize {
|
201
|
-
begin
|
202
|
-
if SekkaServer::Config.maxQueryLength < _yomi.size
|
203
|
-
result = sprintf( "sekka-server: query string is too long (over %d character length)", SekkaServer::Config.maxQueryLength )
|
204
|
-
else
|
205
|
-
@core.writeToString( @core.sekkaHenkan( userid, @kvs, @cachesv, _yomi, _limit.to_i, _method ))
|
206
|
-
end
|
207
|
-
rescue MemCache::MemCacheError
|
208
|
-
result = "sekka-server: memcached server is down (or may be offline)"
|
209
|
-
disableMemcache()
|
210
|
-
rescue Timeout
|
211
|
-
result = "sekka-server: Timeout to request memcached server #{_orRedis} (or may be offline)"
|
212
|
-
disableMemcache()
|
213
|
-
rescue SocketError
|
214
|
-
result = "sekka-server: SocketError to request memcached server #{_orRedis} (or may be offline)"
|
215
|
-
disableMemcache()
|
216
|
-
rescue Errno::ECONNREFUSED
|
217
|
-
result = "sekka-server: ConnectionRefused to request memcached server #{_orRedis} (or may be offline)"
|
218
|
-
disableMemcache()
|
219
|
-
end
|
220
|
-
}
|
221
|
-
when "/kakutei"
|
222
|
-
_key = URI.decode( req.params[ 'key'].force_encoding("UTF-8") )
|
223
|
-
_tango = URI.decode( req.params[ 'tango'].force_encoding("UTF-8") )
|
224
|
-
@queue.push( 'k ' + userid + " " + _key + " " + _tango )
|
225
|
-
when "/register"
|
226
|
-
dict = URI.decode( req.params['dict'].force_encoding( "UTF-8" ) ).split( "\n" )
|
227
|
-
dict.each { |x|
|
228
|
-
@queue.push( 'r ' + userid + " " + x )
|
229
|
-
}
|
230
|
-
sprintf( "sekka-server:register request (%s) words added, current-queue-size (%s)", dict.size, @queue.size )
|
231
|
-
when "/flush"
|
232
|
-
@queue.push( 'f ' + userid )
|
233
|
-
sprintf( "sekka-server:flush request successful." )
|
234
|
-
when "/googleime"
|
235
|
-
_yomi = URI.decode( req.params[ 'yomi'].force_encoding("UTF-8") )
|
236
|
-
printf( "info : google-ime request [%s]\n", _yomi )
|
237
|
-
result = "sekka-server: google-ime error"
|
238
|
-
begin
|
239
|
-
result = @core.googleIme( _yomi,
|
240
|
-
SekkaServer::Config.proxyHost,
|
241
|
-
SekkaServer::Config.proxyPort )
|
242
|
-
rescue Timeout
|
243
|
-
result = "sekka-server: Timeout to request google-ime (may be offline)"
|
244
|
-
rescue SocketError
|
245
|
-
result = "sekka-server: SocketError to request google-ime (may be offline)"
|
246
|
-
rescue Errno::ECONNREFUSED
|
247
|
-
result = "sekka-server: ConnectionRefused to request google-ime (or may be offline)"
|
248
|
-
end
|
249
|
-
@core.writeToString( result )
|
250
|
-
else
|
251
|
-
sprintf( "sekka-server:unknown path name. [%s]", req.path )
|
252
|
-
end
|
180
|
+
|
181
|
+
body = case req.request_method
|
182
|
+
when 'GET'
|
183
|
+
execGetMethod(req)
|
184
|
+
when 'POST'
|
185
|
+
if !req.params.has_key?('userid')
|
186
|
+
str = "Err: parameter 'userid' required"
|
187
|
+
STDERR.puts str
|
188
|
+
@core.writeToString( str )
|
189
|
+
elsif !req.params.has_key?('format')
|
190
|
+
str = "Err: parameter 'format' required"
|
191
|
+
STDERR.puts str
|
192
|
+
@core.writeToString( str )
|
253
193
|
else
|
254
|
-
|
194
|
+
execPostMethod(req)
|
255
195
|
end
|
196
|
+
else
|
197
|
+
"no message."
|
256
198
|
end
|
257
199
|
res = Rack::Response.new { |r|
|
258
200
|
r.status = 200
|
@@ -261,22 +203,86 @@ module SekkaServer
|
|
261
203
|
}
|
262
204
|
res.finish
|
263
205
|
end
|
264
|
-
|
265
|
-
def
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
if (@downTime.to_time.to_i + (10 * 60)) < now.to_time.to_i
|
270
|
-
@cachesv = @initialCachesv
|
271
|
-
STDERR.printf( "Sekka Info: revert using memcache server. [%s]\n", @downTime )
|
272
|
-
end
|
206
|
+
|
207
|
+
def execGetMethod(req)
|
208
|
+
case req.path
|
209
|
+
when "/status"
|
210
|
+
"OK"
|
273
211
|
end
|
274
212
|
end
|
275
213
|
|
276
|
-
def
|
277
|
-
|
278
|
-
|
279
|
-
|
214
|
+
def isJson(format)
|
215
|
+
return "json" == format.downcase
|
216
|
+
end
|
217
|
+
|
218
|
+
def execPostMethod(req)
|
219
|
+
|
220
|
+
userid = URI.decode( req.params['userid'].force_encoding("UTF-8") )
|
221
|
+
format = URI.decode( req.params['format'].force_encoding("UTF-8") )
|
222
|
+
case req.path
|
223
|
+
when "/henkan"
|
224
|
+
_yomi = URI.decode( req.params[ 'yomi'].force_encoding("UTF-8") )
|
225
|
+
_limit = URI.decode( req.params[ 'limit'].force_encoding("UTF-8") )
|
226
|
+
_method = URI.decode( req.params['method'].force_encoding("UTF-8") )
|
227
|
+
_orRedis = if :redis == SekkaServer::Config.dictType then "or Redis-server" else "" end
|
228
|
+
@mutex.synchronize {
|
229
|
+
begin
|
230
|
+
if SekkaServer::Config.maxQueryLength < _yomi.size
|
231
|
+
result = sprintf( "sekka-server: query string is too long (over %d character length)", SekkaServer::Config.maxQueryLength )
|
232
|
+
else
|
233
|
+
if isJson(format)
|
234
|
+
obj = @core.sekkaHenkan( userid, @kvs, @cachesv, _yomi, _limit.to_i, _method, false )
|
235
|
+
@core.constructJsonString(obj)
|
236
|
+
else
|
237
|
+
obj = @core.sekkaHenkan( userid, @kvs, @cachesv, _yomi, _limit.to_i, _method, true )
|
238
|
+
@core.writeToString(obj)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
rescue MemCache::MemCacheError
|
242
|
+
result = "sekka-server: memcached server is down (or may be offline)"
|
243
|
+
rescue Timeout
|
244
|
+
result = "sekka-server: Timeout to request memcached server #{_orRedis} (or may be offline)"
|
245
|
+
rescue SocketError
|
246
|
+
result = "sekka-server: SocketError to request memcached server #{_orRedis} (or may be offline)"
|
247
|
+
rescue Errno::ECONNREFUSED
|
248
|
+
result = "sekka-server: ConnectionRefused to request memcached server #{_orRedis} (or may be offline)"
|
249
|
+
end
|
250
|
+
}
|
251
|
+
when "/kakutei"
|
252
|
+
_key = URI.decode( req.params[ 'key'].force_encoding("UTF-8") )
|
253
|
+
_tango = URI.decode( req.params[ 'tango'].force_encoding("UTF-8") )
|
254
|
+
@queue.push( 'k ' + userid + " " + _key + " " + _tango )
|
255
|
+
if isJson(format)
|
256
|
+
sprintf("{}")
|
257
|
+
end
|
258
|
+
when "/register"
|
259
|
+
dict = URI.decode( req.params['dict'].force_encoding( "UTF-8" ) ).split( "\n" )
|
260
|
+
dict.each { |x|
|
261
|
+
@queue.push( 'r ' + userid + " " + x )
|
262
|
+
}
|
263
|
+
sprintf( "sekka-server:register request (%s) words added, current-queue-size (%s)", dict.size, @queue.size )
|
264
|
+
when "/flush"
|
265
|
+
@queue.push( 'f ' + userid )
|
266
|
+
sprintf( "sekka-server:flush request successful." )
|
267
|
+
when "/googleime"
|
268
|
+
_yomi = URI.decode( req.params[ 'yomi'].force_encoding("UTF-8") )
|
269
|
+
printf( "info : google-ime request [%s]\n", _yomi )
|
270
|
+
result = "sekka-server: google-ime error"
|
271
|
+
begin
|
272
|
+
result = @core.googleIme( _yomi,
|
273
|
+
SekkaServer::Config.proxyHost,
|
274
|
+
SekkaServer::Config.proxyPort )
|
275
|
+
rescue Timeout
|
276
|
+
result = "sekka-server: Timeout to request google-ime (may be offline)"
|
277
|
+
rescue SocketError
|
278
|
+
result = "sekka-server: SocketError to request google-ime (may be offline)"
|
279
|
+
rescue Errno::ECONNREFUSED
|
280
|
+
result = "sekka-server: ConnectionRefused to request google-ime (or may be offline)"
|
281
|
+
end
|
282
|
+
@core.writeToString( result )
|
283
|
+
else
|
284
|
+
sprintf( "sekka-server:unknown path name. [%s]", req.path )
|
285
|
+
end
|
280
286
|
end
|
281
287
|
end
|
282
288
|
end
|
data/test/henkan-main.nnd
CHANGED
@@ -1154,87 +1154,96 @@
|
|
1154
1154
|
|
1155
1155
|
(test* "henkan toplevel(for Elisp) 1"
|
1156
1156
|
'(("*" nil "*" j 0) ("※" nil "*" j 1) ("×" nil "*" j 2) ("*" nil "*" z 3) ("*" nil "*" l 4))
|
1157
|
-
(sekkaHenkan userid kvs #f "*" 0 "normal"))
|
1157
|
+
(sekkaHenkan userid kvs #f "*" 0 "normal" #t))
|
1158
1158
|
|
1159
1159
|
(test* "henkan toplevel(for Elisp) 2"
|
1160
1160
|
'(("しぜんげんごりか" nil "shizengengorika" h 0) ("シゼンゲンゴリカ" nil "shizengengorika" k 1) ("しぜにぇにょりか" nil "shizengengorika" h 2) ("シゼニェニョリカ" nil "shizengengorika" k 3) ("shizengengorika" nil "shizengengorika" z 4) ("shizengengorika" nil "shizengengorika" l 5) ("自然言語理解" nil "しぜんげんごりかい" j 6) ("自然言語" nil "しぜんげんご" j 7) ("自然言語処理" nil "しぜんげんごしょり" j 8))
|
1161
|
-
(sekkaHenkan userid kvs #f "shizengengorika" 0 "normal"))
|
1161
|
+
(sekkaHenkan userid kvs #f "shizengengorika" 0 "normal" #t))
|
1162
1162
|
|
1163
1163
|
(test* "henkan toplevel(for Elisp) 3"
|
1164
1164
|
'(("自然言語理解" nil "しぜんげんごりかい" j 0) ("自然言語" nil "しぜんげんご" j 1) ("自然言語処理" nil "しぜんげんごしょり" j 2) ("しぜんげんごりか" nil "shizengengorika" h 3) ("シゼンゲンゴリカ" nil "shizengengorika" k 4) ("しぜにぇにょりか" nil "shizengengorika" h 5) ("シゼニェニョリカ" nil "shizengengorika" k 6) ("Shizengengorika" nil "Shizengengorika" z 7) ("Shizengengorika" nil "Shizengengorika" l 8))
|
1165
|
-
(sekkaHenkan userid kvs #f "Shizengengorika" 0 "normal"))
|
1165
|
+
(sekkaHenkan userid kvs #f "Shizengengorika" 0 "normal" #t))
|
1166
1166
|
|
1167
1167
|
(test* "henkan toplevel(for Elisp) 4"
|
1168
1168
|
'(("変化する" nil "へんかs" j 0) ("へんかする" nil "henkasuru" h 1) ("ヘンカスル" nil "henkasuru" k 2) ("へにんあする" nil "henkasuru" h 3) ("ヘニンアスル" nil "henkasuru" k 4) ("henkaSuru" nil "henkaSuru" z 5) ("henkaSuru" nil "henkaSuru" l 6))
|
1169
|
-
(sekkaHenkan userid kvs #f "henkaSuru" 0 "normal"))
|
1169
|
+
(sekkaHenkan userid kvs #f "henkaSuru" 0 "normal" #t))
|
1170
1170
|
|
1171
1171
|
(test* "henkan toplevel(for Elisp) 5"
|
1172
1172
|
'(("変換" nil "へんかん" j 0) ("返還" nil "へんかん" j 1) ("変化" nil "へんか" j 2) ("返歌" nil "へんか" j 3) ("へんかん" nil "henkan" h 4) ("ヘンカン" nil "henkan" k 5) ("へにんあん" nil "henkan" h 6) ("ヘニンアン" nil "henkan" k 7) ("Henkan" nil "Henkan" z 8) ("Henkan" nil "Henkan" l 9))
|
1173
|
-
(sekkaHenkan userid kvs #f "Henkan" 0 "normal"))
|
1173
|
+
(sekkaHenkan userid kvs #f "Henkan" 0 "normal" #t))
|
1174
1174
|
|
1175
1175
|
(test* "henkan toplevel(for Elisp) 6"
|
1176
1176
|
'(("マジパネェ" nil "まじぱねぇ" j 0) ("まじパネェ" nil "まじぱねぇ" j 1) ("マジ半端ネェ" nil "まじぱねぇ" j 2) ("まじ半端ネェ" nil "まじぱねぇ" j 3) ("まじぱねえ" nil "majipanee" h 4) ("マジパネエ" nil "majipanee" k 5) ("Majipanee" nil "Majipanee" z 6) ("Majipanee" nil "Majipanee" l 7))
|
1177
|
-
(sekkaHenkan userid kvs #f "Majipanee" 0 "normal"))
|
1177
|
+
(sekkaHenkan userid kvs #f "Majipanee" 0 "normal" #t))
|
1178
1178
|
|
1179
1179
|
(test* "henkan toplevel(for Elisp) 7"
|
1180
1180
|
'(("変換エンジン" nil "へんかんえんじん" j 0) ("変換" nil "へんかん" j 1) ("返還" nil "へんかん" j 2) ("へんかねんじ" nil "henkanenji" h 3) ("ヘンカネンジ" nil "henkanenji" k 4) ("へにんあねぬんい" nil "henkanenji" h 5) ("ヘニンアネヌンイ" nil "henkanenji" k 6) ("Henkanenji" nil "Henkanenji" z 7) ("Henkanenji" nil "Henkanenji" l 8))
|
1181
|
-
(sekkaHenkan userid kvs #f "Henkanenji" 0 "normal"))
|
1181
|
+
(sekkaHenkan userid kvs #f "Henkanenji" 0 "normal" #t))
|
1182
1182
|
|
1183
1183
|
(test* "henkan toplevel(for Elisp) 8"
|
1184
1184
|
'(("ブログった" nil "ぶろぐt" j 0) ("ブログった" nil "ぶろぐ+" j 1) ("ブログった" nil "ぶろぐr" j 2) ("ブログった" nil "ぶろぐ`" j 3) ("ぶろぐった" nil "burogutta" h 4) ("ブログッタ" nil "burogutta" k 5) ("buroguTta" nil "buroguTta" z 6) ("buroguTta" nil "buroguTta" l 7))
|
1185
|
-
(sekkaHenkan userid kvs #f "buroguTta" 0 "normal"))
|
1185
|
+
(sekkaHenkan userid kvs #f "buroguTta" 0 "normal" #t))
|
1186
1186
|
|
1187
1187
|
(test* "henkan toplevel(for Elisp) 9"
|
1188
1188
|
'(("ブログりました" nil "ぶろぐr" j 0) ("ブログりました" nil "ぶろぐ+" j 1) ("ブログりました" nil "ぶろぐt" j 2) ("ブログりました" nil "ぶろぐ`" j 3) ("ぶろぐりました" nil "burogurimashita" h 4) ("ブログリマシタ" nil "burogurimashita" k 5) ("buroguRimashita" nil "buroguRimashita" z 6) ("buroguRimashita" nil "buroguRimashita" l 7))
|
1189
|
-
(sekkaHenkan userid kvs #f "buroguRimashita" 0 "normal"))
|
1189
|
+
(sekkaHenkan userid kvs #f "buroguRimashita" 0 "normal" #t))
|
1190
1190
|
|
1191
1191
|
(test* "henkan toplevel(for Elisp) 10"
|
1192
1192
|
'(("はてブ" nil "はてぶ" j 0) ("はてなブックマーク" nil "はてぶ" j 1) ("はてぶ" nil "hatebu" h 2) ("ハテブ" nil "hatebu" k 3) ("Hatebu" nil "Hatebu" z 4) ("Hatebu" nil "Hatebu" l 5))
|
1193
|
-
(sekkaHenkan userid kvs #f "Hatebu" 0 "normal"))
|
1193
|
+
(sekkaHenkan userid kvs #f "Hatebu" 0 "normal" #t))
|
1194
1194
|
|
1195
1195
|
(test* "henkan toplevel(for Elisp) 11"
|
1196
1196
|
'(("かに" nil "kani" h 0) ("カニ" nil "kani" k 1) ("kani" nil "kani" z 2) ("kani" nil "kani" l 3) ("蟹" nil "かに" j 4) ("可児" nil "かに" j 5) ("蠏" nil "かに" j 6) ("簡易" nil "かんい" j 7) ("官位" nil "かんい" j 8) ("冠位" "-十二階" "かんい" j 9) ("漢医" "漢方医" "かんい" j 10) ("敢為" nil "かんい" j 11) ("官医" nil "かんい" j 12) ("寛衣" nil "かんい" j 13) ("換位" nil "かんい" j 14) ("簡意" nil "かんい" j 15))
|
1197
|
-
(sekkaHenkan userid kvs #f "kani" 0 "normal"))
|
1197
|
+
(sekkaHenkan userid kvs #f "kani" 0 "normal" #t))
|
1198
1198
|
|
1199
1199
|
(test* "henkan toplevel(for Elisp) 12"
|
1200
1200
|
'(("かんい" nil "kanni" h 0) ("カンイ" nil "kanni" k 1) ("kanni" nil "kanni" z 2) ("kanni" nil "kanni" l 3) ("簡易" nil "かんい" j 4) ("官位" nil "かんい" j 5) ("冠位" "-十二階" "かんい" j 6) ("漢医" "漢方医" "かんい" j 7) ("敢為" nil "かんい" j 8) ("官医" nil "かんい" j 9) ("寛衣" nil "かんい" j 10) ("換位" nil "かんい" j 11) ("簡意" nil "かんい" j 12) ("蟹" nil "かに" j 13) ("可児" nil "かに" j 14) ("蠏" nil "かに" j 15))
|
1201
|
-
(sekkaHenkan userid kvs #f "kanni" 0 "normal"))
|
1201
|
+
(sekkaHenkan userid kvs #f "kanni" 0 "normal" #t))
|
1202
1202
|
|
1203
1203
|
(test* "henkan toplevel(for Elisp) 13"
|
1204
1204
|
'(("確固" nil "かっこ" j 0) ("括弧" nil "かっこ" j 1) ("かっこ" nil "ka@ko" h 2) ("カッコ" nil "ka@ko" k 3) ("Ka@ko" nil "Ka@ko" z 4) ("Ka@ko" nil "Ka@ko" l 5))
|
1205
|
-
(sekkaHenkan userid kvs #f "Ka@ko" 2 "normal"))
|
1205
|
+
(sekkaHenkan userid kvs #f "Ka@ko" 2 "normal" #t))
|
1206
1206
|
|
1207
1207
|
(test* "henkan toplevel(for Elisp) 14"
|
1208
1208
|
'(("かっこ" nil "ka@ko" h 0) ("カッコ" nil "ka@ko" k 1) ("ka@ko" nil "ka@ko" z 2) ("ka@ko" nil "ka@ko" l 3) ("確固" nil "かっこ" j 4) ("括弧" nil "かっこ" j 5))
|
1209
|
-
(sekkaHenkan userid kvs #f "ka@ko" 2 "normal"))
|
1209
|
+
(sekkaHenkan userid kvs #f "ka@ko" 2 "normal" #t))
|
1210
1210
|
|
1211
1211
|
(test* "henkan toplevel(for Elisp) 15"
|
1212
1212
|
'(("確固" nil "かっこ" j 0) ("括弧" nil "かっこ" j 1) ("かっこ" nil "ka;ko" h 2) ("カッコ" nil "ka;ko" k 3) ("Ka;ko" nil "Ka;ko" z 4) ("Ka;ko" nil "Ka;ko" l 5))
|
1213
|
-
(sekkaHenkan userid kvs #f "Ka;ko" 2 "normal"))
|
1213
|
+
(sekkaHenkan userid kvs #f "Ka;ko" 2 "normal" #t))
|
1214
1214
|
|
1215
1215
|
(test* "henkan toplevel(for Elisp) 16"
|
1216
1216
|
'(("かっこ" nil "ka;ko" h 0) ("カッコ" nil "ka;ko" k 1) ("ka;ko" nil "ka;ko" z 2) ("ka;ko" nil "ka;ko" l 3) ("確固" nil "かっこ" j 4) ("括弧" nil "かっこ" j 5))
|
1217
|
-
(sekkaHenkan userid kvs #f "ka;ko" 2 "normal"))
|
1217
|
+
(sekkaHenkan userid kvs #f "ka;ko" 2 "normal" #t))
|
1218
1218
|
|
1219
1219
|
(test* "henkan toplevel(for Elisp) 17"
|
1220
1220
|
'(("ユーザー辞書" nil "ゆーざーじしょ" j 0) ("ゆーざーじしょ" nil "yu-za-jisyo" h 1) ("ユーザージショ" nil "yu-za-jisyo" k 2) ("Yu-za-jisyo" nil "Yu-za-jisyo" z 3) ("Yu-za-jisyo" nil "Yu-za-jisyo" l 4))
|
1221
|
-
(sekkaHenkan userid kvs #f "Yu-za-jisyo" 2 "normal"))
|
1221
|
+
(sekkaHenkan userid kvs #f "Yu-za-jisyo" 2 "normal" #t))
|
1222
1222
|
|
1223
1223
|
(test* "henkan toplevel(for Elisp) 18"
|
1224
1224
|
'(("2月28日" nil "#がつ#にち" n 0) ("2月28日" nil "#がつ#にち" n 1) ("二月二八日" nil "#がつ#にち" n 2) ("二月28日" nil "#がつ#にち" n 3) ("2gatu28nichi" nil "2gatu28nichi" z 4) ("2gatu28nichi" nil "2gatu28nichi" l 5))
|
1225
|
-
(sekkaHenkan userid kvs #f "2gatu28nichi" 0 "normal"))
|
1225
|
+
(sekkaHenkan userid kvs #f "2gatu28nichi" 0 "normal" #t))
|
1226
1226
|
|
1227
1227
|
(test* "henkan toplevel(for Elisp) 19"
|
1228
1228
|
'(("100" nil "100" n 0) ("100" nil "100" n 1) ("一〇〇" nil "100" n 2) ("百" nil "100" n 3))
|
1229
|
-
(sekkaHenkan userid kvs #f "100" 0 "normal"))
|
1229
|
+
(sekkaHenkan userid kvs #f "100" 0 "normal" #t))
|
1230
1230
|
|
1231
1231
|
(test* "henkan toplevel(for Elisp) 20"
|
1232
1232
|
'(("1000020003" nil "1000020003" n 0) ("1000020003" nil "1000020003" n 1) ("一〇〇〇〇二〇〇〇三" nil "1000020003" n 2) ("十億二万三" nil "1000020003" n 3))
|
1233
|
-
(sekkaHenkan userid kvs #f "1000020003" 0 "normal"))
|
1233
|
+
(sekkaHenkan userid kvs #f "1000020003" 0 "normal" #t))
|
1234
1234
|
(test* "henkan toplevel(for Elisp) 21"
|
1235
1235
|
'(("3チーム" nil "#ちーむ" n 0) ("3chi-mu" nil "3chi-mu" z 1) ("3chi-mu" nil "3chi-mu" l 2))
|
1236
|
-
(sekkaHenkan userid kvs #f "3chi-mu" 0 "normal"))
|
1236
|
+
(sekkaHenkan userid kvs #f "3chi-mu" 0 "normal" #t))
|
1237
1237
|
|
1238
|
+
(sekkaHenkan userid kvs #f "*" 0 "normal" #f)
|
1239
|
+
|
1240
|
+
(test* "henkan toplevel(for JSON) 1"
|
1241
|
+
'#(#("*" #f "*" j 0) #("※" #f "*" j 1) #("×" #f "*" j 2) #("*" #f "*" z 3) #("*" #f "*" l 4))
|
1242
|
+
(sekkaHenkan userid kvs #f "*" 0 "normal" #f))
|
1243
|
+
|
1244
|
+
(test* "henkan toplevel(for JSON) 2"
|
1245
|
+
'#(#("しぜんげんごりか" #f "shizengengorika" h 0) #("シゼンゲンゴリカ" #f "shizengengorika" k 1) #("しぜにぇにょりか" #f "shizengengorika" h 2) #("シゼニェニョリカ" #f "shizengengorika" k 3) #("shizengengorika" #f "shizengengorika" z 4) #("shizengengorika" #f "shizengengorika" l 5) #("自然言語理解" #f "しぜんげんごりかい" j 6) #("自然言語" #f "しぜんげんご" j 7) #("自然言語処理" #f "しぜんげんごしょり" j 8))
|
1246
|
+
(sekkaHenkan userid kvs #f "shizengengorika" 0 "normal" #f))
|
1238
1247
|
|
1239
1248
|
|
1240
1249
|
;;-------------------------------------------------------------------
|
@@ -1243,7 +1252,7 @@
|
|
1243
1252
|
'(("返還" nil "へんかん" j 0) ("変換" nil "へんかん" j 1) ("変化" nil "へんか" j 2) ("返歌" nil "へんか" j 3) ("へんかん" nil "henkan" h 4) ("ヘンカン" nil "henkan" k 5) ("へにんあん" nil "henkan" h 6) ("ヘニンアン" nil "henkan" k 7) ("Henkan" nil "Henkan" z 8) ("Henkan" nil "Henkan" l 9))
|
1244
1253
|
(begin
|
1245
1254
|
(sekkaKakutei userid kvs #f "へんかん" "返還")
|
1246
|
-
(sekkaHenkan userid kvs #f "Henkan" 0 "normal")))
|
1255
|
+
(sekkaHenkan userid kvs #f "Henkan" 0 "normal" #t)))
|
1247
1256
|
|
1248
1257
|
(test* "DB check after henkan kakutei 1"
|
1249
1258
|
"/返還/変換"
|
@@ -1253,7 +1262,7 @@
|
|
1253
1262
|
'(("変換" nil "へんかん" j 0) ("返還" nil "へんかん" j 1) ("変化" nil "へんか" j 2) ("返歌" nil "へんか" j 3) ("へんかん" nil "henkan" h 4) ("ヘンカン" nil "henkan" k 5) ("へにんあん" nil "henkan" h 6) ("ヘニンアン" nil "henkan" k 7) ("Henkan" nil "Henkan" z 8) ("Henkan" nil "Henkan" l 9))
|
1254
1263
|
(begin
|
1255
1264
|
(sekkaKakutei userid kvs #f "へんかん" "変換")
|
1256
|
-
(sekkaHenkan userid kvs #f "Henkan" 0 "normal")))
|
1265
|
+
(sekkaHenkan userid kvs #f "Henkan" 0 "normal" #t)))
|
1257
1266
|
|
1258
1267
|
(test* "DB check after henkan kakutei 2"
|
1259
1268
|
"/変換/返還"
|
@@ -1263,13 +1272,13 @@
|
|
1263
1272
|
'(("デベロッパ" nil "developer" j 0) ("デベロッパー" nil "developer" j 1) ("ディベロッパー" nil "developer" j 2) ("developer" nil "developer" z 3) ("developer" nil "developer" l 4))
|
1264
1273
|
(begin
|
1265
1274
|
(sekkaKakutei userid kvs #f "developer" "デベロッパ")
|
1266
|
-
(sekkaHenkan userid kvs #f "developer" 0 "normal")))
|
1275
|
+
(sekkaHenkan userid kvs #f "developer" 0 "normal" #t)))
|
1267
1276
|
|
1268
1277
|
(test* "henkan kakutei(for Elisp) 4"
|
1269
1278
|
'(("。" nil "." j 0) ("." nil "." j 1) ("・" nil "." j 2) ("…" "..." "." j 3) ("." nil "." z 4) ("." nil "." l 5))
|
1270
1279
|
(begin
|
1271
1280
|
(sekkaKakutei userid kvs #f "." "。")
|
1272
|
-
(sekkaHenkan userid kvs #f "." 0 "normal")))
|
1281
|
+
(sekkaHenkan userid kvs #f "." 0 "normal" #t)))
|
1273
1282
|
|
1274
1283
|
(test* "henkan kakutei(for Elisp) 5"
|
1275
1284
|
nil
|
@@ -1287,24 +1296,24 @@
|
|
1287
1296
|
'(("はてなブックマーク" nil "はてぶ" j 0) ("はてブ" nil "はてぶ" j 1) ("はてぶ" nil "hatebu" h 2) ("ハテブ" nil "hatebu" k 3) ("Hatebu" nil "Hatebu" z 4) ("Hatebu" nil "Hatebu" l 5))
|
1288
1297
|
(begin
|
1289
1298
|
(sekkaKakutei userid kvs #f "はてぶ" "はてなブックマーク")
|
1290
|
-
(sekkaHenkan userid kvs #f "Hatebu" 0 "normal")))
|
1299
|
+
(sekkaHenkan userid kvs #f "Hatebu" 0 "normal" #t)))
|
1291
1300
|
|
1292
1301
|
|
1293
1302
|
(test* "henkan kakutei(for Elisp) 9"
|
1294
1303
|
'(("." nil "." j 0) ("・" nil "." j 1) ("。" nil "." j 2) ("…" "..." "." j 3) ("." nil "." z 4) ("." nil "." l 5))
|
1295
1304
|
(begin
|
1296
|
-
(sekkaHenkan userid2 kvs #f "." 0 "normal")))
|
1305
|
+
(sekkaHenkan userid2 kvs #f "." 0 "normal" #t))) ;; userid2
|
1297
1306
|
|
1298
1307
|
(test* "henkan kakutei(for Elisp) 10"
|
1299
1308
|
'(("。" nil "." j 0) ("." nil "." j 1) ("・" nil "." j 2) ("…" "..." "." j 3) ("." nil "." z 4) ("." nil "." l 5))
|
1300
1309
|
(begin
|
1301
1310
|
(sekkaKakutei userid2 kvs #f "." "。") ;; userid2
|
1302
|
-
(sekkaHenkan userid2 kvs #f "." 0 "normal")))
|
1311
|
+
(sekkaHenkan userid2 kvs #f "." 0 "normal" #t))) ;; userid2
|
1303
1312
|
|
1304
1313
|
(test* "henkan kakutei(for Elisp) 11"
|
1305
1314
|
'(("。" nil "." j 0) ("." nil "." j 1) ("・" nil "." j 2) ("…" "..." "." j 3) ("." nil "." z 4) ("." nil "." l 5))
|
1306
1315
|
(begin
|
1307
|
-
(sekkaHenkan userid2 kvs #f "." 0 "normal")))
|
1316
|
+
(sekkaHenkan userid2 kvs #f "." 0 "normal" #t))) ;; userid2
|
1308
1317
|
|
1309
1318
|
(test* "henkan kakutei(for Elisp) 12"
|
1310
1319
|
nil
|
@@ -1315,30 +1324,30 @@
|
|
1315
1324
|
'(("観" "(字義:みわたす)" "みr" j 0) ("見" nil "みr" j 1) ("視" "(字義:じっとみる)" "みr" j 2) ("診" "(diagnose) 患者を診る" "みr" j 3) ("看" "(nurse) 病母を看る" "みr" j 4) ("觀" "「観」の旧字" "みr" j 5) ("miR" nil "miR" z 6) ("miR" nil "miR" l 7))
|
1316
1325
|
(begin
|
1317
1326
|
(sekkaKakutei userid kvs #f "みr" "観")
|
1318
|
-
(sekkaHenkan userid kvs #f "miR" 0 "normal")))
|
1327
|
+
(sekkaHenkan userid kvs #f "miR" 0 "normal" #t)))
|
1319
1328
|
|
1320
1329
|
(test* "henkan kakutei(for Elisp) 14"
|
1321
1330
|
'(("視" "(字義:じっとみる)" "みr" j 0) ("観" "(字義:みわたす)" "みr" j 1) ("見" nil "みr" j 2) ("診" "(diagnose) 患者を診る" "みr" j 3) ("看" "(nurse) 病母を看る" "みr" j 4) ("觀" "「観」の旧字" "みr" j 5) ("miR" nil "miR" z 6) ("miR" nil "miR" l 7))
|
1322
1331
|
(begin
|
1323
1332
|
(sekkaKakutei userid kvs #f "みr" "視")
|
1324
|
-
(sekkaHenkan userid kvs #f "miR" 0 "normal")))
|
1333
|
+
(sekkaHenkan userid kvs #f "miR" 0 "normal" #t)))
|
1325
1334
|
|
1326
1335
|
(test* "henkan kakutei(for Elisp) 15"
|
1327
1336
|
'(("観る" "(字義:みわたす)" "みr" j 0) ("見る" nil "みr" j 1) ("視る" "(字義:じっとみる)" "みr" j 2) ("診る" "(diagnose) 患者を診る" "みr" j 3) ("看る" "(nurse) 病母を看る" "みr" j 4) ("觀る" "「観」の旧字" "みr" j 5) ("みる" nil "miru" h 6) ("ミル" nil "miru" k 7) ("miRu" nil "miRu" z 8) ("miRu" nil "miRu" l 9))
|
1328
1337
|
(begin
|
1329
1338
|
(sekkaKakutei userid2 kvs #f "みr" "観る") ;; userid2
|
1330
|
-
(sekkaHenkan userid2 kvs #f "miRu" 0 "normal")))
|
1339
|
+
(sekkaHenkan userid2 kvs #f "miRu" 0 "normal" #t))) ;; userid2
|
1331
1340
|
|
1332
1341
|
(test* "henkan kakutei(for Elisp) 16"
|
1333
1342
|
'(("かに" nil "kani" h 0) ("カニ" nil "kani" k 1) ("kani" nil "kani" z 2) ("kani" nil "kani" l 3) ("可児" nil "かに" j 4) ("蟹" nil "かに" j 5) ("蠏" nil "かに" j 6) ("簡易" nil "かんい" j 7) ("官位" nil "かんい" j 8) ("冠位" "-十二階" "かんい" j 9) ("漢医" "漢方医" "かんい" j 10) ("敢為" nil "かんい" j 11) ("官医" nil "かんい" j 12) ("寛衣" nil "かんい" j 13) ("換位" nil "かんい" j 14) ("簡意" nil "かんい" j 15))
|
1334
1343
|
(begin
|
1335
1344
|
(sekkaKakutei userid kvs #f "かに" "可児")
|
1336
|
-
(sekkaHenkan userid kvs #f "kani" 0 "normal")))
|
1345
|
+
(sekkaHenkan userid kvs #f "kani" 0 "normal" #t)))
|
1337
1346
|
(test* "henkan kakutei(for Elisp) 17"
|
1338
1347
|
'(("かんい" nil "kanni" h 0) ("カンイ" nil "kanni" k 1) ("kanni" nil "kanni" z 2) ("kanni" nil "kanni" l 3) ("官位" nil "かんい" j 4) ("簡易" nil "かんい" j 5) ("冠位" "-十二階" "かんい" j 6) ("漢医" "漢方医" "かんい" j 7) ("敢為" nil "かんい" j 8) ("官医" nil "かんい" j 9) ("寛衣" nil "かんい" j 10) ("換位" nil "かんい" j 11) ("簡意" nil "かんい" j 12) ("可児" nil "かに" j 13) ("蟹" nil "かに" j 14) ("蠏" nil "かに" j 15))
|
1339
1348
|
(begin
|
1340
1349
|
(sekkaKakutei userid kvs #f "かんい" "官位")
|
1341
|
-
(sekkaHenkan userid kvs #f "kanni" 0 "normal")))
|
1350
|
+
(sekkaHenkan userid kvs #f "kanni" 0 "normal" #t)))
|
1342
1351
|
|
1343
1352
|
;;===================================================================
|
1344
1353
|
|
data/test/jisyo.nnd
CHANGED
@@ -109,5 +109,11 @@
|
|
109
109
|
'("shiroI Cしろi" "siroI Cしろi" "xiroI Cしろi" "しろi /白" "ai Cあい" "あい /愛/哀/相/挨" "Greek /Α/Β/Γ/Δ/Ε/Ζ/Η/Θ/Ι/Κ/Λ/Μ/Ν/Ξ/Ο/Π/Ρ/Σ/Τ/Υ/Φ/Χ/Ψ/Ω" ">an C>あん" ">ann C>あん" ">aq C>あん" ">あん /案" ">yasuI C>やすi" ">やすi /易" "! /!/感嘆符" "? /?" "ko'hi' Cこーひー" "ko'hi- Cこーひー" "ko'hi: Cこーひー" "ko'hi^ Cこーひー" "ko-hi' Cこーひー" "ko-hi- Cこーひー" "ko-hi: Cこーひー" "ko-hi^ Cこーひー" "ko:hi' Cこーひー" "ko:hi- Cこーひー" "ko:hi: Cこーひー" "ko:hi^ Cこーひー" "ko^hi' Cこーひー" "ko^hi- Cこーひー" "ko^hi: Cこーひー" "ko^hi^ Cこーひー" "こーひー /コーヒー" "=shimashita しました" "=shimasita しました" "=shimast しました" "=simashita しました" "=simasita しました" "=simast しました" "=ximast しました" "=shiteimasu しています" "=shitwms しています" "=siteimasu しています" "=sitwms しています" "=xitwms しています")
|
110
110
|
(convert-skk-jisyo-f _input)))
|
111
111
|
|
112
|
+
;;(with-open "./data/1000.tsv"
|
113
|
+
;; (lambda (_input)
|
114
|
+
;; (test* "restore"
|
115
|
+
;; '("")
|
116
|
+
;; (restore-sekka-jisyo-f _input "out.ldb"))))
|
117
|
+
|
112
118
|
;;===================================================================
|
113
119
|
(test-end)
|
data/test/memcache.nnd
CHANGED
@@ -47,12 +47,6 @@
|
|
47
47
|
;;-------------------------------------------------------------------
|
48
48
|
(test-section "memcached access")
|
49
49
|
|
50
|
-
(test* "db connect NG and Exception"
|
51
|
-
(test-error MemCache::MemCacheError)
|
52
|
-
(let1 sv (Kvs.new dbtype)
|
53
|
-
(sv.open "localhost:11111")
|
54
|
-
(sv.put! "temp:1" "one")))
|
55
|
-
|
56
50
|
(test* "db connect OK"
|
57
51
|
"one"
|
58
52
|
(begin
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sekka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kiyoka Nishiyama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -252,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
252
252
|
version: '0'
|
253
253
|
requirements: []
|
254
254
|
rubyforge_project:
|
255
|
-
rubygems_version: 2.6.
|
255
|
+
rubygems_version: 2.6.11
|
256
256
|
signing_key:
|
257
257
|
specification_version: 4
|
258
258
|
summary: Sekka is a SKK like input method.
|