2 # MakeGraph routine by eto 2003-0305
3 # $Id: makegraph.rb,v 1.1 2003-11-10 08:11:47 eto Exp $
4 # Copyright (C) 2002-2003 Kouichirou Eto, All rights reserved.
5 # This is free software with ABSOLUTELY NO WARRANTY.
6 # You can redistribute it and/or modify it under the terms of the GNU GPL2.
8 $LOAD_PATH << '../../src' if $0 == __FILE__
11 require 'chise/network'
14 class MakeGraph #======================================================================実務的な処理を引き受ける。
15 #GRAPHVIZ_CMD = 0 # CLI
16 GRAPHVIZ_CMD = 1 # OLE
17 GRAPHVIZ_TYPE = Graphviz::TWOPI
18 #GRAPHVIZ_TYPE = Graphviz::NEATO
23 @kl = KanjiList.instance
24 @hn = KanjiNetwork.new
32 open("gakunen.html", "w"){|out|
36 out.print %Q|#{typestr}グラフ\n|
37 (1..6).each {|gakunen|
38 out.print %Q|小学#{gakunen}年生 |
39 base = "han-#{type}-#{gakunen}-all"
40 out.print %Q|<a href="#{base}.svg">all</a> |
42 base = "han-#{type}-#{gakunen}-#{kubun}"
43 out.print %Q|<a href="#{base}.svg">#{kubun}</a> |
48 out.print %Q|</pre>\n|
53 @hn.make_network(@kl.awase(0))
54 # @hn.make_network(@kl.awase(1))
55 @hn.out("min.dot") #途中状態を保存
56 #graphviz(Graphviz::NEATO, "min.dot", "min.svg")
57 graphviz(GRAPHVIZ_TYPE, "min.dot", "min.svg")
60 (START_GAKUNEN..END_GAKUNEN).each {|gakunen|
62 make_dot(gakunen, kubun)
64 make_svg(type, gakunen, kubun)
67 make_dot(gakunen, nil)
69 unless type == 2 && 5 <= gakunen
70 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}"
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) #途中状態を保存する
87 def make_svg(type, gakunen, kubun=nil) #Graphvizのtype, 学年, 象形、指示などの区分
88 g = gaku_name(gakunen, kubun)
89 dotf = "list-"+g+".dot"
90 svgf = "han-"+g+"-"+GraphvizCLI::NAMES[type]+".svg"
91 graphviz(type, dotf, svgf)
95 Dir.glob("*.dot").each {|inf|
96 out = inf.sub(/.dot$/, '.svg')
97 type = 1 if inf =~ /^han-1/
98 type = 2 if inf =~ /^han-2/
99 graphviz(type, inf, out)
102 def graphviz(type, inf, out)
103 gv = GraphvizCLI.new() if GRAPHVIZ_CMD == 0
104 gv = GraphvizOLE.new() if GRAPHVIZ_CMD == 1
119 #----------------------------------------------------------------------end.