Class: RSGenerator

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/rsyntaxtree.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ RSGenerator

Returns a new instance of RSGenerator.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/rsyntaxtree.rb', line 48

def initialize(params = {})
 new_params = {}
 params.each do |key, value|
   case key
   when "data"
     data = URI.unescape(value)
     data  = data.gsub('-AMP-', '&').gsub('-PRIME-', "'").gsub('-SCOLON-', ';')
     new_params[key] = data
   when "symmetrize", "color", "autosub"
     new_params[key] = value == "on"? true : false
   when "fontsize"
     new_params[key] = value.to_i
   when "fontstyle"
     if value == "sans-serif"
       new_params["font"] = FONT_DIR + "/DroidSans.ttf"
     elsif value == "serif"
       new_params["font"] = FONT_DIR + "/DroidSerif-Regular.ttf"
     elsif value == "jp-gothic"
       new_params["font"] = FONT_DIR + "/ipagp.ttf"
     elsif value == "jp-mincho"
       new_params["font"] = FONT_DIR + "/ipamp.ttf"
     elsif value == "cjk"
       new_params["font"] = FONT_DIR + "/wqy-zenhei.ttf"
     elsif value == "aru"
       new_params["font"] = FONT_DIR + "/ArialUnicode.ttf"
     elsif value == "tnr"
       new_params["font"] = FONT_DIR + "/TimesNewRoman.ttf"
     end
   else
     new_params[key] = value
   end
 end
 
 
 @params = {
   "symmetrize" => true,
   "color"      => true,
   "autosub"    => false,
   "fontsize"   => 18,
   "format"     => "png",
   "leafstyle"   => "auto",
   "font"        => FONT_DIR + "/ipagp.ttf",
   "filename"   => "syntree",
   "data"       => "",
 }
 
 @params.merge! new_params
end

Class Method Details

.check_data(text) ⇒ Object



97
98
99
100
101
# File 'lib/rsyntaxtree.rb', line 97

def self.check_data(text)
   # StringParser.validate_text(text)     
   sp = StringParser.new(text)
   sp.valid?
end

Instance Method Details

#draw_pdfObject



108
109
110
111
# File 'lib/rsyntaxtree.rb', line 108

def draw_pdf
  @params["format"] = "pdf"
  draw_tree
end

#draw_pngObject



103
104
105
106
# File 'lib/rsyntaxtree.rb', line 103

def draw_png
  @params["format"] = "png"
  draw_tree
end

#draw_svgObject



123
124
125
126
127
128
129
130
131
132
# File 'lib/rsyntaxtree.rb', line 123

def draw_svg
  @params["format"] = "svg"
  sp = StringParser.new(@params["data"].gsub('&', '&'))
  sp.parse
  sp.auto_subscript if @params["autosub"]
  elist = sp.get_elementlist
  graph = SVGGraph.new(elist, 
    @params["symmetrize"], @params["color"], @params["leafstyle"], @params["font"], @params["fontsize"])
  graph.svg_data
end

#draw_treeObject



113
114
115
116
117
118
119
120
121
# File 'lib/rsyntaxtree.rb', line 113

def draw_tree
  sp = StringParser.new(@params["data"])
  sp.parse
  sp.auto_subscript if @params["autosub"]
  elist = sp.get_elementlist
  graph = TreeGraph.new(elist, 
    @params["symmetrize"], @params["color"], @params["leafstyle"], @params["font"], @params["fontsize"], @params["format"])
  graph.to_blob(@params["format"])
end