rsyntaxtree 0.5.1 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -27,7 +27,7 @@ For the command-line interface, type `$rsyntaxtree -h` after installation. Here'
27
27
  where [options] are:
28
28
  --outdir, -o <s>: Output directory (default: present working directory) (default: ./)
29
29
  --format, -f <s>: Output format: png, pdf, or svg (default: png)
30
- --leafstyle, -l <s>: visual style of tree leaves: triangle, bar, or nothing (default: triangle)
30
+ --leafstyle, -l <s>: visual style of tree leaves: auto, triangle, bar, or nothing (default: auto)
31
31
  --fontstyle, -n <s>: Font style: sans-serif, serif, jp-gothic, jp-mincho, cjk (default: cjk)
32
32
  --font, -t <s>: Path to a ttf font used to generate tree
33
33
  --fontsize, -s <i>: Font size: 8-20 (default: 16)
@@ -39,7 +39,9 @@ For the command-line interface, type `$rsyntaxtree -h` after installation. Here'
39
39
 
40
40
  ### Tips
41
41
 
42
- Every branch or leaf of a tree must belong to a node. To create a node, place a label right next to the opening bracket. Arbitrary number of branches can follow with a preceding space. When a node has one and only one leaf and the leaf contains more than one space characters, the node is treated as a phrase and a triangle (not just a vertical bar) will be between the node label and the leaf).
42
+ Every branch or leaf of a tree must belong to a node. To create a node, place a label right next to the opening bracket. Arbitrary number of branches can follow with a preceding space.
43
+
44
+ There are several modes in which the shape of connectors between a terminal node and its leaf are drawn differently (auto, triangle, bar, and nothing). In auto mode, a triangle is used if the leaf contains one or more spaces inside (i.e. if it&#8217;s a phrase), but if it contains no spaces (i.e. if it is just a word), a straight bar will be drawn instead (unless the leaf contains a "^" symbol at the end which makes it a single-word phrase).
43
45
 
44
46
  You can put a subscript to any node by putting the _ character between the main label and the subscript. For example, NP_TOP will be rendered as NP<sub>TOP</sub>. Or you can select the &#8220;Auto subscript&#8221; option so that nodes of the same label will be automatically numbered. (e.g. NP<sub>1</sub>, NP<sub>2</sub>)</p>
45
47
 
@@ -47,11 +49,11 @@ You can put a subscript to any node by putting the _ character between the main
47
49
 
48
50
  Bracket notation (auto-subscript-on):
49
51
 
50
- [NP [NP [ART a] [N table]] [PP [P near] [NP [ART the] [N door]]]]
52
+ [S [NP RSyntaxTree^][VP [V generates][NP multilingual syntax trees]]]
51
53
 
52
54
  Resulting PNG
53
55
 
54
- ![a table near the door](http://yohasebe.com/img/rsyntaxtree_example.png)
56
+ ![RSyntaxTree generates multilingual syntax trees](http://yohasebe.com/img/rsyntaxtree_example3.png)
55
57
 
56
58
  ### Development
57
59
 
data/bin/rsyntaxtree CHANGED
@@ -12,7 +12,7 @@ opts = Trollop::options do
12
12
  RSyntaxTree, (linguistic) syntax tree generator written in Ruby.
13
13
 
14
14
  Usage:
15
- rsyntaxtree [options] "[NP [N bracket] [NP notation]]]"
15
+ rsyntaxtree [options] "[VP [VP [V set] [NP bracket notation]] [ADV here]]"
16
16
  where [options] are:
17
17
  EOS
18
18
 
@@ -20,8 +20,8 @@ EOS
20
20
  :default => "./"
21
21
  opt :format, "Output format: png, pdf, or svg",
22
22
  :default => "png"
23
- opt :leafstyle, "visual style of tree leaves: triangle, bar, or nothing",
24
- :default => "triangle"
23
+ opt :leafstyle, "visual style of tree leaves: auto, triangle, bar, or nothing",
24
+ :default => "auto"
25
25
  opt :fontstyle, "Font style (available when ttf font is specified): sans-serif, serif, jp-gothic, jp-mincho, cjk",
26
26
  :default => "cjk"
27
27
  opt :font, "Path to a ttf font used to generate tree (optional)", :type => String
@@ -37,7 +37,7 @@ end
37
37
 
38
38
  Trollop::die :outdir, "must be an exsting directory path" unless FileTest::directory?(opts[:outdir])
39
39
  Trollop::die :format, "must be png or svg" unless /\A(png|pdf|svg)\z/ =~ opts[:format]
40
- Trollop::die :leafstyle, "must be triangle, bar, or nothing" unless /\A(triangle|bar|nothing)\z/ =~ opts[:leafstyle]
40
+ Trollop::die :leafstyle, "must be auto, triangle, bar, or nothing" unless /\A(auto|triangle|bar|nothing)\z/ =~ opts[:leafstyle]
41
41
  Trollop::die :fontstyle, "must be sans-serif, serif, jp-gothic, jp-mincho, or cjk" unless /\A(sans\-serif|serif|jp\-gothic|jp\-mincho|cjk)\z/ =~ opts[:fontstyle]
42
42
  Trollop::die :font, "must be path to an existing ttf font" if opts[:font] && !File::exists?(opts[:font])
43
43
  Trollop::die :fontsize, "must be in the range 8-20" unless opts[:fontsize] >= 8 && opts[:fontsize] <= 20
@@ -33,15 +33,22 @@ ETYPE_LEAF = 2
33
33
 
34
34
  class Element
35
35
 
36
- attr_accessor :id, :parent, :type, :content, :level, :width, :indent
37
- def initialize(id = 0, parent = 0, content = NULL, level = 0, type = ETYPE_LEAF)
36
+ attr_accessor :id, :parent, :type, :content, :level, :width, :indent, :triangle
37
+ def initialize(id = 0, parent = 0, content = "", level = 0, type = ETYPE_LEAF)
38
38
  @id = id # Unique element id
39
39
  @parent = parent # Parent element id
40
40
  @type = type # Element type
41
- @content = content.strip # The actual element content
42
41
  @level = level # Element level in the tree (0=top etc...)
43
42
  @width = 0 # Width of the element in pixels
44
43
  @indent = 0 # Drawing offset
44
+ # content = content.strip
45
+ if /\A.+\^\z/ =~ content.strip
46
+ @content = content.gsub("^"){""} # The actual element content
47
+ @triangle = true # draw triangle instead of stright bar when in auto mode
48
+ else
49
+ @content = content.gsub("^"){""} # The actual element content
50
+ @triangle = false # draw triangle instead of stright bar when in auto mode
51
+ end
45
52
  end
46
53
 
47
54
  # Debug helper function
@@ -33,9 +33,10 @@ include Magick
33
33
 
34
34
  # constant variables are already set in tree_graph.rb
35
35
 
36
- class SVGGraph
37
36
 
38
- def initialize(e_list, symmetrize = true, color = true, leafstyle = "triangle",
37
+ class SVGGraph
38
+
39
+ def initialize(e_list, symmetrize = true, color = true, leafstyle = "auto",
39
40
  font = "Helvetica", font_size = 10, simple = false)
40
41
 
41
42
  # Store parameters
@@ -52,7 +53,7 @@ class SVGGraph
52
53
  @e_height = @font_size + E_PADD * 2
53
54
  h = @e_list.get_level_height
54
55
  w = calc_level_width(0)
55
- w_px = w + B_SIDE * 2
56
+ w_px = w + B_SIDE
56
57
  h_px = h * @e_height + (h-1) * (V_SPACE + @font_size) + B_TOPBOT * 2
57
58
  @height = h_px
58
59
  @width = w_px
@@ -210,21 +211,25 @@ EOD
210
211
  end
211
212
 
212
213
  # Draw a triangle between child/parent elements
213
- def triangle_to_parent(fromX, fromY, fromW, toW, textW)
214
+ def triangle_to_parent(fromX, fromY, fromW, toW, textW, symmetrize = true)
214
215
  if (fromY == 0)
215
216
  return
216
217
  end
217
-
218
+
218
219
  toX = fromX
219
-
220
- fromTop = row2px(fromY)
221
-
222
220
  fromCenter = (fromX + fromW / 2 + B_SIDE)
223
- fromLeft1 = (fromCenter + textW / 2)
224
- fromLeft2 = (fromCenter - textW / 2)
225
-
221
+
222
+ fromTop = row2px(fromY).ceil
223
+ fromLeft1 = (fromCenter + textW / 2).ceil
224
+ fromLeft2 = (fromCenter - textW / 2).ceil
226
225
  toBot = (row2px(fromY - 1) + @e_height)
227
- toLeft = (toX + toW / 2 + B_SIDE)
226
+
227
+ if symmetrize
228
+ toLeft = (toX + textW / 2 + B_SIDE)
229
+ else
230
+ toLeft = (toX + textW / 2 + B_SIDE * 3)
231
+ end
232
+
228
233
  polygon_data = @polygon_styles.sub(/X1/, fromLeft1.ceil.to_s)
229
234
  polygon_data = polygon_data.sub(/Y1/, fromTop.ceil.to_s)
230
235
  polygon_data = polygon_data.sub(/X2/, fromLeft2.ceil.to_s)
@@ -233,6 +238,8 @@ EOD
233
238
  @tree_data += polygon_data.sub(/Y3/, toBot.ceil.to_s)
234
239
  end
235
240
 
241
+
242
+
236
243
  # If a node element text is wider than the sum of it's
237
244
  # child elements, then the child elements need to
238
245
  # be resized to even out the space. This function
@@ -345,10 +352,17 @@ EOD
345
352
  draw_element(x, i, cw, j.content, j.type)
346
353
  if(j.parent != 0 )
347
354
  words = j.content.split(" ")
348
- unless @leafstyle == "nothing" && ETYPE_LEAF == j.type
349
- if (@leafstyle == "triangle" && ETYPE_LEAF == j.type && x == parent_indent && words.length > 1)
355
+ unless @leafstyle == "nothing" && ETYPE_LEAF == j.type
356
+ if (@leafstyle == "triangle" && ETYPE_LEAF == j.type && x == parent_indent && words.length > 0)
350
357
  txt_width = img_get_txt_width(j.content, @font, @font_size)
351
358
  triangle_to_parent(x, i, cw, @e_list.get_element_width(j.parent), txt_width)
359
+ elsif (@leafstyle == "auto" && ETYPE_LEAF == j.type && x == parent_indent)
360
+ if words.length > 1 || j.triangle
361
+ txt_width = img_get_txt_width(j.content, @font, @font_size)
362
+ triangle_to_parent(x, i, cw, @e_list.get_element_width(j.parent), txt_width, @symmetrize)
363
+ else
364
+ line_to_parent(x, i, cw, @e_list.get_indent(j.parent), @e_list.get_element_width(j.parent))
365
+ end
352
366
  else
353
367
  line_to_parent(x, i, cw, @e_list.get_indent(j.parent), @e_list.get_element_width(j.parent))
354
368
  end
@@ -384,10 +398,17 @@ EOD
384
398
  k = @e_list.get_id(child)
385
399
  words = k.content.split(" ")
386
400
  dw = img_get_txt_width(k.content, @font, @font_size)
387
- unless @leafstyle == "nothing" && ETYPE_LEAF == k.type
388
- if (@leafstyle == "triangle" && ETYPE_LEAF == k.type && k.indent == j.indent && words.length > 1)
401
+ unless @leafstyle == "nothing" && ETYPE_LEAF == k.type
402
+ if (@leafstyle == "triangle" && ETYPE_LEAF == k.type && k.indent == j.indent && words.length > 0)
389
403
  txt_width = img_get_txt_width(k.content, @font, @font_size)
390
404
  triangle_to_parent(k.indent, curlevel + 1, dw, tw, txt_width)
405
+ elsif (@leafstyle == "auto" && ETYPE_LEAF == k.type && k.indent == j.indent)
406
+ if words.length > 1 || k.triangle
407
+ txt_width = img_get_txt_width(k.content, @font, @font_size)
408
+ triangle_to_parent(k.indent, curlevel + 1, dw, tw, txt_width)
409
+ else
410
+ line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
411
+ end
391
412
  else
392
413
  line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
393
414
  end
@@ -422,10 +443,17 @@ EOD
422
443
  words = k.content.split(" ")
423
444
  dw = img_get_txt_width(k.content, @font, @font_size)
424
445
  unless @leafstyle == "nothing" && ETYPE_LEAF == k.type
425
- if (@leafstyle == "triangle" && ETYPE_LEAF == k.type && words.length > 1)
446
+ if (@leafstyle == "triangle" && ETYPE_LEAF == k.type && words.length > 0)
426
447
  txt_width = img_get_txt_width(k.content, @font, @font_size)
427
448
  triangle_to_parent(k.indent, curlevel + 1, dw,
428
449
  @e_list.get_element_width(k.parent), txt_width)
450
+ elsif (@leafstyle == "auto" && ETYPE_LEAF == k.type)
451
+ if words.length > 1 || k.triangle
452
+ txt_width = img_get_txt_width(k.content, @font, @font_size)
453
+ triangle_to_parent(k.indent, curlevel + 1, dw, tw, txt_width)
454
+ else
455
+ line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
456
+ end
429
457
  else
430
458
  line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
431
459
  end
@@ -42,7 +42,7 @@ B_TOPBOT = 5
42
42
 
43
43
  class TreeGraph
44
44
 
45
- def initialize(e_list, symmetrize = true, color = true, terminal = "triangle",
45
+ def initialize(e_list, symmetrize = true, color = true, terminal = "auto",
46
46
  font = "Helvetica", font_size = 10, simple = false)
47
47
 
48
48
  # Store parameters
@@ -113,7 +113,7 @@ class TreeGraph
113
113
 
114
114
  # Add the element into the tree (draw it)
115
115
  def draw_element(x, y, w, string, type)
116
-
116
+ string = string.sub(/\^\z/){""}
117
117
  # Calculate element dimensions and position
118
118
  if (type == ETYPE_LEAF) and @terminal == "nothing"
119
119
  top = row2px(y - 1) + (@font_size * 1.5)
@@ -201,7 +201,7 @@ class TreeGraph
201
201
  end
202
202
 
203
203
  # Draw a triangle between child/parent elements
204
- def triangle_to_parent(fromX, fromY, fromW, toX, textW)
204
+ def triangle_to_parent(fromX, fromY, fromW, toX, textW, symmetrize = true)
205
205
  if (fromY == 0)
206
206
  return
207
207
  end
@@ -213,8 +213,12 @@ class TreeGraph
213
213
  fromLeft1 = (fromCenter + textW / 2).ceil
214
214
  fromLeft2 = (fromCenter - textW / 2).ceil
215
215
  toBot = (row2px(fromY - 1) + @e_height)
216
- toLeft = (toX + textW / 2 + B_SIDE * 2)
217
-
216
+ if symmetrize
217
+ toLeft = (toX + textW / 2 + B_SIDE)
218
+ else
219
+ toLeft = (toX + textW / 2 + B_SIDE * 3)
220
+ end
221
+
218
222
  @gc.fill("none")
219
223
  @gc.stroke @col_line
220
224
  @gc.stroke_width 1
@@ -334,9 +338,16 @@ class TreeGraph
334
338
  if(j.parent != 0 )
335
339
  words = j.content.split(" ")
336
340
  unless @terminal == "nothing" && ETYPE_LEAF == j.type
337
- if (@terminal == "triangle" && ETYPE_LEAF == j.type && x == parent_indent && words.length > 1)
341
+ if (@terminal == "triangle" && ETYPE_LEAF == j.type && x == parent_indent && words.length > 0)
338
342
  txt_width = img_get_txt_width(j.content, @font, @font_size)
339
343
  triangle_to_parent(x, i, cw, @e_list.get_element_width(j.parent), txt_width)
344
+ elsif (@terminal == "auto" && ETYPE_LEAF == j.type && x == parent_indent)
345
+ if words.length > 1 || j.triangle
346
+ txt_width = img_get_txt_width(j.content, @font, @font_size)
347
+ triangle_to_parent(x, i, cw, @e_list.get_element_width(j.parent), txt_width, @symmetrize)
348
+ else
349
+ line_to_parent(x, i, cw, @e_list.get_indent(j.parent), @e_list.get_element_width(j.parent))
350
+ end
340
351
  else
341
352
  line_to_parent(x, i, cw, @e_list.get_indent(j.parent), @e_list.get_element_width(j.parent))
342
353
  end
@@ -374,9 +385,16 @@ class TreeGraph
374
385
  words = k.content.split(" ")
375
386
  dw = img_get_txt_width(k.content, @font, @font_size)
376
387
  unless @terminal == "nothing" && ETYPE_LEAF == k.type
377
- if (@terminal == "triangle" && ETYPE_LEAF == k.type && k.indent == j.indent && words.length > 1)
388
+ if (@terminal == "triangle" && ETYPE_LEAF == k.type && k.indent == j.indent && words.length > 0)
378
389
  txt_width = img_get_txt_width(k.content, @font, @font_size)
379
390
  triangle_to_parent(k.indent, curlevel + 1, dw, tw, txt_width)
391
+ elsif (@terminal == "auto" && ETYPE_LEAF == k.type && k.indent == j.indent)
392
+ if words.length > 1 || k.triangle
393
+ txt_width = img_get_txt_width(k.content, @font, @font_size)
394
+ triangle_to_parent(k.indent, curlevel + 1, dw, tw, txt_width)
395
+ else
396
+ line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
397
+ end
380
398
  else
381
399
  line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
382
400
  end
@@ -411,10 +429,17 @@ class TreeGraph
411
429
  words = k.content.split(" ")
412
430
  dw = img_get_txt_width(k.content, @font, @font_size)
413
431
  unless @terminal == "nothing" && ETYPE_LEAF == k.type
414
- if (@terminal == "triangle" && ETYPE_LEAF == k.type && words.length > 1)
432
+ if (@terminal == "triangle" && ETYPE_LEAF == k.type && words.length > 0)
415
433
  txt_width = img_get_txt_width(k.content, @font, @font_size)
416
434
  triangle_to_parent(k.indent, curlevel + 1, dw,
417
435
  @e_list.get_element_width(k.parent), txt_width)
436
+ elsif (@terminal == "auto" && ETYPE_LEAF == k.type)
437
+ if words.length > 1 || k.triangle
438
+ txt_width = img_get_txt_width(k.content, @font, @font_size)
439
+ triangle_to_parent(k.indent, curlevel + 1, dw, @e_list.get_element_width(k.parent), txt_width)
440
+ else
441
+ line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
442
+ end
418
443
  else
419
444
  line_to_parent(k.indent, curlevel + 1, dw, j.indent, tw)
420
445
  end
@@ -1,4 +1,4 @@
1
1
  module RSyntaxTree
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.5"
3
3
  end
4
4
 
data/lib/rsyntaxtree.rb CHANGED
@@ -68,6 +68,10 @@ class RSGenerator
68
68
  new_params["font"] = FONT_DIR + "/ipamp.ttf"
69
69
  elsif value == "cjk"
70
70
  new_params["font"] = FONT_DIR + "/wqy-zenhei.ttf"
71
+ elsif value == "aru"
72
+ new_params["font"] = FONT_DIR + "/ArialUnicode.ttf"
73
+ elsif value == "tnr"
74
+ new_params["font"] = FONT_DIR + "/TimesNewRoman.ttf"
71
75
  end
72
76
  else
73
77
  new_params[key] = value
@@ -81,7 +85,7 @@ class RSGenerator
81
85
  "autosub" => false,
82
86
  "fontsize" => 18,
83
87
  "format" => "png",
84
- "leafstyle" => "triangle",
88
+ "leafstyle" => "auto",
85
89
  "font" => FONT_DIR + "/ipagp.ttf",
86
90
  "filename" => "syntree",
87
91
  "data" => "",
@@ -17,13 +17,14 @@ $(function(){
17
17
  }
18
18
 
19
19
  function draw_graph(data){
20
- $("#result").html("<img id='tree_image'>");
21
20
  $.ajax({
22
21
  url: 'draw_png',
23
22
  type: 'POST',
24
23
  data: make_params(data),
25
- success: function (png) {
26
- $('#tree_image').attr('src', 'data:image/png;base64, ' + png);
24
+ success: function (raw_data) {
25
+ var png_img = 'data:image/png;base64, ' + raw_data;
26
+ $("#result").html("<img id='tree_image'>");
27
+ $('#tree_image').attr('src', png_img);
27
28
  }
28
29
  });
29
30
  }
data/views/footer.haml CHANGED
@@ -1,3 +1,3 @@
1
1
  .footer
2
2
  %p
3
- &copy; Yoichiro Hasebe 2012
3
+ &copy; Yoichiro Hasebe 2013
data/views/index.haml CHANGED
@@ -11,11 +11,12 @@
11
11
  #alert{:style => "height:20px;"}
12
12
  .span12
13
13
  %textarea.span12{:id => "data", :cols => 100, :style => "font-size: 11pt; height: 4em;line-height: 140%;"}
14
- [S [NP RSyntaxTree][VP [V generates][NP multilingual syntax trees]]]
14
+ [S [NP RSyntaxTree^][VP [V generates][NP multilingual syntax trees]]]
15
15
  .row
16
16
  .span2
17
17
  %h4 Leaf-style
18
18
  %select{:name => "leafstyle", :style => "width:110px;"}
19
+ %option{:value => "auto"}Auto
19
20
  %option{:value => "triangle"}Triangle
20
21
  %option{:value => "bar"}Bar
21
22
  %option{:value => "nothing"}Nothing
@@ -27,6 +28,9 @@
27
28
  %option{:value => "jp-gothic"}JP-Gothic
28
29
  %option{:value => "jp-mincho"}JP-Mincho
29
30
  %option{:value => "cjk"}CJK
31
+ %option{:value => "cjk"}CJK
32
+ %option{:value => "aru"}ARU
33
+ %option{:value => "tnr"}TNR
30
34
  .span2
31
35
  %h4 Font-size
32
36
  %select{:name => "fontsize", :style => "width:60px;"}
@@ -107,8 +111,14 @@
107
111
  %p
108
112
  Every branch or leaf of a tree must belong to a node. To create a node, place a label
109
113
  right next to the opening bracket. Arbitrary number of branches can follow with a
110
- preceding space. When a node has one and only one leaf and the leaf contains more than
111
- one space characters (i.e. when it&#8217;s a phrase).
114
+ preceding space.
115
+
116
+ %p
117
+ There are several modes in which the shape of connectors between a terminal node and its leaf are
118
+ drawn differently (auto, triangle, bar, and nothing). In auto mode, a triangle is used if the leaf
119
+ contains one or more spaces inside (i.e. if it&#8217;s a phrase), but if it contains no spaces (i.e. if
120
+ it is just a word), a straight bar will be drawn instead (unless the leaf contains a "^" symbol at the end
121
+ which makes it a single-word phrase).
112
122
 
113
123
  %p
114
124
  You can put a subscript to any node by putting the _ character between the main label and
data/views/navbar.haml CHANGED
@@ -5,4 +5,4 @@
5
5
  %span.icon-bar
6
6
  %span.icon-bar
7
7
  %span.icon-bar
8
- %a.brand{:href => '/'}RSyntaxTree
8
+ %a.brand{:href => 'https://github.com/yohasebe/rsyntaxtree'}RSyntaxTree 0.6.5
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsyntaxtree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-08 00:00:00.000000000 Z
12
+ date: 2013-05-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rmagick
16
- requirement: &70171855522580 !ruby/object:Gem::Requirement
16
+ requirement: &70313691199800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70171855522580
24
+ version_requirements: *70313691199800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sinatra
27
- requirement: &70171855521840 !ruby/object:Gem::Requirement
27
+ requirement: &70313691199380 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70171855521840
35
+ version_requirements: *70313691199380
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: haml
38
- requirement: &70171855521120 !ruby/object:Gem::Requirement
38
+ requirement: &70313681798040 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70171855521120
46
+ version_requirements: *70313681798040
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: shotgun
49
- requirement: &70171855520620 !ruby/object:Gem::Requirement
49
+ requirement: &70313691228640 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70171855520620
57
+ version_requirements: *70313691228640
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: trollop
60
- requirement: &70171855520160 !ruby/object:Gem::Requirement
60
+ requirement: &70313691228220 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70171855520160
68
+ version_requirements: *70313691228220
69
69
  description: Yet another syntax tree generator made with Ruby and RMagick
70
70
  email:
71
71
  - yohasebe@gmail.com
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubyforge_project: rsyntaxtree
135
- rubygems_version: 1.8.10
135
+ rubygems_version: 1.8.17
136
136
  signing_key:
137
137
  specification_version: 3
138
138
  summary: RSyntaxTree is a graphical syntax tree generator written in Ruby