sekka 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/sekka/henkan.nnd CHANGED
@@ -328,8 +328,8 @@
328
328
 
329
329
 
330
330
  ;; Flush henkan-result cache data on cachesv(memcached)
331
- (define (flush-cachesv cachesv)
332
- #?="--- do (flush-cachesv) ---"
331
+ (define (flushCacheServer cachesv)
332
+ #?="--- do (flushCacheServer) ---"
333
333
  (if-let1 fetched (cachesv.get "sekka::(keys)" #f)
334
334
  (begin
335
335
  (for-each
@@ -338,6 +338,8 @@
338
338
  (to-list (fetched.split #/[ ]+/)))
339
339
  (cachesv.delete "sekka::(keys)"))
340
340
  #f))
341
+ ;; Export to Ruby world
342
+ (export-to-ruby flushCacheServer)
341
343
 
342
344
 
343
345
  ;; 確定処理: 最終確定語を変換候補の先頭に持ってくる。
@@ -382,7 +384,7 @@
382
384
  (begin
383
385
  (write-user-entry userid kvs key new-kouho-str)
384
386
  (and cachesv
385
- (flush-cachesv cachesv))
387
+ (flushCacheServer cachesv))
386
388
  tango)
387
389
  nil))
388
390
  nil)
@@ -391,6 +393,19 @@
391
393
  (export-to-ruby sekkaKakutei)
392
394
 
393
395
 
396
+ ;; ユーザー辞書の全削除 (useridで指定したユーザーの辞書)
397
+ ;; 削除した件数を返す。
398
+ (define (flushUserJisyo userid kvs)
399
+ (let1 lst (to-list (kvs.forward_match_keys (+ userid "::")))
400
+ (for-each
401
+ (lambda (k)
402
+ (kvs.delete k))
403
+ lst)
404
+ (length lst)))
405
+ ;; Export to Ruby world
406
+ (export-to-ruby flushUserJisyo)
407
+
408
+
394
409
  ;; ユーザー定義語彙の登録処理
395
410
  (define (registerUserJisyo userid kvs dict-line)
396
411
  (define user-keylist '())
@@ -77,7 +77,7 @@
77
77
  (define (create-hash keylist)
78
78
  (for-each
79
79
  (lambda (k)
80
- (when (rxmatch #/^[a-zA-Z^>-@`;+]+$/ k)
80
+ (when (rxmatch #/^[a-zA-Z^>-@`;+:'\-]+$/ k)
81
81
  (let1 sliced (sekka-downcase (k.slice 0 2))
82
82
  (when (= 2 sliced.size)
83
83
  (if (rxmatch #/[A-Z`+]$/ k)
data/lib/sekka/kvs.rb CHANGED
@@ -117,6 +117,19 @@ class Kvs
117
117
  end
118
118
  end
119
119
 
120
+ def forward_match_keys( prefix )
121
+ case @dbtype
122
+ when :tokyocabinet
123
+ @db.fwmkeys( prefix ).each { |k|
124
+ k.force_encoding("UTF-8")
125
+ }
126
+ when :memcache
127
+ raise RuntimeError, "Kvs#forward_match_keys method was not implemented for memcache."
128
+ else
129
+ raise RuntimeError
130
+ end
131
+ end
132
+
120
133
  def close()
121
134
  case @dbtype
122
135
  when :tokyocabinet
@@ -41,24 +41,24 @@
41
41
  (define sekka-kana->roman-alist-short
42
42
  '(
43
43
  ;; normal roman ---AZIK---
44
- ("ぁ" "la")
44
+ ("ぁ" "la" "xxa")
45
45
  ("あ" "a")
46
- ("ぃ" "li")
46
+ ("ぃ" "li" "xxi")
47
47
  ("い" "i")
48
- ("ぅ" "lu")
49
- ("う" "u")
48
+ ("ぅ" "lu" "xxu")
49
+ ("う" "u" "whu")
50
50
  ("う゛" "vu")
51
51
  ("う゛ぁ" "va")
52
52
  ("う゛ぃ" "vi")
53
53
  ("う゛ぇ" "ve")
54
54
  ("う゛ぉ" "vo")
55
- ("ぇ" "le")
55
+ ("ぇ" "le" "xxe")
56
56
  ("え" "e")
57
- ("ぉ" "lo")
57
+ ("ぉ" "lo" "xxo")
58
58
  ("お" "o")
59
59
  ("か" "ka")
60
60
  ("が" "ga")
61
- ("き" "ki")
61
+ ("き" "ki" "kf")
62
62
  ("きゃ" "kya" "kga")
63
63
  ("きゅ" "kyu" "kgu")
64
64
  ("きぇ" "kye" "kge")
@@ -75,32 +75,32 @@
75
75
  ("こ" "ko")
76
76
  ("ご" "go")
77
77
  ("さ" "sa")
78
- ("ざ" "za" "zc") ;; AZIKザ行の特別措置
79
- ("し" "shi" "si")
80
- ("しゃ" "sha" "sya" "xa")
78
+ ("ざ" "za" "zc") ;; AZIKザ行の特別措置
79
+ ("し" "shi" "si" "xi")
80
+ ("しゃ" "sha" "sya" "xa" "xc")
81
81
  ;; hu の例外処理: shu は sfu になってはいけない
82
82
  ("しゅ" "shu" "syu" "xu")
83
83
  ("しぇ" "she" "sye" "xe")
84
84
  ("しょ" "sho" "syo" "xo")
85
85
  ("じ" "ji" "zi")
86
86
  ("じゃ" "ja" "jya" "zya")
87
- ("じゅ" "ju" "jyu" "zyu")
87
+ ("じゅ" "ju" "jyu" "zyu" "jf")
88
88
  ("じぇ" "je" "jye" "zye")
89
89
  ("じょ" "jo" "jyo" "zyo")
90
90
  ("す" "su")
91
91
  ("ず" "zu")
92
92
  ("せ" "se")
93
- ("ぜ" "ze")
93
+ ("ぜ" "ze" "zf")
94
94
  ("そ" "so")
95
95
  ("ぞ" "zo")
96
96
  ("た" "ta")
97
97
  ("だ" "da")
98
98
  ;; normal roman ---AZIK---
99
- ("ち" "chi" "tyi" "ti")
99
+ ("ち" "chi" "tyi" "ti" "ci")
100
100
  ("ちゃ" "cha" "tya" "ca")
101
101
  ;; hu の例外処理: chu は cfu になってはいけない
102
102
  ("ちゅ" "chu" "tyu" "cu")
103
- ("ちぇ" "che" "tye" "ce")
103
+ ("ちぇ" "che" "tye" "ce" "cf")
104
104
  ("ちょ" "cho" "tyo" "co")
105
105
  ("ぢ" "di")
106
106
  ("ぢゃ" "dya")
@@ -112,7 +112,7 @@
112
112
  ("つ" "tsu" "tu")
113
113
  ("づ" "du")
114
114
  ("て" "te")
115
- ("で" "de")
115
+ ("で" "de" "df")
116
116
  ("と" "to")
117
117
  ("ど" "do")
118
118
  ("な" "na")
@@ -121,7 +121,7 @@
121
121
  ("にゅ" "nyu")
122
122
  ("にぇ" "nye")
123
123
  ("にょ" "nyo")
124
- ("ぬ" "nu")
124
+ ("ぬ" "nu" "nf")
125
125
  ("ね" "ne")
126
126
  ("の" "no")
127
127
  ("は" "ha")
@@ -142,7 +142,7 @@
142
142
  ("ぴゅ" "pyu" "pgu")
143
143
  ("ぴぇ" "pye" "pge")
144
144
  ("ぴょ" "pyo" "pgo")
145
- ("ふ" "fu" "hu")
145
+ ("ふ" "fu" "hu" "hf")
146
146
  ("ふぁ" "fa")
147
147
  ("ふぃ" "fi")
148
148
  ("ふぇ" "fe")
@@ -161,14 +161,14 @@
161
161
  ("みゅ" "myu" "mgu")
162
162
  ("みぇ" "mye" "mge")
163
163
  ("みょ" "myo" "mgo")
164
- ("む" "mu")
164
+ ("む" "mu" "mf")
165
165
  ("め" "me")
166
166
  ("も" "mo")
167
167
  ;; normal roman ---AZIK---
168
168
  ("ゃ" "lya")
169
169
  ("や" "ya")
170
170
  ("ゅ" "lyu")
171
- ("ゆ" "yu")
171
+ ("ゆ" "yu" "yf")
172
172
  ("ょ" "lyo")
173
173
  ("よ" "yo")
174
174
  ("ら" "ra")
@@ -181,15 +181,15 @@
181
181
  ("ろ" "ro")
182
182
  ("ゎ" "lwa")
183
183
  ("わ" "wa")
184
- ("うぃ" "wi")
185
- ("うぇ" "we")
184
+ ("うぃ" "wi" "whi")
185
+ ("うぇ" "we" "whe")
186
186
  ("を" "wo")
187
- ("うぉ" "wso")
188
- ;; normal roman ---AZIK---
187
+ ("うぉ" "wso" "who")
188
+ ;; normal roman ---AZIK--- ---AZIK(US)---
189
189
  ("ん" "nn" "n" "q")
190
190
  ("でぃ" "dyi" "dhi" "dci")
191
191
  ("でぅ" "dyu" "dhu" "dcu")
192
- ("ー" "-" "^" ":")
192
+ ("ー" "-" "^" ":" "'")
193
193
 
194
194
  ;; Ruby romkanからの不足分追加
195
195
  ("てぃ" "thi" "tgi")
@@ -197,6 +197,8 @@
197
197
  ;; Sekkaの辞書に入っている特別なキーワード ">あん" など
198
198
  (">" ">")
199
199
 
200
+ ("ゐ" "yi")
201
+
200
202
  ;; 撥音から始まるキーワード
201
203
  ("っう゛" "vvu" "@vu" ";vu" )
202
204
  ("っう゛ぁ" "vva" "@va" ";va" )
@@ -311,55 +313,56 @@
311
313
  ("にぇ" "nye" "nge")
312
314
  ("にょ" "nyo" "ngo")
313
315
 
316
+ ;; 非AZIKで "cc" で 撥音「っ」から始まるかなを表現を消す可能性があるので "cc" はAZIK側だけに定義する
317
+ ("ちゃ" "cha" "tya" "ca" "cc")
318
+
314
319
  ;; ---以下AZIK---
315
320
  ;; ------ AZIK 撥音拡張
316
321
  ("かん" "kz" "kn")
317
- ("きん" "kk")
322
+ ("きん" "kk" "kv")
318
323
  ("くん" "kj")
319
324
  ("けん" "kd")
320
325
  ("こん" "kl")
321
326
  ("さん" "sz" "sn")
322
- ("しん" "sk")
327
+ ("しん" "sk" "xk")
323
328
  ("すん" "sj")
324
329
  ("せん" "sd")
325
330
  ("そん" "sl")
326
331
  ("たん" "tz" "tn")
327
- ("ちん" "tk")
332
+ ("ちん" "tk" "ck")
328
333
  ("つん" "tj")
329
334
  ("てん" "td")
330
335
  ("とん" "tl")
331
336
  ("なん" "nz")
332
337
  ;;("さん" "nn") "ん"になる
333
338
  ("にん" "nk")
334
- ("ぬん" "nj")
339
+ ("ぬん" "nj" "nv")
335
340
  ("ねん" "nd")
336
341
  ("のん" "nl")
337
342
  ("はん" "hz" "hn")
338
343
  ("ひん" "hk")
339
- ("ふん" "hj")
344
+ ("ふん" "hj" "fj")
340
345
  ("へん" "hd")
341
346
  ("ほん" "hl")
342
347
  ("ふぁん" "fz" "fn")
343
348
  ("ふぃん" "fk")
344
- ("ふん" "fj")
345
349
  ("ふぇん" "fd")
346
350
  ("ふぉん" "fl")
347
351
  ("まん" "mz")
348
352
  ;;("まん" "mn") "もの"になる
349
353
  ("みん" "mk")
350
- ("むん" "mj")
354
+ ("むん" "mj" "mv")
351
355
  ("めん" "md")
352
356
  ("もん" "ml")
353
357
  ("やん" "yz" "yn")
354
358
  ("ゆん" "yj")
355
359
  ("よん" "yl")
356
- ("らん" "rz")
357
- ("らん" "rn")
360
+ ("らん" "rz" "rn")
358
361
  ("りん" "rk")
359
362
  ("るん" "rj")
360
363
  ("れん" "rd")
361
364
  ("ろん" "rl" "wz")
362
- ("わん" "wn")
365
+ ("わん" "wn" "wz")
363
366
  ("うぃん" "wk")
364
367
  ("うぇん" "wd")
365
368
  ("うぉん" "wl")
@@ -369,9 +372,9 @@
369
372
  ("くう" "kh")
370
373
  ("けい" "kw")
371
374
  ("こう" "kp")
372
- ("さい" "sq")
375
+ ("さい" "sq" "sf" "sv")
373
376
  ("すう" "sh")
374
- ("せい" "sw")
377
+ ("せい" "sw" "ss")
375
378
  ("そう" "sp")
376
379
  ("たい" "tq")
377
380
  ("つう" "th")
@@ -382,11 +385,10 @@
382
385
  ("ねい" "nw")
383
386
  ("のう" "np")
384
387
  ("はい" "hq")
385
- ("ふう" "hh")
388
+ ("ふう" "hh" "hh" "fh")
386
389
  ("へい" "hw")
387
390
  ("ほう" "hp")
388
- ("ふぁい" "fq")
389
- ("ふう" "fh")
391
+ ("ふぁい" "fq" "fs")
390
392
  ("ふぇい" "fw")
391
393
  ("ふぉー" "fp")
392
394
  ("まい" "mq")
@@ -394,47 +396,47 @@
394
396
  ("めい" "mw")
395
397
  ("もう" "mp")
396
398
  ("やい" "yq")
397
- ("ゆう" "yh")
399
+ ("ゆう" "yh" "yv")
398
400
  ("よう" "yp")
399
401
  ("らい" "rq")
400
402
  ("るう" "rh")
401
403
  ("れい" "rw")
402
404
  ("ろう" "rp")
403
- ("わい" "wq")
405
+ ("わい" "wq" "wf")
404
406
  ("うぉー" "wp")
405
407
 
406
408
  ;; ------ AZIK 濁音、半濁音
407
409
  ("がん" "gz" "gn")
408
- ("ぎん" "gg")
410
+ ("ぎん" "gg" "gk")
409
411
  ("ぐん" "gj")
410
412
  ("げん" "gd")
411
413
  ("ごん" "gl")
412
414
  ("ざん" "zz" "zn")
413
- ("じん" "zz")
415
+ ("じん" "jk" "zk")
414
416
  ("ずん" "zj")
415
417
  ("ぜん" "zd")
416
418
  ("ぞん" "zl")
417
419
  ("だん" "dz" "dn")
418
- ("ぢん" "dd")
420
+ ("ぢん" "dd" "dk")
419
421
  ("づん" "dj")
420
- ("でん" "dd")
422
+ ("でん" "dd" "dv")
421
423
  ("どん" "dl")
422
424
  ("ばん" "bz" "bn")
423
- ("びん" "bb")
425
+ ("びん" "bb" "bk")
424
426
  ("ぶん" "bj")
425
427
  ("べん" "bd")
426
428
  ("ぼん" "bl")
427
429
  ("ぱん" "pz" "pn")
428
- ("ぴん" "pp")
430
+ ("ぴん" "pp" "pk")
429
431
  ("ぷん" "pj")
430
432
  ("ぺん" "pd")
431
- ("ぽん" "pl")
433
+ ("ぽん" "pl" "pf")
432
434
 
433
435
  ;; ------ AZIK 濁音、半濁音二重母音拡張
434
- ("がい" "kq")
435
- ("ぐう" "kh")
436
- ("げい" "kw")
437
- ("ごう" "kp")
436
+ ("がい" "gq")
437
+ ("ぐう" "gh")
438
+ ("げい" "gw")
439
+ ("ごう" "gp")
438
440
  ("ざい" "zq" "zv")
439
441
  ("ずう" "zh")
440
442
  ("ぜい" "zw" "zx")
@@ -445,12 +447,12 @@
445
447
  ("どう" "dp")
446
448
  ("ばい" "bq")
447
449
  ("ぶう" "bh")
448
- ("べい" "bw")
450
+ ("べい" "bw" "bx")
449
451
  ("ぼう" "bp")
450
452
  ("ぱい" "pq")
451
453
  ("ぷう" "ph")
452
454
  ("ぺい" "pw")
453
- ("ぽう" "pp")
455
+ ("ぽう" "pp" "pv")
454
456
 
455
457
  ;; ------ AZIK 特殊拡張
456
458
  ("こと" "kt")
@@ -483,6 +485,135 @@
483
485
  ("よる" "yr")
484
486
  ("たび" "tb")
485
487
  ("ごと" "gt")
488
+
489
+ ;; skk-azik.elからの不足分
490
+ ("ばら" "br")
491
+ ("びぇん" "byd")
492
+ ("びゅう" "byh")
493
+ ("びゅん" "byj")
494
+ ("びょん" "byl")
495
+ ("びゃん" "byn" "byz")
496
+ ("びょう" "byp")
497
+ ("びゃい" "byq")
498
+ ("びぇい" "byw")
499
+ ("ちぇん" "cd" "tyd")
500
+ ("ちゅう" "ch" "tyh")
501
+ ("ちゅん" "cj" "tyj")
502
+ ("ちょん" "cl" "tyl")
503
+ ("ちゃん" "cn" "cz" "tyn" "tyz")
504
+ ("ちょう" "cp" "typ")
505
+ ("ちゃい" "cq" "cv" "tyq")
506
+ ("ちぇい" "cw" "cx" "tyw")
507
+ ("でゅー" "dch")
508
+ ("でぃん" "dck")
509
+ ("どぅー" "dcp")
510
+ ("でゅ" "dcu")
511
+ ("だが" "dg")
512
+ ("である" "dr")
513
+ ("ふむ" "fm")
514
+ ("ふる" "fr")
515
+ ("ぎぇん" "gyd")
516
+ ("ぎゅう" "gyh")
517
+ ("ぎゅん" "gyj")
518
+ ("ぎょん" "gyl")
519
+ ("ぎゃん" "gyn" "gyz")
520
+ ("ぎょう" "gyp")
521
+ ("ぎゃい" "gyq")
522
+ ("ぎぇい" "gyw")
523
+ ("ひぇん" "hgd" "hyd")
524
+ ("ひゅう" "hgh" "hyh")
525
+ ("ひゅん" "hgj")
526
+ ("ひょん" "hgl" "hyl")
527
+ ("ひゃん" "hgn" "hgz" "hyz")
528
+ ("ひょう" "hgp" "hyp")
529
+ ("ひゃい" "hgq" "hyq")
530
+ ("ひぇい" "hgw" "hyw")
531
+ ("じぇん" "jd" "zyd")
532
+ ("じゅう" "jh" "jv" "zyh")
533
+ ("じゅん" "jj" "zyj")
534
+ ("じょん" "jl" "zyl")
535
+ ("じゃん" "jn" "jz" "zyn" "zyz")
536
+ ("じょう" "jp" "zyp")
537
+ ("じゃい" "jq" "zyq")
538
+ ("じぇい" "jw" "zyw")
539
+ ("きぇん" "kgd" "kyd")
540
+ ("きゅう" "kgh" "kyh")
541
+ ("きょん" "kgl" "kyl")
542
+ ("きゃん" "kgn" "kgz" "kyn" "kyz")
543
+ ("きょう" "kgp" "kyp")
544
+ ("きゃい" "kgq" "kyq")
545
+ ("きぇい" "kgw" "kyw")
546
+ ("きゅん" "kyj")
547
+ ("みぇん" "mgd" "myd")
548
+ ("みゅう" "mgh" "myh")
549
+ ("みゅん" "mgj" "myj")
550
+ ("みょん" "mgl" "myl")
551
+ ("みゃん" "mgn" "mgz" "myn" "myz")
552
+ ("みょう" "mgp" "myp")
553
+ ("みゃい" "mgq" "myq")
554
+ ("みぇい" "mgw" "myw")
555
+ ("まる" "mr")
556
+ ("にぇん" "ngd" "nyd")
557
+ ("にゅう" "ngh" "nyh")
558
+ ("にゅん" "ngj" "nyj")
559
+ ("にょん" "ngl" "nyl")
560
+ ("にゃん" "ngn" "ngz" "nyn" "nyz")
561
+ ("にょう" "ngp" "nyp")
562
+ ("にゃい" "ngq" "nyq")
563
+ ("にぇい" "ngw" "nyw")
564
+ ("ぴぇん" "pgd" "pyd")
565
+ ("ぴゅう" "pgh" "pyh")
566
+ ("ぴゅん" "pgj" "pyj")
567
+ ("ぴょん" "pgl" "pyl")
568
+ ("ぴゃん" "pgn" "pgz" "pyn" "pyz")
569
+ ("ぴょう" "pgp" "pyp")
570
+ ("ぴゃい" "pgq" "pyq")
571
+ ("ぴぇい" "pgw" "pyw")
572
+ ("りぇん" "ryd")
573
+ ("りゅう" "ryh")
574
+ ("りゅん" "ryj")
575
+ ("りょく" "ryk")
576
+ ("りょん" "ryl")
577
+ ("りゃん" "ryn" "ryz")
578
+ ("りょう" "ryp")
579
+ ("りゃい" "ryq")
580
+ ("りぇい" "ryw")
581
+ ("しも" "sm")
582
+ ("しぇん" "syd" "xd")
583
+ ("しゅう" "syh" "xh")
584
+ ("しゅん" "syj" "xj")
585
+ ("しょん" "syl" "xl")
586
+ ("しょう" "syp" "xp")
587
+ ("しゃい" "syq" "xq" "xv")
588
+ ("しぇい" "syw" "xf" "xw")
589
+ ("しゃん" "syz" "xn" "xz")
590
+ ("てゅー" "tgh")
591
+ ("てぃん" "tgk")
592
+ ("とぅー" "tgp")
593
+ ("てゅ" "tgu")
594
+ ("つぁ" "tsa")
595
+ ("つぇ" "tse")
596
+ ("つぃ" "tsi")
597
+ ("つぉ" "tso")
598
+ ("う゛ぇん" "vd")
599
+ ("う゛ぃん" "vk")
600
+ ("う゛ぉん" "vl")
601
+ ("う゛ぁん" "vn" "vz")
602
+ ("う゛ぉー" "vp")
603
+ ("う゛ぁい" "vq")
604
+ ("う゛ぇい" "vw")
605
+ ("う゛ゃ" "vya")
606
+ ("う゛ぇ" "vye")
607
+ ("う゛ょ" "vyo")
608
+ ("う゛ゅ" "vyu")
609
+ ("うぁ" "wha")
610
+ ("しゅつ" "xt")
611
+
612
+ ;; 辞書でカバーすれば良いのでRomanテーブルには入れない
613
+ ;;("←" "xxh")
614
+ ;;("↓" "xxj")
615
+ ;;("↑" "xxk")
616
+ ;;("→" "xxl")
486
617
  ))
487
618
 
488
619
 
@@ -1,6 +1,6 @@
1
1
  class SekkaVersion
2
2
  include Singleton
3
3
  def self.version
4
- "0.8.0"
4
+ "0.8.1"
5
5
  end
6
6
  end
data/lib/sekkaserver.rb CHANGED
@@ -75,9 +75,10 @@ module SekkaServer
75
75
  dictline = arr[1] + " " + arr[2]
76
76
  registered = @core.registerUserJisyo(userid, @kvs, dictline)
77
77
  if registered
78
- puts "Info: added to dict userid[" + userid + "] dictline[" + dictline + "]"
78
+ puts "Info: added to dict userid[" + userid + "] dictline[" + dictline + "]"
79
+ @core.flushCacheServer( @cachesv )
79
80
  else
80
- puts "Info: ignored (already added) userid[" + userid + "] dictline[" + dictline + "]"
81
+ puts "Info: ignored (already added or comment) userid[" + userid + "] dictline[" + dictline + "]"
81
82
  end
82
83
  }
83
84
  end
@@ -110,6 +111,11 @@ module SekkaServer
110
111
  dict = URI.decode( req.params['dict'].force_encoding( "UTF-8" ) ).split( "\n" )
111
112
  dict.each { |x| @queue.push( userid + " " + x ) }
112
113
  sprintf( "register request successful (%s) words", dict.size )
114
+ when "/flush"
115
+ @core.flushCacheServer( @cachesv )
116
+ n = @core.flushUserJisyo( userid, @kvs )
117
+ printf( "info : flush [%s] user's dict %d entries.", userid, n )
118
+ sprintf( "flush request successful. flush (%d) entries.", n )
113
119
  else
114
120
  sprintf( "unknown path name. [%s]", req.path )
115
121
  end
@@ -36,7 +36,7 @@
36
36
  (require "sekka/kvs")
37
37
  (use nendo.test)
38
38
  (use sekka.henkan)
39
- (load "./test/common.nnd")
39
+ (load "test/common.nnd")
40
40
 
41
41
  (define dbtype (string->symbol (first *argv*)))
42
42
 
@@ -0,0 +1,86 @@
1
+ ;;-*- mode: nendo; syntax: scheme -*-
2
+ ;;;
3
+ ;;; azik-verification.nnd - ローマ字ライブラリ部をDDSKKのskk-azik.elとベリファイをとる
4
+ ;;;
5
+ ;;; Copyright (c) 2010 Kiyoka Nishiyama <kiyoka@sumibi.org>
6
+ ;;;
7
+ ;;; Redistribution and use in source and binary forms, with or without
8
+ ;;; modification, are permitted provided that the following conditions
9
+ ;;; are met:
10
+ ;;;
11
+ ;;; 1. Redistributions of source code must retain the above copyright
12
+ ;;; notice, this list of conditions and the following disclaimer.
13
+ ;;;
14
+ ;;; 2. Redistributions in binary form must reproduce the above copyright
15
+ ;;; notice, this list of conditions and the following disclaimer in the
16
+ ;;; documentation and/or other materials provided with the distribution.
17
+ ;;;
18
+ ;;; 3. Neither the name of the authors nor the names of its contributors
19
+ ;;; may be used to endorse or promote products derived from this
20
+ ;;; software without specific prior written permission.
21
+ ;;;
22
+ ;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
+ ;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
+ ;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25
+ ;;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26
+ ;;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27
+ ;;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
28
+ ;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
29
+ ;;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
30
+ ;;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
31
+ ;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32
+ ;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
+ ;;;
34
+ ;;; $Id:
35
+ ;;;
36
+ (use nendo.test)
37
+ (use sekka.roman-lib)
38
+ (test-start "roman-lib")
39
+ (load "test/skk-azik-table")
40
+
41
+ ;;===================================================================
42
+ (define skk-azik-roman->kana-alist
43
+ (map
44
+ (lambda (entry)
45
+ (let* ((roman (first entry))
46
+ (target (third entry))
47
+ (target (if (pair? target)
48
+ (cdr target)
49
+ target)))
50
+ (cons roman target)))
51
+ skk-azik-additional-rom-kana-rule-list))
52
+
53
+ (define skk-azik-kana->roman-alist
54
+ (map
55
+ (lambda (x)
56
+ (cons (cdr x) (car x)))
57
+ skk-azik-roman->kana-alist))
58
+
59
+
60
+ ;;-------------------------------------------------------------------
61
+ (test-section "verify roman => hiragana")
62
+
63
+ (for-each
64
+ (lambda (entry)
65
+ (let ((kana (car entry))
66
+ (roman (cdr entry)))
67
+ (test* (sprintf "romna => hiragana (\"%s\" \"%s\")" kana roman)
68
+ #t
69
+ (if (memv roman (hash-table-get sekka-kana->roman-hash-long kana '()))
70
+ #t #f))))
71
+ skk-azik-kana->roman-alist)
72
+
73
+ ;;-------------------------------------------------------------------
74
+ (test-section "verify roman => hiragana")
75
+
76
+ (for-each
77
+ (lambda (entry)
78
+ (let1 roman (first entry)
79
+ (test* (sprintf "romna => hiragana [%s]" roman)
80
+ (assq-ref roman skk-azik-roman->kana-alist)
81
+ (car (gen-roman->hiragana roman :azik)))))
82
+ skk-azik-roman->kana-alist)
83
+
84
+
85
+ ;;===================================================================
86
+ (test-end)