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