kansi_valid 0.0.10 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/GPL +0 -0
  2. data/LICENSE.txt +2 -2
  3. data/README +46 -12
  4. data/kansi_valid.gemspec +24 -21
  5. data/lib/kansi_valid/_24hudou.rb +0 -0
  6. data/lib/kansi_valid/_3ren.rb +0 -0
  7. data/lib/kansi_valid/be_hyo.rb +0 -0
  8. data/lib/kansi_valid/be_soku.rb +0 -0
  9. data/lib/kansi_valid/bouin.rb +0 -0
  10. data/lib/kansi_valid/check_okosi.rb +0 -0
  11. data/lib/kansi_valid/check_ouin.rb +0 -0
  12. data/lib/kansi_valid/check_ryouin.rb +0 -0
  13. data/lib/kansi_valid/check_tuuin.rb +2 -2
  14. data/lib/kansi_valid/check_zekku.rb +0 -0
  15. data/lib/kansi_valid/hyousoku.rb +0 -0
  16. data/lib/kansi_valid/inji.rb +0 -0
  17. data/lib/kansi_valid/kanji.rb +1 -1
  18. data/lib/kansi_valid/kansi_anaryze.rb +0 -0
  19. data/lib/kansi_valid/kansi_comment.rb +0 -0
  20. data/lib/kansi_valid/kansi_generate.rb +0 -0
  21. data/lib/kansi_valid/kansi_htm.rb +0 -0
  22. data/lib/kansi_valid/kansi_organize.rb +0 -0
  23. data/lib/kansi_valid/kohyo.rb +0 -0
  24. data/lib/kansi_valid/kougo.rb +4 -4
  25. data/lib/kansi_valid/nihongo.rb +0 -0
  26. data/lib/kansi_valid/pick.rb +0 -0
  27. data/lib/kansi_valid/run.rb +41 -0
  28. data/lib/kansi_valid/sample.rb +1 -1
  29. data/lib/kansi_valid/search.rb +0 -0
  30. data/lib/kansi_valid/seikei.rb +0 -0
  31. data/lib/kansi_valid/version.rb +4 -2
  32. data/lib/kansi_valid/wiktionary.rb +0 -0
  33. data/lib/kansi_valid.rb +6 -6
  34. data/license.rb +26 -0
  35. data/readme.rb +165 -0
  36. data/test/tc_kansi_valid.rb +0 -0
  37. data/usual.rb +6 -0
  38. data/www/cgi-bin/jrb.cgi +69 -0
  39. data/www/cgi-bin/kougo.cgi +54 -0
  40. data/www/cgi-bin/post.cgi +50 -0
  41. data/www/cgi-bin/rb.cgi +61 -0
  42. data/www/cgi-bin/web.rb +36 -0
  43. data/{dic → www}/dic.txt +0 -0
  44. data/www/index.htm +19 -0
  45. data/{dic → www}/ji_s.txt +0 -0
  46. data/{dic → www}/jouyou_kanji.txt +0 -0
  47. data/{dic → www}/kanji_list.txt +0 -0
  48. metadata +24 -20
  49. data/dic/kaku.dic +0 -31
  50. data/dic/parts.dic +0 -1313
  51. data/dic/yomi.dic +0 -6404
data/GPL CHANGED
File without changes
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
- 'kansi_valid' can easy to make Kanshi(Han-poet).
1
+ 'kansi_valid' can easy to make Kanshi(Han-poet). {keywords: 漢詩 作り方 作成 基礎 平仄辞書 添削 rubygems.org}
2
2
 
3
- Copyright (C) 2009-2013 Takayasu Hayashi (email: joe.ko9ji@gmail.com )
3
+ Copyright (C) 2009-2014 Takayasu Hayashi(T_H) (email: joe.ko9ji@gmail.com )
4
4
 
5
5
  This program is free software; you can redistribute it and/or modify
6
6
  it under the terms of the GNU General Public License, version 2, as
data/README CHANGED
@@ -1,5 +1,5 @@
1
1
  #coding:utf-8
2
- === 漢詩を作ったり、解析したりするのに役立つモジュール、関数をつくりました。
2
+ === 漢詩を作る、平仄や添削したりするのに役立つモジュール、関数をつくりました。
3
3
  kansi_valid is a varidator of Han character poem(Kan si).
4
4
  Author:: Takayasu Hayashi(林 貴康 joe.ko9ji@gmail.com )
5
5
  License::GPL v2
@@ -12,6 +12,9 @@ License::GPL v2
12
12
  requrie "rubyems" if "RUBY_VERSION"<"1.9"
13
13
  require "kansi_valid"
14
14
  include Kansi_valid
15
+
16
+ run(port=8880) # => see 127.0.0.1:8880
17
+
15
18
  puts kv(generate)
16
19
 
17
20
  #winXPなど、文字コードが shift-jisなどのとき
@@ -29,8 +32,16 @@ script内部で
29
32
  をつかってみてください。(Fixed >=0.0.9)
30
33
 
31
34
  === 先ずは有名なサンプルで。
32
- sample # =>"#偶成 朱熹\n少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声\n"
33
- #other valid=>"少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声"
35
+ sample # =>"#偶成 朱熹
36
+ 少年易老学難成
37
+ 一寸光陰不可軽
38
+ 未覚池塘春草夢
39
+ 階前梧葉已秋声
40
+ "
41
+ #other valid=>"少年易老学難成
42
+ 一寸光陰不可軽
43
+ 未覚池塘春草夢
44
+ 階前梧葉已秋声"
34
45
  #other valid=>"少年易老学難成 一寸光陰不可軽 未覚池塘春草夢 階前梧葉已秋声"
35
46
  #other valid=>"少年易老学難成一寸光陰不可軽未覚池塘春草夢階前梧葉已秋声"
36
47
 
@@ -38,8 +49,14 @@ script内部で
38
49
  samples(10) # =>make many 'Meaningless' poet.
39
50
 
40
51
  * 七言絶句(7を指定)五言絶句(5を指定) make random 'Meaningless' poet(7or5 gon Zekku)
41
- srand(0);str1 = generate(7) # => "戻里唆双差及援\n罷傷脈拘序周元\n家据弱役露宵屋\n稚守途紅稿軸温"
42
- srand(0);generate(5) # => "戻里唆双飯\n差猫及硬温\n除慌女収嫁\n枢寂厄痴援"
52
+ srand(0);str1 = generate(7) # => "戻里唆双差及援
53
+ 罷傷脈拘序周元
54
+ 家据弱役露宵屋
55
+ 稚守途紅稿軸温"
56
+ srand(0);generate(5) # => "戻里唆双飯
57
+ 差猫及硬温
58
+ 除慌女収嫁
59
+ 枢寂厄痴援"
43
60
  * srand は同じ詩を生成するために使用していますので通常は不要
44
61
 
45
62
  ===kansi_valid(String) 絶句ならば禁則評価と辞書の結果表示、research dictionary and answer,validate
@@ -105,10 +122,17 @@ script内部で
105
122
  Ji =["亜","唖",..,"禔","赶"]
106
123
 
107
124
  ===平仄韻からランダムに文字をあてはめます
108
- poetter("常国◇○●\n◇○○●◎\n○○●○●\n○●●○◎",[Jouyou,inji[0]])
109
- # =>"常国雇坪坂\n飲戯眠分崇\n諸番襲硝看\n評緯越然籠"
125
+ poetter("常国◇○●
126
+ ◇○○●◎
127
+ ○○●○●
128
+ ○●●○◎",[Jouyou,inji[0]])
129
+ # =>"常国雇坪坂
130
+ 飲戯眠分崇
131
+ 諸番襲硝看
132
+ 評緯越然籠"
110
133
  zekku_list # =>絶句として適した文字を当てはめる配列
111
- kougo("◇●常国○◎") # =>"囚故常国挑琴\n#侵" 平仄式から字を充て、最後に韻をコメント。
134
+ kougo("◇●常国○◎") # =>"囚故常国挑琴
135
+ #侵" 平仄式から字を充て、最後に韻をコメント。
112
136
  # "◇不問 ●仄 ○平 ◎韻"
113
137
  kougo() # =>無意味な香語調を生成します、make random 'Meaningless' "kougo".
114
138
 
@@ -151,7 +175,17 @@ script内部で
151
175
  2、2、3(五言は2,3)の字で区切られているか
152
176
  多少目をつむるなどの融通はきかない。
153
177
  次は詩語表を登録したり、句のまとまりで当てはめられるようにしたい。
154
- ===更新履歴
155
- ==0.0.9
156
- * Windows7 コンソールで、デフォルトでは表示できないので、encodingをUTF-8に決めてあります
157
- kansi_valid.rb Fixed
178
+
179
+ <h3>更新履歴</h3>
180
+ '0.0.12' checked windows.
181
+ '0.0.11' #Kansi_valid::run (add)
182
+ '0.0.10' 0.0.9 error in rdoc(win7)
183
+ '0.0.9' BugFixed kansi_valid.rb (RUBY >=1.9)ENCODING ERROR on Windows7(or later) console.
184
+ '0.0.8' kansi_valid Bug fixed.(_bouin word+=...)
185
+ '0.0.7' Also use NameSpace (module_function add).
186
+ '0.0.6' Rdoc error fixed. UnitTest add.
187
+ '0.0.5' search() add.
188
+ '0.0.4' Linux support. ,delete 'win32ole'
189
+ '0.0.3' for win 2009.2.6Takayasu_H
190
+ '0.0.2' some bug fix
191
+ '0.0.1' first on windows XP. Thanks Kantarou(Author:Jigen Konou),and its great dictionary.
data/kansi_valid.gemspec CHANGED
@@ -1,6 +1,7 @@
1
1
  # coding:utf-8
2
2
  if RUBY_VERSION<"1.9"
3
3
  $KCODE="u"
4
+ require 'rubygems'
4
5
  else
5
6
  ##for execute gemspec and build
6
7
  #2013.2.7 Bug Fix on Windows7 console.(or later version)
@@ -8,19 +9,26 @@ else
8
9
  Encoding.default_external = 'utf-8'
9
10
  Encoding.default_internal = 'utf-8'
10
11
  end
12
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
13
+ Dir.chdir(File.dirname(__FILE__))
11
14
 
12
- require 'rubygems'
13
15
  require './lib/kansi_valid/version'
14
- #require './license'
16
+ require './license'
17
+ require './readme'
18
+
19
+ desc="'kansi_valid' can easy to make Kanshi(Han-poet). {keywords: 漢詩 作り方 作成 基礎 平仄辞書 添削 rubygems.org}"
20
+ open("./LICENSE.txt","w"){|io| io.print license(desc)}
21
+ open("./README","w"){|io| io.print readme()}
22
+
15
23
  spec = Gem::Specification.new do |s|
16
24
  s.platform = Gem::Platform::RUBY
17
- s.summary = "漢詩の作成補助、添削。 Easy to make Kanshi(Zekku)(Han-poet)and validate it. str=generate(5);kansi_valid(str);kv_bool(str)"
25
+ s.summary = "漢詩の作り方 補助ツール、添削。 Easy to make Kanshi(Zekku)(Han-poet)and validate it. run(port=8880);kansi_valid(str)"
18
26
  s.author="Takayasu Hayashi"
19
27
  s.email="joe.ko9ji@gmail.com"
20
28
  #s.homepage="http://maru.selfip.com/mygem/"
21
29
  s.name = "kansi_valid"
22
30
  s.version = Kansi_valid::Version
23
-
31
+ s.license="GPLv2"
24
32
  #s.requirements << 'rmagick'
25
33
  #s.requirements << 'gruff'
26
34
  #s.add_dependency('serialport','>= 1.0.4')
@@ -28,28 +36,23 @@ require './lib/kansi_valid/version'
28
36
  s.has_rdoc=true
29
37
 
30
38
  #s.files = Dir.glob("{test,lib}/**/*.rb")
31
- s.files = Dir.glob("{lib}/**/*.{rb,txt,dic}")+
39
+ s.files = Dir.glob("{lib}/**/*.{rb,txt,dic,bat}")+
32
40
  Dir.glob("test/{ts,tc}*.rb")+
33
- Dir.glob("dic/*")+
34
- #Dir.glob("bin/*.rb")+
35
- ["kansi_valid.gemspec","GPL","LICENSE.txt"]
41
+ #Dir.glob("dic/*")+
42
+ Dir.glob("www/**/*.{rb,cgi,txt,htm}")+
43
+ ["kansi_valid.gemspec","GPL","LICENSE.txt","license.rb","usual.rb","readme.rb"]
36
44
  s.test_file="test/tc_kansi_valid.rb"
37
45
  s.extra_rdoc_files="README"
38
46
  s.description = <<EOF
39
47
  Usage:
40
- requrie "rubyems"
41
- require "Kansi_valid"
42
- inclide Kansi_valid
43
-
44
- puts str1 = generate(7) # => make random poet(7 gon Zekku)
45
- puts str2 = generate(5) # => make random poet(5 gon Zekku)
46
-
47
- kansi_valid(str1) # => research dictionary and answer,validate
48
- kv(str1) # => same above
49
- valid(str1) # => same above
50
-
51
- valid?(str1) # =>true,false(nil)
52
- kv_bool(str1) # => same above
48
+ require "kansi_valid" ;inclide Kansi_valid <br/>
49
+ run(port=7980) ##New!(遊び系「漢詩作り」サーバー)
50
+ kansi_valid(sample) # =>漢詩の評価、添削 kv(sample)
51
+ valid?(sample) # =>true (五言か七言絶句ならば)
52
+ generate(7)     #無意味な七言絶句を生成(7,5のみ)
53
+ dic("漢字") #平仄を調べる
54
+ search("かえで") #辞書で文字検索(部首、つくり、意味、音訓、画数ほか)
55
+ poetter("常国◇○●\n◇○○●◎\n○○●○●\n○●●○◎",[Jouyou,inji[0]])
53
56
  EOF
54
57
  end
55
58
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  # coding:utf-8
2
2
 
3
- module Kansi_valid
3
+ module Kansi_valid
4
4
  module_function
5
5
  #通韻のチェック
6
6
  def check_tuuin(a,zekku,ouIn)
@@ -17,7 +17,7 @@ module_function
17
17
  elsif zekku==5
18
18
  #p ouIn
19
19
  #p a[1][8]
20
- return (ouIn==a[1][8] && ouIn==a[3][8] && (ouIn==a[0][8]) or be_soku(a[0][9]))
20
+ return (ouIn==a[1][8] && ouIn==a[3][8] && (ouIn==a[0][8]) or be_soku(a[0][8]))
21
21
  #その他(false)
22
22
  else
23
23
  return false
File without changes
File without changes
File without changes
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Kansi_valid
4
4
  module_function
5
- def kanji(dic_file=File.dirname(__FILE__)+"/../../dic/dic.txt")
5
+ def kanji(dic_file=File.dirname(__FILE__)+"/../../www/dic.txt")
6
6
  dic={}
7
7
  data=File.read(dic_file)
8
8
  data.each_line do |list|
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  # coding:utf-8
2
-
3
- module Kansi_valid
2
+
3
+ module Kansi_valid
4
4
  module_function
5
5
  def zekku_list
6
6
  hyo_7=["◇○◇●●○◎
@@ -90,7 +90,7 @@ rule=x[rand(x.size)]
90
90
  rule+="
91
91
 
92
92
  茲惟
93
- 新帰元 ◇◇◇◇信士"
93
+ 新帰元 ◇◇◇◇信仁"
94
94
  #八字称 人格・徳行
95
95
  rule+="
96
96
  ◇◇◇◇
@@ -121,7 +121,7 @@ rule+="
121
121
  rule+="
122
122
  ◇◇◇◇◇◇●
123
123
  ◇◇◇◇◇◇◎
124
- "
124
+ "
125
125
  end
126
126
  #p rule
127
127
  #p list
File without changes
File without changes
@@ -0,0 +1,41 @@
1
+ require "webrick"
2
+ module Kansi_valid
3
+ module_function
4
+ def run(port=8880,root=File.dirname(__FILE__)+"/../../www")
5
+ Dir.chdir(File.dirname(__FILE__))
6
+ #File.expand_path(File.dirname(__FILE__) + '/../..')
7
+ #require "../kansi_valid"
8
+ if RUBY_PLATFORM.include?("mswin")
9
+ #p rubybin = `exec ./which.bat ruby`.chomp
10
+ list=ENV["PATH"].split(";")
11
+ ls=list.select{|f| f.include?("ruby") && f.include?("bin")}
12
+ rubybin=ls[0].gsub("\\","/")+"/ruby"
13
+ else#linux
14
+ rubybin = `which ruby`.chomp
15
+ end
16
+
17
+ document_root = root
18
+ server = WEBrick::HTTPServer.new({
19
+ :DocumentRoot => document_root,
20
+ :BindAddress => '0.0.0.0',
21
+ :CGIInterpreter => rubybin,
22
+ :Port => port
23
+ })
24
+
25
+ cgi_root=document_root + '/**/*.{cgi,rb}'
26
+ cgilist = Dir.glob(cgi_root)
27
+ cgilist.each {|cgi_file|
28
+ server.mount(cgi_file, WEBrick::HTTPServlet::CGIHandler, document_root + cgi_file)
29
+ }
30
+
31
+ ['INT', 'TERM'].each {|signal|
32
+ Signal.trap(signal){ server.shutdown }
33
+ }
34
+ puts "See! # => 127.0.0.1:#{port.to_s}"
35
+ server.start
36
+ end
37
+ end
38
+
39
+ if $0==__FILE__
40
+ Kansi_valid::run()
41
+ end
@@ -7,7 +7,7 @@ module_function
7
7
  "#偶成 朱熹\n少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声\n"
8
8
  end
9
9
 
10
- def samples(num)
10
+ def samples(num=1)
11
11
  str=""
12
12
  num.times do
13
13
  str+=generate()+"\n\n"
File without changes
File without changes
@@ -2,9 +2,11 @@
2
2
 
3
3
  module Kansi_valid
4
4
  module_function
5
- Version = '0.0.10'
5
+ Version = '0.0.12'
6
6
 
7
- CHENGE_LOG="'0.0.10' 0.0.9 error in rdoc(win7)
7
+ CHENGE_LOG="'0.0.12' checked windows.
8
+ '0.0.11' #Kansi_valid::run (add)
9
+ '0.0.10' 0.0.9 error in rdoc(win7)
8
10
  '0.0.9' BugFixed kansi_valid.rb (RUBY >=1.9)ENCODING ERROR on Windows7(or later) console.
9
11
  '0.0.8' kansi_valid Bug fixed.(_bouin word+=...)
10
12
  '0.0.7' Also use NameSpace (module_function add).
File without changes
data/lib/kansi_valid.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  #coding:utf-8
2
- if RUBY_VERSION<"1.9"
2
+ if RUBY_VERSION<"1.9"
3
3
  $KCODE="u"
4
- else
4
+ else
5
5
  #2013.2.7 Bug Fix on Windows7 console.(or later version)
6
6
  Encoding.default_external = 'utf-8'
7
7
  Encoding.default_internal = 'utf-8'
@@ -20,10 +20,10 @@ module_function
20
20
  #全辞書ハッシュ
21
21
  Dic=kanji
22
22
  #常用漢字の配列
23
- Jouyou=File.read(File.dirname(__FILE__)+"/../dic/jouyou_kanji.txt").chomp.split(//)
23
+ Jouyou=File.read(File.dirname(__FILE__)+"/../www/jouyou_kanji.txt").chomp.split(//)
24
24
 
25
25
  #辞書の全ての漢字の配列(ひらがな等は、除外、国字は含む)
26
- Ji =File.read(File.dirname(__FILE__)+"/../dic/kanji_list.txt").chomp.split(//)
26
+ Ji =File.read(File.dirname(__FILE__)+"/../www/kanji_list.txt").chomp.split(//)
27
27
 
28
28
  #===kansi_valid(String) 絶句ならば禁則評価と辞書の結果表示、research dictionary and answer,validate
29
29
  # kansi_valid(sample)
@@ -85,13 +85,13 @@ module_function
85
85
  #二六対(挟み平(転句)はOK)
86
86
  hudo=_24hudou(a,zekku)
87
87
  unless hudo
88
- warning+="# 違反・二四不同、(二六対)\n"
88
+ warning+="# 違反・二四不同、二六対(又は両韻字)\n"
89
89
  end
90
90
 
91
91
  #下三連禁
92
92
  _simo3ren=_3ren(a)
93
93
  unless _simo3ren
94
- warning+="# 警告・下三連禁(下平三連、下仄三連)\n"
94
+ warning+="# 警告・下三連禁(下平三連、下仄三連)(又は両韻字)\n"
95
95
  end
96
96
 
97
97
  #二弧平禁(七言は四弧平禁)
data/license.rb ADDED
@@ -0,0 +1,26 @@
1
+ #!ruby
2
+
3
+ #write licence (with year)
4
+ def license_gplv2(desc)
5
+ year=Time.now.year
6
+
7
+ str=<<HEREDOC
8
+ #{desc}
9
+
10
+ Copyright (C) 2009-#{year} Takayasu Hayashi(T_H) (email: joe.ko9ji@gmail.com )
11
+
12
+ This program is free software; you can redistribute it and/or modify
13
+ it under the terms of the GNU General Public License, version 2, as
14
+ published by the Free Software Foundation.
15
+
16
+ This program is distributed in the hope that it will be useful,
17
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ GNU General Public License for more details.
20
+
21
+ You should have received a copy of the GNU General Public License
22
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
23
+ HEREDOC
24
+
25
+ end
26
+ alias license license_gplv2
data/readme.rb ADDED
@@ -0,0 +1,165 @@
1
+ #coding:utf-8
2
+ def readme
3
+ str=<<eos
4
+ #coding:utf-8
5
+ === 漢詩を作る、平仄や添削したりするのに役立つモジュール、関数をつくりました。
6
+ kansi_valid is a varidator of Han character poem(Kan si).
7
+ Author:: Takayasu Hayashi(林 貴康 joe.ko9ji@gmail.com )
8
+ License::GPL v2
9
+ * 辞書の使用は自己責任でお願いします。辞書は漢太郎の作者、Jigen様の作成された辞書を御許可いただきUTF-8テキストにしてあります。Jigen様、ありがとうございます。間違いがありましたら修正したいと思いますのでご連絡ください。joe.ko9ji@gmail.com
10
+ * Dictionary saved "/dic/dic.txt"UTF-8,about 6800 chars ,made by Jigen Kanou.
11
+ If you resume this,please tell me.
12
+ * 文字コードは UTF-8 ですので、WinXPなどは出力をKconvで変換したり、対応のエディタで見てください。
13
+ ===:Usage 使い方
14
+ # coding:utf-8
15
+ requrie "rubyems" if "RUBY_VERSION"<"1.9"
16
+ require "kansi_valid"
17
+ include Kansi_valid
18
+
19
+ run(port=8880) # => see 127.0.0.1:8880
20
+
21
+ puts kv(generate)
22
+
23
+ #winXPなど、文字コードが shift-jisなどのとき
24
+ require "kconv"
25
+ print Kconv.kconv(Kansi_valid::sample,Kconv::SJIS,Kconv::UTF8)
26
+
27
+ #追記Windows7以降のコンソールで、ruby1.9以降、エラーがでるなら、
28
+ ruby -Ku kansi_valid_script
29
+
30
+ ruby -U kansi_valid_script
31
+
32
+ script内部で
33
+ Encoding.default_external = 'utf-8'
34
+ Encoding.default_internal = 'utf-8'
35
+ をつかってみてください。(Fixed >=0.0.9)
36
+
37
+ === 先ずは有名なサンプルで。
38
+ sample # =>"#偶成 朱熹\n少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声\n"
39
+ #other valid=>"少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声"
40
+ #other valid=>"少年易老学難成 一寸光陰不可軽 未覚池塘春草夢 階前梧葉已秋声"
41
+ #other valid=>"少年易老学難成一寸光陰不可軽未覚池塘春草夢階前梧葉已秋声"
42
+
43
+ ===漢詩ではないサンプル漢詩を機械的に生成します
44
+ samples(10) # =>make many 'Meaningless' poet.
45
+
46
+ * 七言絶句(7を指定)五言絶句(5を指定) make random 'Meaningless' poet(7or5 gon Zekku)
47
+ srand(0);str1 = generate(7) # => "戻里唆双差及援\n罷傷脈拘序周元\n家据弱役露宵屋\n稚守途紅稿軸温"
48
+ srand(0);generate(5) # => "戻里唆双飯\n差猫及硬温\n除慌女収嫁\n枢寂厄痴援"
49
+ * srand は同じ詩を生成するために使用していますので通常は不要
50
+
51
+ ===kansi_valid(String) 絶句ならば禁則評価と辞書の結果表示、research dictionary and answer,validate
52
+ str=kansi_valid(sample)
53
+ # =>#偶成 朱熹
54
+ 少年易老学難成
55
+ 一寸光陰不可軽
56
+ 未覚池塘春草夢
57
+ 階前梧葉已秋声
58
+
59
+ # 庚 平起
60
+ #篠●先○陌●皓●覚●寒◇庚○
61
+ #質●願●陽○侵◇物◇哿●庚◇
62
+ #未●覚●支○陽○真○皓●東◇
63
+ #佳○先○虞◇葉●紙●尤○庚○
64
+ #Valid 絶句(Ver0.0.6)
65
+ #2013-01-03 22:58:18 +0900
66
+
67
+ #少:●:篠:嘯:ショウ:すくない すこし わかい
68
+ #年:○:一先::ネン:とし よわい みのり
69
+ 以下省略#
70
+ (ver 0.0.8よりValid表示基準を見直し)
71
+
72
+ kv(sample) # =>同上、 same above
73
+ valid(sample) # =>同上、 same above
74
+
75
+ ==html化して、wiktionaryなどで文字を調べられるようにするなら、
76
+ wik=to_wiktionary(str)
77
+ open("kansi.htm","w"){|io| io.print wik}
78
+ などとすると、html埋め込みデータができます。(ヘッダ等は必要なら適宜入れてください。)
79
+ firefox kansi.htm
80
+ などして、見てください
81
+
82
+ === 文字列が絶句であれば true を返す
83
+ valid?(sample) # =>true (絶句が正しいならtrue。)
84
+ (両韻・畳字はtrueを返せない)
85
+ kv_bool(sample) # =>同上、 same above
86
+
87
+ ===漢詩でないものも第二水準漢字程度まで調べられます。日本の国字<峠辻>なども調べられますが、絶句の評価はできません。
88
+ dic("漢字辞典") # =>文字列を調べる。普通こちら、Simple dictionary using Dic[]
89
+ # =>"漢:●:翰::カン:国名 あや から
90
+ 字:●:寘::ジ:あざ あざな じ
91
+ 辞:○:四支::ジ:やめる ことば ことわる
92
+ 典:●:銑::テン:ふみ のり つかさどる
93
+ "
94
+ Dic["漢"] # =>単漢字を調べる、Character Hash Dictionary(Author Jigen Kanou,in Kantarou)
95
+ # =>["漢", "413", "", "0", "●", "翰", "去声", "", "カン", "",
96
+ "国名 あや から", "3441", "2033", "13", "水艸口夫漢", "0"]
97
+
98
+ === 辞書の音訓などから調べる場合は search を使います
99
+ search("かえで") # =>Dicの内容から該当する漢字のハッシュをつくる
100
+ # =>{"楓"=>["楓", "2440", "", "0", "○", "一東", "上平", "", "フウ", "",
101
+ "かえで", "4976", "4186", "13", "木風几丿虫", "0"],
102
+ "槭"=>["槭", "4166", "", "0", "●", "屋", "入声", "", "セキ", "",
103
+ "かえで", "5C65", "6069", "15", "木戚戈上小", "0"]}
104
+ ===平韻の字表の配列です
105
+ inji # =>平韻の配列表(inji[x],x=0..29)
106
+ (inji[0]が一東です)
107
+  inji[29] # =>"咸銜鹹緘岩巌杉衫凡鑑函監讒帆"
108
+ ===常用漢字の配列です(約1945字)
109
+ Jouyou=["哀","愛",..,"湾","腕"]
110
+ ===辞書漢字の配列です(約6715字、国字など含む。かな・記号類は除外してあります。)
111
+ Ji =["亜","唖",..,"禔","赶"]
112
+
113
+ ===平仄韻からランダムに文字をあてはめます
114
+ poetter("常国◇○●\n◇○○●◎\n○○●○●\n○●●○◎",[Jouyou,inji[0]])
115
+ # =>"常国雇坪坂\n飲戯眠分崇\n諸番襲硝看\n評緯越然籠"
116
+ zekku_list # =>絶句として適した文字を当てはめる配列
117
+ kougo("◇●常国○◎") # =>"囚故常国挑琴\n#侵" 平仄式から字を充て、最後に韻をコメント。
118
+ # "◇不問 ●仄 ○平 ◎韻"
119
+ kougo() # =>無意味な香語調を生成します、make random 'Meaningless' "kougo".
120
+
121
+
122
+ hyousoku("菩薩") # =>"虞◇曷●" (韻と平仄式を返す)
123
+ hyosoku("菩薩") # =>同上、 same above
124
+
125
+ ===漢詩バリデータ(ルールどおりか評価する)ができるまで…
126
+ 漢詩のルールにしたがっているかをチェックするスクリプト
127
+ 記号
128
+ 平=韻+○
129
+ 仄=韻+●
130
+ 両韻=◇
131
+ 国字など=■
132
+ それ以外=?
133
+
134
+ チェック可能漢詩:
135
+ 七言絶句
136
+ 五言絶句
137
+
138
+ チェック項目
139
+ 押韻、おういん(重複禁)、踏み落とし(三句目)
140
+ 二四不動、にしふどう(挟み平(転句)はOK)
141
+ 二六対、にろくつい(挟み平(転句)はOK)
142
+ 下三連禁、あさんれんきん
143
+ 挟み平(転句はOK)
144
+ 二弧平禁(七言は四弧平禁)
145
+ 冒韻禁,韻字の句内での重複(畳字なども未チェック)
146
+
147
+ 他のチェック事項
148
+
149
+ 平起、仄起
150
+
151
+ やりたいこと
152
+ 読みかた(音、訓)# =>漢字辞書などへ転送など。
153
+ できてないこと
154
+ 対句,畳字など技法のチェック
155
+ 両韻の振り分けなど(◇でしか対応できない。基本1字1韻対応となる。)
156
+ たぶんチェックできないこと
157
+ 2、2、3(五言は2,3)の字で区切られているか
158
+ 多少目をつむるなどの融通はきかない。
159
+ 次は詩語表を登録したり、句のまとまりで当てはめられるようにしたい。
160
+
161
+ <h3>更新履歴</h3>
162
+ #{Kansi_valid::CHENGE_LOG}
163
+ eos
164
+
165
+ end
File without changes
data/usual.rb ADDED
@@ -0,0 +1,6 @@
1
+ if RUBY_VERSION < "1.9.0"
2
+ $KCODE="u"
3
+ require "rubygems"
4
+ end
5
+ require "kansi_valid"
6
+ include Kansi_valid