1 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
3 $LOAD_PATH << "../../lib" if $0 == __FILE__
6 require "chise/network"
9 class MakeGraph #==================================実務的な処理を引き受ける。
10 #GRAPHVIZ_CMD = 0 # CLI
11 GRAPHVIZ_CMD = 1 # OLE
12 GRAPHVIZ_TYPE = Graphviz::TWOPI
13 #GRAPHVIZ_TYPE = Graphviz::NEATO
18 @kl = KanjiList.instance
19 @hn = KanjiNetwork.new
29 open("gakunen.html", "w"){|out|
33 out.print %Q|#{typestr}グラフ\n|
34 (1..6).each {|gakunen|
35 out.print %Q|小学#{gakunen}年生 |
36 base = "han-#{type}-#{gakunen}-all"
37 out.print %Q|<a href="#{base}.svg">all</a> |
39 base = "han-#{type}-#{gakunen}-#{kubun}"
40 out.print %Q|<a href="#{base}.svg">#{kubun}</a> |
45 out.print %Q|</pre>\n|
51 @hn.make_network(@kl.awase(0))
52 # @hn.make_network(@kl.awase(1))
53 @hn.out("min.dot") #途中状態を保存
54 #graphviz(Graphviz::NEATO, "min.dot", "min.svg")
55 graphviz(GRAPHVIZ_TYPE, "min.dot", "min.svg")
59 (START_GAKUNEN..END_GAKUNEN).each {|gakunen|
61 make_dot(gakunen, kubun)
63 make_svg(type, gakunen, kubun)
66 make_dot(gakunen, nil)
68 unless type == 2 && 5 <= gakunen
69 make_svg(type, gakunen, nil)
75 def gaku_name(gakunen, kubun=nil)
76 return "#{gakunen}nen-all" if kubun.nil?
77 return "#{gakunen}nen-#{kubun}"
80 def make_dot(gakunen, kubun=nil) #Graphvizのtype, 学年, 象形、指示などの区分
82 list = @kl.kyoiku(1..gakunen, kubun)
83 @hn.make_network(list)
84 dotf = "list-"+gaku_name(gakunen, kubun)+".dot"
85 @hn.out(dotf) #途中状態を保存する
89 def make_svg(type, gakunen, kubun=nil) #Graphvizのtype, 学年, 象形、指示などの区分
90 g = gaku_name(gakunen, kubun)
91 dotf = "list-"+g+".dot"
92 svgf = "han-"+g+"-"+GraphvizCLI::NAMES[type]+".svg"
93 graphviz(type, dotf, svgf)
98 Dir.glob("*.dot").each {|inf|
99 out = inf.sub(/.dot$/, ".svg")
100 type = 1 if inf =~ /^han-1/
101 type = 2 if inf =~ /^han-2/
102 graphviz(type, inf, out)
106 def graphviz(type, inf, out)
107 gv = GraphvizCLI.new() if GRAPHVIZ_CMD == 0
108 gv = GraphvizOLE.new() if GRAPHVIZ_CMD == 1