#coding:utf-8
漢詩を作ったり、解析したりするのに役立つモジュール、関数をつくりました。
kansi_valid is a varidator of Han character poem(Kan si).
- Author
-
Takayasu Hayashi(林 貴康 [email protected] )
License::GPL v2
-
辞書の使用は自己責任でお願いします。辞書は漢太郎の作者、Jigen様の作成された辞書を御許可いただきUTF-8テキストにしてあります。Jigen様、ありがとうございます。間違いがありましたら修正したいと思いますのでご連絡ください。[email protected]
-
Dictionary saved “/dic/dic.txt”UTF-8,about 6800 chars ,made by Jigen Kanou. If you resume this,please tell me.
-
文字コードは UTF-8 ですので、WinXPなどは出力をKconvで変換したり、対応のエディタで見てください。
:Usage 使い方
# coding:utf-8
requrie "rubyems" if "RUBY_VERSION"<"1.9"
require "kansi_valid"
include Kansi_valid
puts kv(generate)
#winXPなど、文字コードが shift-jisなどのとき
require "kconv"
print Kconv.kconv(Kansi_valid::sample,Kconv::SJIS,Kconv::UTF8)
#追記Windows7以降のコンソールで、ruby1.9以降、エラーがでるなら、
ruby -Ku kansi_valid_script
や
ruby -U kansi_valid_script
script内部で
Encoding.default_external = 'utf-8'
Encoding.default_internal = 'utf-8'
をつかってみてください。(Fixed >=0.0.9)
先ずは有名なサンプルで。
sample # =>"#偶成 朱熹\n少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声\n"
#other valid=>"少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声"
#other valid=>"少年易老学難成 一寸光陰不可軽 未覚池塘春草夢 階前梧葉已秋声"
#other valid=>"少年易老学難成一寸光陰不可軽未覚池塘春草夢階前梧葉已秋声"
漢詩ではないサンプル漢詩を機械的に生成します
samples(10) # =>make many 'Meaningless' poet.
-
七言絶句(7を指定)五言絶句(5を指定) make random ‘Meaningless’ poet(7or5 gon Zekku)
srand(0);str1 = generate(7) # => "戻里唆双差及援\n罷傷脈拘序周元\n家据弱役露宵屋\n稚守途紅稿軸温"
srand(0);generate(5) # => "戻里唆双飯\n差猫及硬温\n除慌女収嫁\n枢寂厄痴援"
-
srand は同じ詩を生成するために使用していますので通常は不要
kansi_valid(String) 絶句ならば禁則評価と辞書の結果表示、research dictionary and answer,validate
str=kansi_valid(sample)
# =>#偶成 朱熹
html化して、wiktionaryなどで文字を調べられるようにするなら、
wik=to_wiktionary(str)
open("kansi.htm","w"){|io| io.print wik}
などとすると、html埋め込みデータができます。(ヘッダ等は必要なら適宜入れてください。)
firefox kansi.htm
などして、見てください
文字列が絶句であれば true を返す
valid?(sample) # =>true (絶句が正しいならtrue。)
(
漢詩でないものも第二水準漢字程度まで調べられます。日本の国字<峠辻>なども調べられますが、絶句の評価はできません。
dic("漢字辞典") # =>文字列を調べる。普通こちら、Simple dictionary using Dic[]
# =>"漢:●:翰::カン:国名 あや から
辞書の音訓などから調べる場合は search を使います
search("かえで") # =>Dicの内容から該当する漢字のハッシュをつくる
# =>{"楓"=>["楓", "2440", "", "0", "○", "一東", "上平", "", "フウ", "",
"かえで", "4976", "4186", "13", "木風几丿虫", "0"],
"槭"=>["槭", "4166", "", "0", "●", "屋", "入声", "", "セキ", "",
"かえで", "5C65", "6069", "15", "木戚戈上小", "0"]}
平韻の字表の配列です
inji # =>平韻の配列表(inji[x],x=0..29)
常用漢字の配列です(約1945字)
Jouyou=["哀","愛",..,"湾","腕"]
辞書漢字の配列です(約6715字、国字など含む。かな・記号類は除外してあります。)
Ji =["亜","唖",..,"禔","赶"]
平仄韻からランダムに文字をあてはめます
poetter("常国◇○●\n◇○○●◎\n○○●○●\n○●●○◎",[Jouyou,inji[0]])
# =>"常国雇坪坂\n飲戯眠分崇\n諸番襲硝看\n評緯越然籠"
zekku_list # =>絶句として適した文字を当てはめる配列
kougo("◇●常国○◎") # =>"囚故常国挑琴\n#侵" 平仄式から字を充て、最後に韻をコメント。
# "◇不問 ●仄 ○平 ◎韻"
kougo() # =>無意味な香語調を生成します、make random 'Meaningless' "kougo".
hyousoku("菩薩") # =>"虞◇曷●" (韻と平仄式を返す)
hyosoku("菩薩") # =>同上、 same above
漢詩バリデータ(ルールどおりか評価する)ができるまで…
更新履歴
0.0.9
-
Windows7 コンソールで、デフォルトでは表示できないので、encodingをUTF-8に決めてありますkansi_valid.rb Fixed