sekka 1.6.2 → 1.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Rakefile +17 -3
- data/VERSION.yml +1 -1
- data/bin/sekka-jisyo +17 -13
- data/bin/sekka-server +87 -50
- data/data/.gitignore +7 -0
- data/emacs/sekka.el +2 -2
- data/lib/sekka/kvs.rb +24 -5
- data/lib/sekka/sekkaversion.rb +2 -2
- data/public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.ldb.tar.gz.md5 +1 -0
- data/public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.ldb.tar.gz.url +2 -0
- data/public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.md5 +1 -0
- data/public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.url +1 -0
- data/test/henkan-main.nnd +4 -0
- data/test/sekka-dump-out-1.txt +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad1477c07c6d878c2b57f0d10314f671d9ea1f46
|
4
|
+
data.tar.gz: 88c1939f955d2a5fcdba849a347b029413d2e2c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3687f875c98cc30572093464ad81cea73a9fc383610f838f2a2f43d3c6928ce921a75ae3fb462f9d838d0ad85c24211e5d8d35f0c675f85f3175bbe7e0162f14
|
7
|
+
data.tar.gz: 3be4b8feaf645dac3d85eb5f69cdfc848425f25ac6d279d39bcb31a504e4483cb93a28e42c7b4c3b27202eb9718089f1c16fd35b0b2d6406f00c638de3dea64a
|
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -23,7 +23,7 @@ require 'rake'
|
|
23
23
|
require "bundler/gem_tasks"
|
24
24
|
require 'jeweler2'
|
25
25
|
|
26
|
-
dictVersion = "1.6.
|
26
|
+
dictVersion = "1.6.1"
|
27
27
|
|
28
28
|
|
29
29
|
task :default => [:test] do
|
@@ -79,6 +79,9 @@ task :test do
|
|
79
79
|
["test.record", "test.tch", "test.db" ].each {|name|
|
80
80
|
File.unlink( name ) if File.exist?( name )
|
81
81
|
}
|
82
|
+
["test.ldb"].each {|name|
|
83
|
+
FileUtils.rm_rf( name ) if File.exist?( name )
|
84
|
+
}
|
82
85
|
files = []
|
83
86
|
files << "./test/memcache.nnd"
|
84
87
|
files << "./test/util.nnd"
|
@@ -94,19 +97,24 @@ task :test do
|
|
94
97
|
files << "./test/henkan-main.nnd gdbm"
|
95
98
|
when 'tokyocabinet'
|
96
99
|
files << "./test/henkan-main.nnd tokyocabinet"
|
100
|
+
when 'leveldb'
|
101
|
+
files << "./test/henkan-main.nnd leveldb"
|
97
102
|
when 'redis'
|
98
103
|
files << "./test/redis.nnd"
|
99
104
|
files << "./test/henkan-main.nnd redis"
|
100
105
|
when 'pure'
|
101
106
|
files << "./test/henkan-main.nnd pure"
|
107
|
+
files << "./test/henkan-main.nnd leveldb"
|
102
108
|
when 'all'
|
103
109
|
files << "./test/henkan-main.nnd gdbm"
|
104
110
|
files << "./test/henkan-main.nnd tokyocabinet"
|
105
111
|
files << "./test/henkan-main.nnd redis"
|
106
112
|
files << "./test/henkan-main.nnd pure"
|
113
|
+
files << "./test/henkan-main.nnd leveldb"
|
107
114
|
else # default
|
108
115
|
files << "./test/henkan-main.nnd tokyocabinet"
|
109
116
|
files << "./test/henkan-main.nnd pure"
|
117
|
+
files << "./test/henkan-main.nnd leveldb"
|
110
118
|
end
|
111
119
|
files.each {|filename|
|
112
120
|
sh sprintf( "ruby -I ./lib -S nendo -I ./lib -d %s", filename )
|
@@ -119,10 +127,11 @@ task :bench do
|
|
119
127
|
sh "time nendo -I ./lib ./test/henkan-bench.nnd"
|
120
128
|
end
|
121
129
|
|
122
|
-
task :alljisyo => [ :jisyo, :load, :dump, :md5 ]
|
130
|
+
task :alljisyo => [ :jisyo, :load, :dump, :load_leveldb, :md5 ]
|
123
131
|
|
124
132
|
task :md5 do
|
125
|
-
sh sprintf( "md5sum ./data/SEKKA-JISYO-%s.N.tsv
|
133
|
+
sh sprintf( "md5sum ./data/SEKKA-JISYO-%s.N.tsv > ./data/SEKKA-JISYO-%s.N.md5", dictVersion, dictVersion )
|
134
|
+
sh sprintf( "md5sum ./data/SEKKA-JISYO-%s.N.ldb.tar.gz > ./data/SEKKA-JISYO-%s.N.ldb.tar.gz.md5", dictVersion, dictVersion )
|
126
135
|
end
|
127
136
|
|
128
137
|
task :jisyo do
|
@@ -144,6 +153,11 @@ task :dump do
|
|
144
153
|
sh sprintf( "ruby ./bin/sekka-jisyo dump ./data/SEKKA-JISYO.N.tch#xmsiz=1024m > ./data/SEKKA-JISYO-%s.N.tsv", dictVersion )
|
145
154
|
end
|
146
155
|
|
156
|
+
task :load_leveldb do
|
157
|
+
# sh sprintf( "ruby ./bin/sekka-jisyo load ./data/SEKKA-JISYO.N ./data/SEKKA-JISYO-%s.N.ldb", dictVersion )
|
158
|
+
sh sprintf( "tar zcCf ./data ./data/SEKKA-JISYO-%s.N.ldb.tar.gz ./SEKKA-JISYO-%s.N.ldb" , dictVersion, dictVersion )
|
159
|
+
end
|
160
|
+
|
147
161
|
# SKK-JISYO.hiragana-phrase はWikipediaから作られる。
|
148
162
|
task :phrase => [ "/tmp/jawiki.txt.gz", "./data/wikipedia/jawiki.hiragana.txt" ] do
|
149
163
|
sh "sort ./data/wikipedia/jawiki.hiragana.txt | uniq -c | sort > ./data/wikipedia/ranking.txt"
|
data/VERSION.yml
CHANGED
data/bin/sekka-jisyo
CHANGED
@@ -80,19 +80,21 @@ core.evalStr( <<";;END-OF-SCRIPT" )
|
|
80
80
|
|
81
81
|
(define (display-help)
|
82
82
|
(print "Usage : ")
|
83
|
-
(print " sekka-jisyo convertA SKK-JISYO.X > SEKKA-JISYO.X
|
84
|
-
(print " sekka-jisyo convertN SKK-JISYO.X > SEKKA-JISYO.X
|
85
|
-
(print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.tch
|
86
|
-
(print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.db
|
87
|
-
(print " sekka-jisyo load SEKKA-JISYO.X
|
88
|
-
(print " sekka-jisyo load SEKKA-JISYO.X redis:
|
89
|
-
(print " sekka-jisyo
|
90
|
-
(print " sekka-jisyo dump SEKKA-JISYO.X.
|
91
|
-
(print " sekka-jisyo dump
|
92
|
-
(print " sekka-jisyo dump
|
93
|
-
(print " sekka-jisyo
|
94
|
-
(print " sekka-jisyo
|
95
|
-
(print " sekka-jisyo restore SEKKA-JISYO.X.tsv
|
83
|
+
(print " sekka-jisyo convertA SKK-JISYO.X > SEKKA-JISYO.X ... output SEKKA-JISYO to STDOUT(AZIK data included)")
|
84
|
+
(print " sekka-jisyo convertN SKK-JISYO.X > SEKKA-JISYO.X ... output SEKKA-JISYO to STDOUT(AZIK data excluded)")
|
85
|
+
(print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.tch ... load SEKKA-JISYO to Tokyo Cabinet DB")
|
86
|
+
(print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.db ... load SEKKA-JISYO to gdbm DB")
|
87
|
+
(print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.ldb ... load SEKKA-JISYO to LevelDB")
|
88
|
+
(print " sekka-jisyo load SEKKA-JISYO.X redis:[hostname] ... load SEKKA-JISYO to redis DB on [hostname]")
|
89
|
+
(print " sekka-jisyo load SEKKA-JISYO.X redis: ... load SEKKA-JISYO to redis DB on localhost")
|
90
|
+
(print " sekka-jisyo dump SEKKA-JISYO.X.tch ... dump Tokyo Cabinet DB to DUMPDATA(STDOUT)")
|
91
|
+
(print " sekka-jisyo dump SEKKA-JISYO.X.db ... dump gdbm to DUMPDATA(STDOUT)")
|
92
|
+
(print " sekka-jisyo dump SEKKA-JISYO.X.ldb ... dump LevelDB to DUMPDATA(STDOUT)")
|
93
|
+
(print " sekka-jisyo dump redis:[hostname] ... dump redis DB on [hostname] to DUMPDATA(STDOUT)")
|
94
|
+
(print " sekka-jisyo dump redis: ... dump redis DB on localhost to DUMPDATE(STDOUT)")
|
95
|
+
(print " sekka-jisyo restore SEKKA-JISYO.X.tsv SEKKA-JISYO.X.tch ... restore Tokyo Cabinet DB from tsv-file")
|
96
|
+
(print " sekka-jisyo restore SEKKA-JISYO.X.tsv redis:[hostname] ... restore redis DB on [hostname] from tsv-file")
|
97
|
+
(print " sekka-jisyo restore SEKKA-JISYO.X.tsv redis: ... restore redis DB on localhost from tsv-file"))
|
96
98
|
|
97
99
|
|
98
100
|
(define (analyze-kvs-type filename)
|
@@ -101,6 +103,8 @@ core.evalStr( <<";;END-OF-SCRIPT" )
|
|
101
103
|
(values 'tokyocabinet filename))
|
102
104
|
((rxmatch #/[.]db$/ filename)
|
103
105
|
(values 'gdbm filename))
|
106
|
+
((rxmatch #/[.]ldb$/ filename)
|
107
|
+
(values 'leveldb filename))
|
104
108
|
((rxmatch #/^redis:(.*)$/ filename)
|
105
109
|
=> (lambda (m)
|
106
110
|
(let1 str (rxmatch-substring m 1)
|
data/bin/sekka-server
CHANGED
@@ -15,15 +15,20 @@ DICTURL = "https://raw.githubusercontent.com/kiyoka/sekka/master/public_dict/" +
|
|
15
15
|
|
16
16
|
PIDFILE = DICTDIR + "/pid"
|
17
17
|
|
18
|
-
TC_OPTS
|
19
|
-
TC_FILE
|
20
|
-
|
21
|
-
|
18
|
+
TC_OPTS = "#xmsiz=256m"
|
19
|
+
TC_FILE = sprintf( "%s/SEKKA-JISYO-%s.N.tch%s", DICTDIR, SekkaVersion.dictVersion, TC_OPTS )
|
20
|
+
TSV_FILE = sprintf( "%s/SEKKA-JISYO-%s.N.tsv", DICTDIR, SekkaVersion.dictVersion )
|
21
|
+
TSV_SUMFILE = sprintf( "%s/SEKKA-JISYO-%s.N.md5", DICTDIR, SekkaVersion.dictVersion )
|
22
|
+
LDB_FILE = sprintf( "%s/SEKKA-JISYO-%s.N.ldb.tar.gz", DICTDIR, SekkaVersion.dictVersion )
|
23
|
+
LDB_SUMFILE = sprintf( "%s/SEKKA-JISYO-%s.N.ldb.tar.gz.md5", DICTDIR, SekkaVersion.dictVersion )
|
22
24
|
|
23
|
-
GDBM_FILE
|
25
|
+
GDBM_FILE = sprintf( "%s/SEKKA-JISYO-%s.N.db", DICTDIR, SekkaVersion.dictVersion )
|
26
|
+
LEVELDB_FILE = sprintf( "%s/SEKKA-JISYO-%s.N.ldb", DICTDIR, SekkaVersion.dictVersion )
|
24
27
|
|
25
|
-
|
26
|
-
|
28
|
+
TSV_URLURL = sprintf( "%s/SEKKA-JISYO-%s.N.url", DICTURL, SekkaVersion.dictVersion )
|
29
|
+
TSV_SUMURL = sprintf( "%s/SEKKA-JISYO-%s.N.md5", DICTURL, SekkaVersion.dictVersion )
|
30
|
+
LDB_URLURL = sprintf( "%s/SEKKA-JISYO-%s.N.ldb.tar.gz.url", DICTURL, SekkaVersion.dictVersion )
|
31
|
+
LDB_SUMURL = sprintf( "%s/SEKKA-JISYO-%s.N.ldb.tar.gz.md5", DICTURL, SekkaVersion.dictVersion )
|
27
32
|
|
28
33
|
MEMCACHED = "localhost:11211" # memcahced
|
29
34
|
|
@@ -41,8 +46,10 @@ def getSekkaDbInfo( env )
|
|
41
46
|
[ :tokyocabinet, nil ]
|
42
47
|
elsif m = ENV['SEKKA_DB'].match( /^gdbm$/i )
|
43
48
|
[ :gdbm, nil ]
|
49
|
+
elsif m = ENV['SEKKA_DB'].match( /^level[a-z]+$/i )
|
50
|
+
[ :leveldb, nil ]
|
44
51
|
else
|
45
|
-
raise RuntimeError, "Error: env var SEKKA_DB requires [redis:hostname] or [redis:] or [tokyocabinet]"
|
52
|
+
raise RuntimeError, "Error: env var SEKKA_DB requires [redis:hostname] or [redis:] or [tokyocabinet] or [leveldb]"
|
46
53
|
end
|
47
54
|
else
|
48
55
|
[ :tokyocabinet, nil ]
|
@@ -56,18 +63,25 @@ def checkJisyoIsInstalled( dictType, dictSource )
|
|
56
63
|
result = case dictType
|
57
64
|
when :gdbm
|
58
65
|
require 'sekka/kvs'
|
59
|
-
|
60
|
-
|
61
|
-
ret =
|
62
|
-
|
66
|
+
kvs = Kvs.new( :gdbm )
|
67
|
+
kvs.open( dictSource )
|
68
|
+
ret = kvs.get( key )
|
69
|
+
kvs.close()
|
70
|
+
ret
|
71
|
+
when :leveldb
|
72
|
+
require 'sekka/kvs'
|
73
|
+
kvs = Kvs.new( :leveldb )
|
74
|
+
kvs.open( dictSource )
|
75
|
+
ret = kvs.get( key )
|
76
|
+
kvs.close()
|
63
77
|
ret
|
64
78
|
when :tokyocabinet
|
65
79
|
require 'tokyocabinet'
|
66
80
|
require 'sekka/kvs'
|
67
|
-
|
68
|
-
|
69
|
-
ret =
|
70
|
-
|
81
|
+
kvs = Kvs.new( :tokyocabinet )
|
82
|
+
kvs.open( dictSource )
|
83
|
+
ret = kvs.get( key )
|
84
|
+
kvs.close()
|
71
85
|
ret
|
72
86
|
when :redis
|
73
87
|
begin
|
@@ -86,65 +100,75 @@ def checkJisyoIsInstalled( dictType, dictSource )
|
|
86
100
|
end
|
87
101
|
end
|
88
102
|
|
89
|
-
def
|
90
|
-
if not File.
|
91
|
-
Dir.mkdir( DICTDIR )
|
92
|
-
STDERR.printf( "Info: created directory [%s]\n", DICTDIR )
|
93
|
-
end
|
94
|
-
|
95
|
-
# sekka-server自身のpidを書きこむ(デーモン化したときの停止用)
|
96
|
-
open( PIDFILE, "w" ) {|f|
|
97
|
-
f.printf( "%d\n", Process.pid )
|
98
|
-
}
|
99
|
-
|
100
|
-
# 環境変数からHTTPプロキシサーバーの情報を取得する
|
101
|
-
proxyHost = nil
|
102
|
-
proxyPort = nil
|
103
|
-
if ENV.key?( 'http_proxy' )
|
104
|
-
uri = URI.parse ENV[ 'http_proxy' ]
|
105
|
-
proxyPort = uri.port
|
106
|
-
proxyHost = uri.host
|
107
|
-
end
|
108
|
-
|
109
|
-
if not File.exist?( TSVFILE )
|
103
|
+
def downloadFile( targetfile, sumfile, urlurl, sumurl )
|
104
|
+
if not File.exist?( targetfile )
|
110
105
|
STDERR.printf( "Info: Downloading SEKKA-JISYO\n" )
|
111
106
|
# 辞書をダウンロードする
|
112
|
-
cmd = sprintf( "curl %s",
|
107
|
+
cmd = sprintf( "curl %s", urlurl )
|
113
108
|
STDERR.printf( "Command : %s\n", cmd )
|
114
|
-
|
109
|
+
targeturl = open( "|" + cmd ) { |f|
|
115
110
|
f.read
|
116
111
|
}
|
117
|
-
STDERR.printf( " download URL of
|
118
|
-
cmd = sprintf( "curl -o %s %s",
|
112
|
+
STDERR.printf( " download URL of target file : %s\n", targeturl );
|
113
|
+
cmd = sprintf( "curl -o %s %s", targetfile, targeturl )
|
119
114
|
STDERR.printf( "Command : %s\n", cmd )
|
120
115
|
system( cmd )
|
121
|
-
cmd = sprintf( "curl -o %s %s",
|
116
|
+
cmd = sprintf( "curl -o %s %s", sumfile, sumurl )
|
122
117
|
STDERR.printf( "Command : %s\n", cmd )
|
123
118
|
system( cmd )
|
124
119
|
|
125
120
|
# チェックサムを確認する
|
126
121
|
downloadSum = ""
|
127
|
-
open(
|
122
|
+
open( targetfile ) { |f|
|
128
123
|
dataBody = f.read
|
129
124
|
downloadSum = Digest::MD5.hexdigest( dataBody )
|
130
125
|
}
|
131
|
-
open(
|
126
|
+
open( sumfile ) { |f|
|
132
127
|
correctSum = f.readline.chomp.split[0]
|
133
128
|
STDERR.printf( " downloaded file's MD5 : %s\n", downloadSum )
|
134
129
|
STDERR.printf( " correct MD5 : %s\n", correctSum )
|
135
130
|
if downloadSum == correctSum
|
136
|
-
STDERR.printf( "Info: downloaded file [%s] verify OK.\n",
|
131
|
+
STDERR.printf( "Info: downloaded file [%s] verify OK.\n", targetfile )
|
137
132
|
else
|
138
|
-
STDERR.printf( "Error: downloaded file [%s] verify NG.\n",
|
139
|
-
File.unlink(
|
133
|
+
STDERR.printf( "Error: downloaded file [%s] verify NG.\n", targetfile )
|
134
|
+
File.unlink( targetfile )
|
140
135
|
exit( 1 )
|
141
136
|
end
|
142
137
|
}
|
143
138
|
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def main
|
142
|
+
if not File.directory?( DICTDIR )
|
143
|
+
Dir.mkdir( DICTDIR )
|
144
|
+
STDERR.printf( "Info: created directory [%s]\n", DICTDIR )
|
145
|
+
end
|
146
|
+
|
147
|
+
# sekka-server自身のpidを書きこむ(デーモン化したときの停止用)
|
148
|
+
open( PIDFILE, "w" ) {|f|
|
149
|
+
f.printf( "%d\n", Process.pid )
|
150
|
+
}
|
151
|
+
|
152
|
+
# 環境変数からHTTPプロキシサーバーの情報を取得する
|
153
|
+
proxyHost = nil
|
154
|
+
proxyPort = nil
|
155
|
+
if ENV.key?( 'http_proxy' )
|
156
|
+
uri = URI.parse ENV[ 'http_proxy' ]
|
157
|
+
proxyPort = uri.port
|
158
|
+
proxyHost = uri.host
|
159
|
+
end
|
144
160
|
|
145
161
|
# 環境変数から、DBの接続先情報を取得する。
|
146
162
|
( dictType, dictSource ) = getSekkaDbInfo( ENV )
|
147
163
|
|
164
|
+
# 必要なファイルをダウンロードする
|
165
|
+
case dictType
|
166
|
+
when :leveldb
|
167
|
+
downloadFile( LDB_FILE, LDB_SUMFILE, LDB_URLURL, LDB_SUMURL )
|
168
|
+
else
|
169
|
+
downloadFile( TSV_FILE, TSV_SUMFILE, TSV_URLURL, TSV_SUMURL )
|
170
|
+
end
|
171
|
+
|
148
172
|
case dictType
|
149
173
|
when :gdbm
|
150
174
|
# GDBMに辞書が投入済みか確認する
|
@@ -152,20 +176,33 @@ def main
|
|
152
176
|
unless ok
|
153
177
|
# tsvファイルをuploadする
|
154
178
|
STDERR.printf( "Info: Uploading...\n" )
|
155
|
-
cmd = sprintf( "sekka-jisyo restore %s %s",
|
179
|
+
cmd = sprintf( "sekka-jisyo restore %s %s", TSV_FILE, GDBM_FILE )
|
156
180
|
STDERR.printf( "Command : %s\n", cmd )
|
157
181
|
system( cmd )
|
158
182
|
end
|
159
183
|
STDERR.printf( "Info: [OK]\n" )
|
160
184
|
dictSource = GDBM_FILE
|
161
185
|
|
186
|
+
when :leveldb
|
187
|
+
# GDBMに辞書が展開済みか確認する
|
188
|
+
ok = checkJisyoIsInstalled( dictType, LDB_FILE )
|
189
|
+
unless ok
|
190
|
+
# tar.gzを展開する
|
191
|
+
STDERR.printf( "Info: Extracting...\n" )
|
192
|
+
cmd = sprintf( "tar zxCf %s %s", DICTDIR, LDB_FILE )
|
193
|
+
STDERR.printf( "Command : %s\n", cmd )
|
194
|
+
system( cmd )
|
195
|
+
end
|
196
|
+
STDERR.printf( "Info: [OK]\n" )
|
197
|
+
dictSource = LEVELDB_FILE
|
198
|
+
|
162
199
|
when :tokyocabinet
|
163
200
|
# TokyoCabinetに辞書が投入済みか確認する
|
164
201
|
ok = checkJisyoIsInstalled( dictType, TC_FILE )
|
165
202
|
unless ok
|
166
203
|
# tsvファイルをuploadする
|
167
204
|
STDERR.printf( "Info: Uploading...\n" )
|
168
|
-
cmd = sprintf( "sekka-jisyo restore %s %s",
|
205
|
+
cmd = sprintf( "sekka-jisyo restore %s %s", TSV_FILE, TC_FILE )
|
169
206
|
STDERR.printf( "Command : %s\n", cmd )
|
170
207
|
system( cmd )
|
171
208
|
end
|
@@ -178,7 +215,7 @@ def main
|
|
178
215
|
unless ok
|
179
216
|
# tsvファイルをuploadする。
|
180
217
|
STDERR.printf( "Info: Uploading...\n" )
|
181
|
-
cmd = sprintf( "sekka-jisyo restore %s %s:%s",
|
218
|
+
cmd = sprintf( "sekka-jisyo restore %s %s:%s", TSV_FILE, dictType, dictSource )
|
182
219
|
STDERR.printf( "Command : %s\n", cmd )
|
183
220
|
system( cmd )
|
184
221
|
end
|
data/data/.gitignore
CHANGED
@@ -10,6 +10,12 @@
|
|
10
10
|
/SEKKA-JISYO-1.5.1.N.tsv
|
11
11
|
/SEKKA-JISYO-1.6.0.N.md5
|
12
12
|
/SEKKA-JISYO-1.6.0.N.tsv
|
13
|
+
/SEKKA-JISYO-1.6.1.N.ldb
|
14
|
+
/SEKKA-JISYO-1.6.1.N.ldb
|
15
|
+
/SEKKA-JISYO-1.6.1.N.ldb.tar.gz
|
16
|
+
/SEKKA-JISYO-1.6.1.N.ldb.tar.gz.md5
|
17
|
+
/SEKKA-JISYO-1.6.1.N.md5
|
18
|
+
/SEKKA-JISYO-1.6.1.N.tsv
|
13
19
|
/SEKKA-JISYO.CUSTOM
|
14
20
|
/SEKKA-JISYO.CUSTOM.tch
|
15
21
|
/SEKKA-JISYO.CUSTOM~
|
@@ -31,6 +37,7 @@
|
|
31
37
|
/SEKKA-JISYO.LARGE.tch
|
32
38
|
/SEKKA-JISYO.N
|
33
39
|
/SEKKA-JISYO.N.SMALL
|
40
|
+
/SEKKA-JISYO.N.ldb
|
34
41
|
/SEKKA-JISYO.N.md5
|
35
42
|
/SEKKA-JISYO.N.tch#xmsiz=1024m
|
36
43
|
/SEKKA-JISYO.N.tsv
|
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.
|
6
|
+
;; Version: 1.6.3 ;;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.6.
|
1759
|
+
"1.6.3" ;;SEKKA-VERSION
|
1760
1760
|
)
|
1761
1761
|
(defun sekka-version (&optional arg)
|
1762
1762
|
"入力モード変更"
|
data/lib/sekka/kvs.rb
CHANGED
@@ -56,6 +56,13 @@ class Kvs
|
|
56
56
|
@gdbmFlag = false
|
57
57
|
end
|
58
58
|
|
59
|
+
@leveldbFlag = true
|
60
|
+
begin
|
61
|
+
require 'leveldb'
|
62
|
+
rescue LoadError
|
63
|
+
@leveldbFlag = false
|
64
|
+
end
|
65
|
+
|
59
66
|
@dbtype = dbtype
|
60
67
|
case dbtype
|
61
68
|
when :tokyocabinet
|
@@ -80,7 +87,12 @@ class Kvs
|
|
80
87
|
raise RuntimeError, "Kvs.new() missed require( 'gdbm' )."
|
81
88
|
end
|
82
89
|
|
83
|
-
|
90
|
+
when :leveldb
|
91
|
+
if @leveldbFlag
|
92
|
+
# do nothing
|
93
|
+
else
|
94
|
+
raise RuntimeError, "Kvs.new() missed require( 'leveldb' )."
|
95
|
+
end
|
84
96
|
|
85
97
|
when :pure
|
86
98
|
# do nothing
|
@@ -106,6 +118,11 @@ class Kvs
|
|
106
118
|
name = name + ".db"
|
107
119
|
end
|
108
120
|
@db = GDBM.new( name, nil, GDBM::FAST | GDBM::WRCREAT )
|
121
|
+
when :leveldb
|
122
|
+
if not name.match( /.ldb$/ )
|
123
|
+
name = name + ".ldb"
|
124
|
+
end
|
125
|
+
@db = LevelDB::DB.new name
|
109
126
|
when :pure
|
110
127
|
@name = name
|
111
128
|
if File.exist?( @name )
|
@@ -141,7 +158,7 @@ class Kvs
|
|
141
158
|
def pure_put!( key, value, timeout = 0 )
|
142
159
|
if 0 < key.size
|
143
160
|
case @dbtype
|
144
|
-
when :tokyocabinet, :gdbm, :redis
|
161
|
+
when :tokyocabinet, :gdbm, :redis, :leveldb
|
145
162
|
@db[ key.force_encoding("ASCII-8BIT") ] = value.force_encoding("ASCII-8BIT")
|
146
163
|
when :memcache
|
147
164
|
@db.set( key.force_encoding("ASCII-8BIT"), value.force_encoding("ASCII-8BIT"), timeout )
|
@@ -181,6 +198,8 @@ class Kvs
|
|
181
198
|
case @dbtype
|
182
199
|
when :tokyocabinet, :gdbm, :pure
|
183
200
|
@db.clear
|
201
|
+
when :leveldb
|
202
|
+
@db.clear!
|
184
203
|
when :redis
|
185
204
|
@db.flushall
|
186
205
|
when :memcache
|
@@ -199,7 +218,7 @@ class Kvs
|
|
199
218
|
}
|
200
219
|
when :memcache
|
201
220
|
raise RuntimeError, "Kvs#keys method was not implemented for memcache."
|
202
|
-
when :pure
|
221
|
+
when :leveldb, :pure
|
203
222
|
@db.keys
|
204
223
|
else
|
205
224
|
raise RuntimeError
|
@@ -218,7 +237,7 @@ class Kvs
|
|
218
237
|
}
|
219
238
|
when :memcache
|
220
239
|
raise RuntimeError, "Kvs#forward_match_keys method was not implemented for memcache."
|
221
|
-
when :gdbm, :pure
|
240
|
+
when :gdbm, :leveldb, :pure
|
222
241
|
self.keys( ).select {|key|
|
223
242
|
key.match( "^" + prefix )
|
224
243
|
}
|
@@ -229,7 +248,7 @@ class Kvs
|
|
229
248
|
|
230
249
|
def close()
|
231
250
|
case @dbtype
|
232
|
-
when :tokyocabinet, :gdbm
|
251
|
+
when :tokyocabinet, :leveldb, :gdbm
|
233
252
|
@db.close
|
234
253
|
when :memcache, :redis
|
235
254
|
# do nothing
|
data/lib/sekka/sekkaversion.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
bf19c45609846badd608722e657da607 ./data/SEKKA-JISYO-1.6.1.N.ldb.tar.gz
|
@@ -0,0 +1 @@
|
|
1
|
+
76471f8453ed7cdf975113fe7ea7fed0 ./data/SEKKA-JISYO-1.6.1.N.tsv
|
@@ -0,0 +1 @@
|
|
1
|
+
https://s3-ap-northeast-1.amazonaws.com/sekkadict/1.6.1/SEKKA-JISYO-1.6.1.N.tsv
|
data/test/henkan-main.nnd
CHANGED
@@ -58,6 +58,8 @@
|
|
58
58
|
(set! target "./test"))
|
59
59
|
((eq? dbtype 'pure)
|
60
60
|
(set! target "./test.dump"))
|
61
|
+
((eq? dbtype 'leveldb)
|
62
|
+
(set! target "./test.ldb"))
|
61
63
|
((eq? dbtype 'memcache)
|
62
64
|
(error "memcached interface is obsolute."))
|
63
65
|
(else
|
@@ -148,6 +150,8 @@
|
|
148
150
|
(require "gdbm"))
|
149
151
|
((eq? dbtype 'pure)
|
150
152
|
(kvs.open target))
|
153
|
+
((eq? dbtype 'leveldb)
|
154
|
+
(kvs.open target))
|
151
155
|
((eq? dbtype 'memcache)
|
152
156
|
(error "memcached interface is obsolute."))
|
153
157
|
(else
|
data/test/sekka-dump-out-1.txt
CHANGED
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.6.
|
4
|
+
version: 1.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kiyoka Nishiyama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -207,6 +207,10 @@ files:
|
|
207
207
|
- public_dict/1.5.0/SEKKA-JISYO.N.url
|
208
208
|
- public_dict/1.6.0/SEKKA-JISYO-1.6.0.N.md5
|
209
209
|
- public_dict/1.6.0/SEKKA-JISYO-1.6.0.N.url
|
210
|
+
- public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.ldb.tar.gz.md5
|
211
|
+
- public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.ldb.tar.gz.url
|
212
|
+
- public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.md5
|
213
|
+
- public_dict/1.6.1/SEKKA-JISYO-1.6.1.N.url
|
210
214
|
- script/sekkaserver.debian
|
211
215
|
- sekka.gemspec
|
212
216
|
- test/.gitignore
|