rsyntaxtree 0.9.3 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 146c2bdc6330d735c979a82c0d83fc1351ad486a49e4e66b833d12adde1a5cd4
4
- data.tar.gz: b45b7ecef617e60aea43f621914653dd0c027710d6f563a401eea5e88b670cf6
3
+ metadata.gz: 367738898f18593ef463368c3203863952240e77c1fc892c9dd6260c7cfcbde2
4
+ data.tar.gz: 86e4f14055f98284df6833e4d6034d3e335402233bf7ac8e000a13366ec75415
5
5
  SHA512:
6
- metadata.gz: daf6f67fcbb8887f7e183b6a0fdf232e7d5027d5b2f5e02dbc48e455eef0581a08a6c3e623c0b1dbea512bed8b2d40e8d76e8d8b01e206671357596e93bf65a3
7
- data.tar.gz: 6343039919b40954e2c37a9b9267143607d0efecb0d81689b8fefcad6b2201b513b2d6d9cade7e55452d9ee5916bc4490415c03c4a5560d798c2889d65142937
6
+ metadata.gz: 99f61da825f4c0bac2aca4c2fbe5a18771385d3b9195b1fd764b88fedd361f75fca4723e945a1f8c81f0f91bdb4f7e140936874d724917a8c9edacddbc6b1d81
7
+ data.tar.gz: e180768322aae5e6aa7f66b746091b8c7c60c635ef9930a17dd275b218c99e592aba01b4b4d565623df281ef5043cb74e4da80c0473506a16f03251da0174a75
data/.gitignore CHANGED
@@ -12,3 +12,5 @@ logs/
12
12
 
13
13
  bin/rsync_code
14
14
  bin/linktree.rb
15
+ tags
16
+ .tags
data/.tags ADDED
@@ -0,0 +1,203 @@
1
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
2
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
3
+ !_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/
4
+ !_TAG_OUTPUT_FILESEP slash /slash or backslash/
5
+ !_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
6
+ !_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/
7
+ !_TAG_PROC_CWD /Users/yohasebe/Dropbox/code/rsyntaxtree/ //
8
+ !_TAG_PROGRAM_AUTHOR Universal Ctags Team //
9
+ !_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
10
+ !_TAG_PROGRAM_URL https://ctags.io/ /official site/
11
+ !_TAG_PROGRAM_VERSION 5.9.0 /60650fac/
12
+ Author README.md /^### Author$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
13
+ BaseGraph lib/rsyntaxtree/base_graph.rb /^ class BaseGraph$/;" c class:RSyntaxTree
14
+ BaseGraph lib/rsyntaxtree/base_graph.rb /^ class BaseGraph$/;" c module:RSyntaxTree
15
+ Development README.md /^### Development$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
16
+ ETYPE_LEAF lib/rsyntaxtree.rb /^ ETYPE_LEAF = 2$/;" C module:RSyntaxTree
17
+ ETYPE_NODE lib/rsyntaxtree.rb /^ ETYPE_NODE = 1$/;" C module:RSyntaxTree
18
+ Element lib/rsyntaxtree/element.rb /^ class Element$/;" c class:RSyntaxTree
19
+ Element lib/rsyntaxtree/element.rb /^ class Element$/;" c module:RSyntaxTree
20
+ ElementList lib/rsyntaxtree/elementlist.rb /^ class ElementList$/;" c class:RSyntaxTree
21
+ ElementList lib/rsyntaxtree/elementlist.rb /^ class ElementList$/;" c module:RSyntaxTree
22
+ Example README.md /^### Example$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
23
+ FONT_DIR lib/rsyntaxtree.rb /^ FONT_DIR = File.expand_path(File.dirname(__FILE__) + "\/..\/fonts")$/;" C module:RSyntaxTree
24
+ FONT_SCALING lib/rsyntaxtree.rb /^ FONT_SCALING = 2$/;" C module:RSyntaxTree
25
+ FontMetrics lib/rsyntaxtree/utils.rb /^module FontMetrics$/;" m
26
+ HEIGHT_CONNECTOR_TO_TEXT lib/rsyntaxtree.rb /^ HEIGHT_CONNECTOR_TO_TEXT = 15$/;" C module:RSyntaxTree
27
+ Installation README.md /^### Installation$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
28
+ License README.md /^### License$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
29
+ Markup lib/rsyntaxtree/markup_parser.rb /^module Markup$/;" m
30
+ MarkupParser lib/rsyntaxtree/markup_parser.rb /^class MarkupParser < Parslet::Parser$/;" c
31
+ MarkupParserTest test/markup_parser_test.rb /^class MarkupParserTest < Minitest::Test$/;" c
32
+ RSGenerator lib/rsyntaxtree.rb /^ class RSGenerator$/;" c class:RSyntaxTree
33
+ RSGenerator lib/rsyntaxtree.rb /^ class RSGenerator$/;" c module:RSyntaxTree
34
+ RSTError lib/rsyntaxtree.rb /^ class RSTError < StandardError$/;" c class:RSyntaxTree
35
+ RSTError lib/rsyntaxtree.rb /^class RSTError < StandardError$/;" c
36
+ RSTError lib/rsyntaxtree/string_parser.rb /^ class RSTError < StandardError$/;" c class:RSyntaxTree
37
+ RSTError lib/rsyntaxtree/string_parser.rb /^class RSTError < StandardError$/;" c
38
+ RSTError lib/rsyntaxtree/utils.rb /^class RSTError < StandardError$/;" c
39
+ RSyntaxTree lib/rsyntaxtree.rb /^module RSyntaxTree$/;" m
40
+ RSyntaxTree lib/rsyntaxtree/base_graph.rb /^module RSyntaxTree$/;" m
41
+ RSyntaxTree lib/rsyntaxtree/element.rb /^module RSyntaxTree$/;" m
42
+ RSyntaxTree lib/rsyntaxtree/elementlist.rb /^module RSyntaxTree$/;" m
43
+ RSyntaxTree lib/rsyntaxtree/string_parser.rb /^module RSyntaxTree$/;" m
44
+ RSyntaxTree lib/rsyntaxtree/svg_graph.rb /^module RSyntaxTree$/;" m
45
+ RSyntaxTree lib/rsyntaxtree/version.rb /^module RSyntaxTree$/;" m
46
+ SUBSCRIPT_CONST lib/rsyntaxtree.rb /^ SUBSCRIPT_CONST = 0.6$/;" C module:RSyntaxTree
47
+ SVGGraph lib/rsyntaxtree/svg_graph.rb /^ class SVGGraph < BaseGraph$/;" c class:RSyntaxTree
48
+ SVGGraph lib/rsyntaxtree/svg_graph.rb /^ class SVGGraph < BaseGraph$/;" c module:RSyntaxTree
49
+ String lib/rsyntaxtree/utils.rb /^class String$/;" c
50
+ StringParser lib/rsyntaxtree/string_parser.rb /^ class StringParser$/;" c class:RSyntaxTree
51
+ StringParser lib/rsyntaxtree/string_parser.rb /^ class StringParser$/;" c module:RSyntaxTree
52
+ Tips README.md /^### Tips$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
53
+ Usage README.md /^### Usage$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
54
+ VERSION lib/rsyntaxtree/version.rb /^ VERSION = "1.0.1"$/;" C module:RSyntaxTree
55
+ Web Interface README.md /^### Web Interface$/;" S chapter:🌲 RSyntaxTree: yet another syntax tree generator in Ruby
56
+ add lib/rsyntaxtree/elementlist.rb /^ def add(element)$/;" f class:RSyntaxTree.ElementList
57
+ add_child lib/rsyntaxtree/element.rb /^ def add_child(child_id)$/;" f class:RSyntaxTree
58
+ add_child lib/rsyntaxtree/element.rb /^ def add_child(child_id)$/;" f class:RSyntaxTree.Element
59
+ all_emoji? lib/rsyntaxtree/utils.rb /^ def all_emoji?$/;" f class:String
60
+ calculate_height lib/rsyntaxtree/base_graph.rb /^ def calculate_height(id = 1)$/;" f class:RSyntaxTree.BaseGraph
61
+ calculate_indent lib/rsyntaxtree/base_graph.rb /^ def calculate_indent$/;" f class:RSyntaxTree.BaseGraph
62
+ calculate_level lib/rsyntaxtree/base_graph.rb /^ def calculate_level$/;" f class:RSyntaxTree.BaseGraph
63
+ calculate_width lib/rsyntaxtree/base_graph.rb /^ def calculate_width(id = 1)$/;" f class:RSyntaxTree.BaseGraph
64
+ check_data lib/rsyntaxtree.rb /^ def self.check_data(text)$/;" F class:RSyntaxTree.RSGenerator
65
+ check_data lib/rsyntaxtree.rb /^ def self.check_data(text)$/;" S class:RSyntaxTree.RSGenerator
66
+ contains_cjk? lib/rsyntaxtree/utils.rb /^ def contains_cjk?$/;" f class:String
67
+ contains_emoji? lib/rsyntaxtree/utils.rb /^ def contains_emoji?$/;" f class:String
68
+ data lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
69
+ data= lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
70
+ draw_a_path lib/rsyntaxtree/svg_graph.rb /^ def draw_a_path(s_x, s_y, t_x, t_y, target_arrow = :none)$/;" f class:RSyntaxTree.SVGGraph
71
+ draw_connector lib/rsyntaxtree/base_graph.rb /^ def draw_connector(id = 1)$/;" f class:RSyntaxTree.BaseGraph
72
+ draw_element lib/rsyntaxtree/svg_graph.rb /^ def draw_element(element)$/;" f class:RSyntaxTree.SVGGraph
73
+ draw_elements lib/rsyntaxtree/base_graph.rb /^ def draw_elements$/;" f class:RSyntaxTree.BaseGraph
74
+ draw_paths lib/rsyntaxtree/svg_graph.rb /^ def draw_paths$/;" f class:RSyntaxTree
75
+ draw_paths lib/rsyntaxtree/svg_graph.rb /^ def draw_paths$/;" f class:RSyntaxTree.SVGGraph
76
+ draw_paths lib/rsyntaxtree/svg_graph.rb /^ def draw_paths$/;" f class:RSyntaxTree.SVGGraph.draw_element
77
+ draw_paths lib/rsyntaxtree/svg_graph.rb /^ def draw_paths$/;" f class:RSyntaxTree.SVGGraph.set_tspan
78
+ draw_png lib/rsyntaxtree.rb /^ def draw_png(binary = false)$/;" f class:RSyntaxTree.RSGenerator
79
+ draw_svg lib/rsyntaxtree.rb /^ def draw_svg$/;" f class:RSyntaxTree.RSGenerator
80
+ draw_tree lib/rsyntaxtree.rb /^ def draw_tree$/;" f class:RSyntaxTree.RSGenerator
81
+ elements lib/rsyntaxtree/elementlist.rb /^ attr_accessor :elements, :iterator $/;" A class:RSyntaxTree.ElementList
82
+ elements= lib/rsyntaxtree/elementlist.rb /^ attr_accessor :elements, :iterator $/;" A class:RSyntaxTree.ElementList
83
+ elist lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
84
+ elist= lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
85
+ generate_line lib/rsyntaxtree/svg_graph.rb /^ def generate_line(x1, y1, x2, y2, col, dashed = false, arrow = false)$/;" f class:RSyntaxTree
86
+ generate_line lib/rsyntaxtree/svg_graph.rb /^ def generate_line(x1, y1, x2, y2, col, dashed = false, arrow = false)$/;" f class:RSyntaxTree.SVGGraph
87
+ generate_line lib/rsyntaxtree/svg_graph.rb /^ def generate_line(x1, y1, x2, y2, col, dashed = false, arrow = false)$/;" f class:RSyntaxTree.SVGGraph.draw_element
88
+ generate_line lib/rsyntaxtree/svg_graph.rb /^ def generate_line(x1, y1, x2, y2, col, dashed = false, arrow = false)$/;" f class:RSyntaxTree.SVGGraph.set_tspan
89
+ generate_line lib/rsyntaxtree/svg_graph.rb /^ def generate_line(x1, y1, x2, y2, col, dashed = false, arrow = false, stroke_width = 1)$/;" f class:RSyntaxTree.SVGGraph
90
+ generate_line lib/rsyntaxtree/svg_graph.rb /^ def generate_line(x1, y1, x2, y2, col, dashed = false, arrow = false, stroke_width = 2)$/;" f class:RSyntaxTree.SVGGraph
91
+ get_child_count lib/rsyntaxtree/elementlist.rb /^ def get_child_count(id)$/;" f class:RSyntaxTree.ElementList
92
+ get_children lib/rsyntaxtree/elementlist.rb /^ def get_children(id)$/;" f class:RSyntaxTree.ElementList
93
+ get_element_width lib/rsyntaxtree/elementlist.rb /^ def get_element_width(id)$/;" f class:RSyntaxTree.ElementList
94
+ get_elementlist lib/rsyntaxtree/string_parser.rb /^ def get_elementlist$/;" f class:RSyntaxTree.StringParser
95
+ get_elementlist lib/rsyntaxtree/string_parser.rb /^ def get_elementlist$/;" f class:RSyntaxTree.StringParser.initialize
96
+ get_elements lib/rsyntaxtree/elementlist.rb /^ def get_elements$/;" f class:RSyntaxTree.ElementList
97
+ get_first lib/rsyntaxtree/elementlist.rb /^ def get_first$/;" f class:RSyntaxTree.ElementList
98
+ get_id lib/rsyntaxtree/elementlist.rb /^ def get_id(id)$/;" f class:RSyntaxTree.ElementList
99
+ get_indent lib/rsyntaxtree/elementlist.rb /^ def get_indent(id)$/;" f class:RSyntaxTree.ElementList
100
+ get_leftmost lib/rsyntaxtree/base_graph.rb /^ def get_leftmost(id = 1)$/;" f class:RSyntaxTree.BaseGraph
101
+ get_level_height lib/rsyntaxtree/elementlist.rb /^ def get_level_height$/;" f class:RSyntaxTree.ElementList
102
+ get_metrics lib/rsyntaxtree/utils.rb /^ def get_metrics(text, font, fontsize, font_style, font_weight)$/;" f class:FontMetrics
103
+ get_metrics lib/rsyntaxtree/utils.rb /^ def get_metrics(text, font, fontsize, font_style, font_weight)$/;" f module:FontMetrics
104
+ get_next lib/rsyntaxtree/elementlist.rb /^ def get_next$/;" f class:RSyntaxTree.ElementList
105
+ get_next_token lib/rsyntaxtree/string_parser.rb /^ def get_next_token$/;" f class:RSyntaxTree.StringParser
106
+ get_next_token lib/rsyntaxtree/string_parser.rb /^ def get_next_token$/;" f class:RSyntaxTree.StringParser.initialize
107
+ get_rightmost lib/rsyntaxtree/base_graph.rb /^ def get_rightmost(id = 1)$/;" f class:RSyntaxTree.BaseGraph
108
+ height lib/rsyntaxtree/svg_graph.rb /^ attr_accessor :width, :height$/;" A class:RSyntaxTree.SVGGraph
109
+ height= lib/rsyntaxtree/svg_graph.rb /^ attr_accessor :width, :height$/;" A class:RSyntaxTree.SVGGraph
110
+ id lib/rsyntaxtree/element.rb /^ attr_accessor :id,$/;" A class:RSyntaxTree.Element
111
+ id lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
112
+ id= lib/rsyntaxtree/element.rb /^ attr_accessor :id,$/;" A class:RSyntaxTree.Element
113
+ id= lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
114
+ initialize lib/rsyntaxtree.rb /^ def initialize(msg="Error: something unexpected occurred")$/;" f class:RSyntaxTree.RSTError
115
+ initialize lib/rsyntaxtree.rb /^ def initialize(params = {})$/;" f class:RSyntaxTree.RSGenerator
116
+ initialize lib/rsyntaxtree.rb /^ def initialize(msg="Error: something unexpected occurred")$/;" f class:RSTError
117
+ initialize lib/rsyntaxtree/base_graph.rb /^ def initialize(element_list, params)$/;" f class:RSyntaxTree.BaseGraph
118
+ initialize lib/rsyntaxtree/element.rb /^ def initialize(id, parent, content, level, fontset, fontsize)$/;" f class:RSyntaxTree.Element
119
+ initialize lib/rsyntaxtree/elementlist.rb /^ def initialize$/;" f class:RSyntaxTree.ElementList
120
+ initialize lib/rsyntaxtree/string_parser.rb /^ def initialize(msg="Error: something unexpected occurred")$/;" f class:RSyntaxTree.RSTError
121
+ initialize lib/rsyntaxtree/string_parser.rb /^ def initialize(str, fontset, fontsize)$/;" f class:RSyntaxTree.StringParser
122
+ initialize lib/rsyntaxtree/string_parser.rb /^ def initialize(msg="Error: something unexpected occurred")$/;" f class:RSTError
123
+ initialize lib/rsyntaxtree/string_parser.rb /^ def initialize(msg="Error: something unexpected occurred")$/;" f class:RSyntaxTree.RSTError
124
+ initialize lib/rsyntaxtree/svg_graph.rb /^ def initialize(element_list, params)$/;" f class:RSyntaxTree.SVGGraph
125
+ initialize lib/rsyntaxtree/utils.rb /^ def initialize(msg="Error: something unexpected occurred")$/;" f class:RSTError
126
+ iterator lib/rsyntaxtree/elementlist.rb /^ attr_accessor :elements, :iterator $/;" A class:RSyntaxTree.ElementList
127
+ iterator= lib/rsyntaxtree/elementlist.rb /^ attr_accessor :elements, :iterator $/;" A class:RSyntaxTree.ElementList
128
+ level lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
129
+ level= lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
130
+ line_to_parent lib/rsyntaxtree/svg_graph.rb /^ def line_to_parent(parent, child)$/;" f class:RSyntaxTree
131
+ line_to_parent lib/rsyntaxtree/svg_graph.rb /^ def line_to_parent(parent, child)$/;" f class:RSyntaxTree.SVGGraph
132
+ line_to_parent lib/rsyntaxtree/svg_graph.rb /^ def line_to_parent(parent, child)$/;" f class:RSyntaxTree.SVGGraph.draw_element
133
+ line_to_parent lib/rsyntaxtree/svg_graph.rb /^ def line_to_parent(parent, child)$/;" f class:RSyntaxTree.SVGGraph.set_tspan
134
+ make_balance lib/rsyntaxtree/base_graph.rb /^ def make_balance(id = 1)$/;" f class:RSyntaxTree.BaseGraph
135
+ make_tree lib/rsyntaxtree/string_parser.rb /^ def make_tree(parent)$/;" f class:RSyntaxTree.StringParser
136
+ make_tree lib/rsyntaxtree/string_parser.rb /^ def make_tree(parent)$/;" f class:RSyntaxTree.StringParser.initialize
137
+ node_centering lib/rsyntaxtree/base_graph.rb /^ def node_centering$/;" f class:RSyntaxTree.BaseGraph
138
+ parse lib/rsyntaxtree/markup_parser.rb /^ def parse(txt)$/;" f class:Markup
139
+ parse lib/rsyntaxtree/markup_parser.rb /^ def parse(txt)$/;" f module:Markup
140
+ parse lib/rsyntaxtree/string_parser.rb /^ def parse$/;" f class:RSyntaxTree.StringParser
141
+ parse lib/rsyntaxtree/string_parser.rb /^ def parse$/;" f class:RSyntaxTree.StringParser.initialize
142
+ parse_list lib/rsyntaxtree/base_graph.rb /^ def parse_list$/;" f class:RSyntaxTree.BaseGraph
143
+ pos lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
144
+ pos= lib/rsyntaxtree/string_parser.rb /^ attr_accessor :data, :elist, :pos, :id, :level$/;" A class:RSyntaxTree.StringParser
145
+ rsyntaxtree rsyntaxtree.gemspec /^ s.name = "rsyntaxtree"$/;" g
146
+ set_element_width lib/rsyntaxtree/elementlist.rb /^ def set_element_width(id, width)$/;" f class:RSyntaxTree.ElementList
147
+ set_hierarchy lib/rsyntaxtree/elementlist.rb /^ def set_hierarchy$/;" f class:RSyntaxTree.ElementList
148
+ set_indent lib/rsyntaxtree/elementlist.rb /^ def set_indent(id, indent)$/;" f class:RSyntaxTree.ElementList
149
+ set_tspan lib/rsyntaxtree/svg_graph.rb /^ def set_tspan$/;" f class:RSyntaxTree.SVGGraph
150
+ set_tspan lib/rsyntaxtree/svg_graph.rb /^ def set_tspan(this_x, this_y, style, decoration, fontstyle, text)$/;" f class:RSyntaxTree.SVGGraph
151
+ set_tspan lib/rsyntaxtree/svg_graph.rb /^ def set_tspan(x, y, style, decoration, fontstyle, text)$/;" f class:RSyntaxTree.SVGGraph
152
+ setup lib/rsyntaxtree/element.rb /^ def setup$/;" f class:RSyntaxTree.Element
153
+ setup test/markup_parser_test.rb /^ def setup$/;" f class:MarkupParserTest
154
+ split_by_emoji lib/rsyntaxtree/utils.rb /^ def split_by_emoji$/;" f class:String
155
+ svg_data lib/rsyntaxtree/svg_graph.rb /^ def svg_data$/;" f class:RSyntaxTree.SVGGraph
156
+ test_evaluator test/markup_parser_test.rb /^ def test_evaluator$/;" f
157
+ test_evaluator test/markup_parser_test.rb /^ def test_evaluator$/;" f class:MarkupParserTest
158
+ test_rule_blankline test/markup_parser_test.rb /^ def test_rule_blankline$/;" f class:MarkupParserTest
159
+ test_rule_bold test/markup_parser_test.rb /^ def test_rule_bold$/;" f
160
+ test_rule_bold test/markup_parser_test.rb /^ def test_rule_bold$/;" f class:MarkupParserTest
161
+ test_rule_bolditalic test/markup_parser_test.rb /^ def test_rule_bolditalic$/;" f
162
+ test_rule_bolditalic test/markup_parser_test.rb /^ def test_rule_bolditalic$/;" f class:MarkupParserTest
163
+ test_rule_border test/markup_parser_test.rb /^ def test_rule_border$/;" f
164
+ test_rule_border test/markup_parser_test.rb /^ def test_rule_border$/;" f class:MarkupParserTest
165
+ test_rule_box test/markup_parser_test.rb /^ def test_rule_box$/;" f
166
+ test_rule_box test/markup_parser_test.rb /^ def test_rule_box$/;" f class:MarkupParserTest
167
+ test_rule_brackets test/markup_parser_test.rb /^ def test_rule_brackets$/;" f class:MarkupParserTest
168
+ test_rule_cr test/markup_parser_test.rb /^ def test_rule_cr$/;" f class:MarkupParserTest
169
+ test_rule_escaped test/markup_parser_test.rb /^ def test_rule_escaped$/;" f class:MarkupParserTest
170
+ test_rule_italic test/markup_parser_test.rb /^ def test_rule_italic$/;" f
171
+ test_rule_italic test/markup_parser_test.rb /^ def test_rule_italic$/;" f class:MarkupParserTest
172
+ test_rule_line test/markup_parser_test.rb /^ def test_rule_line$/;" f
173
+ test_rule_line test/markup_parser_test.rb /^ def test_rule_line$/;" f class:MarkupParserTest
174
+ test_rule_lines test/markup_parser_test.rb /^ def test_rule_lines$/;" f
175
+ test_rule_lines test/markup_parser_test.rb /^ def test_rule_lines$/;" f class:MarkupParserTest
176
+ test_rule_linethrough test/markup_parser_test.rb /^ def test_rule_linethrough$/;" f
177
+ test_rule_linethrough test/markup_parser_test.rb /^ def test_rule_linethrough$/;" f class:MarkupParserTest
178
+ test_rule_markup test/markup_parser_test.rb /^ def test_rule_markup$/;" f
179
+ test_rule_markup test/markup_parser_test.rb /^ def test_rule_markup$/;" f class:MarkupParserTest
180
+ test_rule_non_escaped test/markup_parser_test.rb /^ def test_rule_non_escaped$/;" f
181
+ test_rule_non_escaped test/markup_parser_test.rb /^ def test_rule_non_escaped$/;" f class:MarkupParserTest
182
+ test_rule_overline test/markup_parser_test.rb /^ def test_rule_overline$/;" f
183
+ test_rule_overline test/markup_parser_test.rb /^ def test_rule_overline$/;" f class:MarkupParserTest
184
+ test_rule_path test/markup_parser_test.rb /^ def test_rule_path$/;" f class:MarkupParserTest
185
+ test_rule_subscript test/markup_parser_test.rb /^ def test_rule_subscript$/;" f
186
+ test_rule_subscript test/markup_parser_test.rb /^ def test_rule_subscript$/;" f class:MarkupParserTest
187
+ test_rule_superscript test/markup_parser_test.rb /^ def test_rule_superscript$/;" f
188
+ test_rule_superscript test/markup_parser_test.rb /^ def test_rule_superscript$/;" f class:MarkupParserTest
189
+ test_rule_text test/markup_parser_test.rb /^ def test_rule_text$/;" f
190
+ test_rule_text test/markup_parser_test.rb /^ def test_rule_text$/;" f class:MarkupParserTest
191
+ test_rule_triangle test/markup_parser_test.rb /^ def test_rule_triangle$/;" f class:MarkupParserTest
192
+ test_rule_underline test/markup_parser_test.rb /^ def test_rule_underline$/;" f
193
+ test_rule_underline test/markup_parser_test.rb /^ def test_rule_underline$/;" f class:MarkupParserTest
194
+ triangle_to_parent lib/rsyntaxtree/svg_graph.rb /^ def triangle_to_parent(parent, child)$/;" f class:RSyntaxTree
195
+ triangle_to_parent lib/rsyntaxtree/svg_graph.rb /^ def triangle_to_parent(parent, child)$/;" f class:RSyntaxTree.SVGGraph
196
+ triangle_to_parent lib/rsyntaxtree/svg_graph.rb /^ def triangle_to_parent(parent, child)$/;" f class:RSyntaxTree.SVGGraph.draw_element
197
+ triangle_to_parent lib/rsyntaxtree/svg_graph.rb /^ def triangle_to_parent(parent, child)$/;" f class:RSyntaxTree.SVGGraph.set_tspan
198
+ valid lib/rsyntaxtree/string_parser.rb /^ def self.valid?(data)$/;" F class:RSyntaxTree.StringParser
199
+ valid lib/rsyntaxtree/string_parser.rb /^ def self.valid?(data)$/;" F class:RSyntaxTree.StringParser.initialize
200
+ valid? lib/rsyntaxtree/string_parser.rb /^ def self.valid?(data)$/;" S class:RSyntaxTree.StringParser
201
+ width lib/rsyntaxtree/svg_graph.rb /^ attr_accessor :width, :height$/;" A class:RSyntaxTree.SVGGraph
202
+ width= lib/rsyntaxtree/svg_graph.rb /^ attr_accessor :width, :height$/;" A class:RSyntaxTree.SVGGraph
203
+ 🌲 RSyntaxTree: yet another syntax tree generator in Ruby README.md /^# 🌲 RSyntaxTree: yet another syntax tree generator in Ruby$/;" c
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source "http://rubygems.org"
2
2
 
3
3
  gem 'rmagick'
4
4
  gem 'optimist'
5
+ gem 'parslet'
6
+ gem 'rsvg2'
data/README.md CHANGED
@@ -30,7 +30,6 @@ where [options] are:
30
30
  -s, --fontsize=<i> Size: 8-26 (default: 16)
31
31
  -c, --color=<s> Color text and bars: on or off (default: on)
32
32
  -y, --symmetrize=<s> Generate symmetrical, balanced tree: on or off (default: on)
33
- -a, --autosub=<s> Put subscript numbers to nodes: on or off (default: off)
34
33
  -m, --margin=<i> Margin: 0-120 (default: 0)
35
34
  -v, --vheight=<f> Connector Height: 0.5-2.0 (default: 1.0)
36
35
  -e, --version Print version and exit
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ task default: "test"
5
+
6
+ Rake::TestTask.new do |task|
7
+ task.pattern = "test/*_test.rb"
8
+ end
data/bin/rsyntaxtree CHANGED
@@ -5,6 +5,7 @@ $LOAD_PATH << File.join( File.dirname(__FILE__), '../lib')
5
5
 
6
6
  require 'rsyntaxtree'
7
7
  require 'optimist'
8
+ require 'utils'
8
9
 
9
10
  opts = Optimist::options do
10
11
  version "RSyntaxTree #{RSyntaxTree::VERSION} (c) 2021 Yoichiro Hasebe"
@@ -22,20 +23,18 @@ EOS
22
23
  :default => "png"
23
24
  opt :leafstyle, "visual style of tree leaves: auto, triangle, bar, or nothing",
24
25
  :default => "auto"
25
- opt :fontstyle, "Font style (available when ttf font is specified): sans, serif, cjk, math",
26
+ opt :fontstyle, "Font style (available when ttf font is specified): sans, serif, cjk",
26
27
  :default => "sans"
27
28
  opt :font, "Path to a ttf font used to generate tree (optional)", :type => String
28
29
  opt :fontsize, "Size: 8-26",
29
30
  :default => 16
30
- opt :margin, "Margin: 1-5",
31
+ opt :margin, "Margin: 0-10",
31
32
  :default => 1
32
33
  opt :vheight, "Connector Height: 0.5-5.0",
33
- :default => 1.0
34
+ :default => 2.0
34
35
  opt :color, "Color text and bars: on or off",
35
36
  :default => "on"
36
- opt :symmetrize, "Generate symmetrical, balanced tree: on or off",
37
- :default => "on"
38
- opt :autosub, "Put subscript numbers to nodes: on or off",
37
+ opt :symmetrize, "Generate radically symmetrical, balanced tree: on or off",
39
38
  :default => "off"
40
39
  opt :transparent, "Make background transparent: on or off",
41
40
  :default => "off"
@@ -44,15 +43,14 @@ end
44
43
  Optimist::die :outdir, "must be an exsting directory path" unless FileTest::directory?(opts[:outdir])
45
44
  Optimist::die :format, "must be png, jpg, gif, or svg" unless /\A(png|jpg|gif|pdf|svg)\z/ =~ opts[:format]
46
45
  Optimist::die :leafstyle, "must be auto, triangle, bar, or nothing" unless /\A(auto|triangle|bar|nothing)\z/ =~ opts[:leafstyle]
47
- Optimist::die :fontstyle, "must be sans, serif, cjk, math" unless /\A(sans|serif|cjk|math)\z/ =~ opts[:fontstyle]
46
+ Optimist::die :fontstyle, "must be sans, serif, cjk" unless /\A(sans|serif|cjk)\z/ =~ opts[:fontstyle]
48
47
  Optimist::die :font, "must be path to an existing ttf font" if opts[:font] && !File::exists?(opts[:font])
49
48
  Optimist::die :fontsize, "must be in the range of 8-26" unless opts[:fontsize] >= 8 && opts[:fontsize] <= 26
50
- Optimist::die :color, "must be either on or off" unless /\A(on|off)\z/ =~ opts[:color]
51
- Optimist::die :symmetrize, "must be either on or off" unless /\A(on|off)\z/ =~ opts[:symmetrize]
52
- Optimist::die :autosub, "must be either on or off" unless /\A(on|off)\z/ =~ opts[:autosub]
53
- Optimist::die :margin, "must be in the range of 0-5" if opts[:margin] < 1 || opts[:margin] > 5
49
+ Optimist::die :color, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:color]
50
+ Optimist::die :symmetrize, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:symmetrize]
51
+ Optimist::die :margin, "must be in the range of 0-10" if opts[:margin] < 0 || opts[:margin] > 10
54
52
  Optimist::die :vheight, "must be in the range of 0.5-5.0" if opts[:vheight] < 0.5 || opts[:vheight] > 5.0
55
- Optimist::die :transparent, "must be either on or off" unless /\A(on|off)\z/ =~ opts[:transparent]
53
+ Optimist::die :transparent, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:transparent]
56
54
 
57
55
  string_opts = {}
58
56
  opts.each do |key, value|
@@ -61,26 +59,35 @@ end
61
59
 
62
60
  data = ARGV[0]
63
61
 
64
- unless data && RSGenerator.check_data(data)
65
- puts "Error: given bracket notation is invalid; try 'rsyntaxtree --help' "
62
+ begin
63
+ RSyntaxTree::RSGenerator.check_data(data)
64
+ rescue RSTError => e
65
+ puts e
66
66
  exit
67
67
  end
68
68
 
69
- string_opts[:data] = data
70
-
71
- rsg = RSGenerator.new(string_opts)
72
- ext = string_opts[:format]
73
- outfile = File.new(File.expand_path(string_opts[:outdir]) + "/syntree." + ext, "wb")
74
- case ext
75
- when "png"
76
- outfile.write rsg.draw_png
77
- when "jpg"
78
- outfile.write rsg.draw_jpg
79
- when "gif"
80
- outfile.write rsg.draw_gif
81
- when "pdf"
82
- outfile.write rsg.draw_pdf
83
- when "svg"
84
- outfile.write rsg.draw_svg
69
+ begin
70
+ string_opts[:data] = data
71
+ rsg = RSyntaxTree::RSGenerator.new(string_opts)
72
+ ext = string_opts[:format]
73
+ filepath = File.expand_path(string_opts[:outdir]) + "/syntree." + ext
74
+ case ext
75
+ when "jpg", "gif", "pdf"
76
+ rsg.draw_tree.write(filepath)
77
+ when "png"
78
+ outfile = File.new(filepath, "wb")
79
+ # outfile.write rsg.draw_png
80
+ outfile.write rsg.draw_tree
81
+ outfile.close
82
+ when "svg"
83
+ outfile = File.new(filepath, "wb")
84
+ outfile.write rsg.draw_svg
85
+ outfile.close
86
+ end
87
+ rescue RSTError => e
88
+ puts e
89
+ exit
90
+ rescue => e
91
+ puts "Error: something unexpected occurred"
92
+ exit
85
93
  end
86
- outfile.close
Binary file
Binary file
@@ -0,0 +1,262 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #==========================
5
+ # graph.rb
6
+ #==========================
7
+ #
8
+ # Image utility functions to inspect text font metrics
9
+ # Copyright (c) 2007-2021 Yoichiro Hasebe <yohasebe@gmail.com>
10
+
11
+ require 'utils'
12
+
13
+ module RSyntaxTree
14
+ class BaseGraph
15
+
16
+ def initialize(element_list, params)
17
+
18
+ @element_list = element_list
19
+ @symmetrize = params[:symmetrize]
20
+
21
+ if params[:color]
22
+ @col_node = "blue"
23
+ @col_leaf = "green"
24
+ @col_path = "purple"
25
+ else
26
+ @col_node = "black"
27
+ @col_leaf = "black"
28
+ @col_path = "black"
29
+ end
30
+
31
+ @col_bg = "none"
32
+ @col_fg = "black"
33
+ @col_line = "black"
34
+
35
+ @leafstyle = params[:leafstyle]
36
+ @fontset = params[:fontset]
37
+ @fontsize = params[:fontsize]
38
+ end
39
+
40
+ def calculate_level
41
+ @element_list.get_elements.select{|e| e.type == 2}.each do |e|
42
+ e.level = @element_list.get_id(e.parent).level + 1
43
+ end
44
+ end
45
+
46
+ def calculate_width(id = 1)
47
+ target = @element_list.get_id(id)
48
+ if target.children.empty?
49
+ target.width = target.content_width + $h_gap_between_nodes * 4
50
+
51
+ parent = @element_list.get_id(target.parent)
52
+ while parent && parent.children.size == 1
53
+ w = parent.content_width
54
+ target.width = w + $h_gap_between_nodes * 4 if w > target.content_width
55
+ parent = @element_list.get_id(parent.parent)
56
+ end
57
+ return target.width
58
+ else
59
+ if target.width != 0
60
+ return target.width
61
+ else
62
+ accum_array = []
63
+ target.children.each do |c|
64
+ accum_array << calculate_width(c)
65
+ end
66
+ if @symmetrize
67
+ accum_width = accum_array.max * target.children.size
68
+ else
69
+ accum_width = accum_array.sum
70
+ end
71
+
72
+ target.width = [accum_width, target.content_width].max
73
+ end
74
+
75
+ return target.width
76
+ end
77
+ end
78
+
79
+ def calculate_height(id = 1)
80
+ target = @element_list.get_id(id)
81
+ if id == 1
82
+ target.vertical_indent = 0
83
+ else
84
+ parent = @element_list.get_id(target.parent)
85
+
86
+ if !target.triangle && @leafstyle == "nothing" && ETYPE_LEAF == target.type && parent.children.size == 1
87
+ vertical_indent = parent.vertical_indent + parent.content_height
88
+ else
89
+ vertical_indent = parent.vertical_indent + parent.content_height + $height_connector
90
+ end
91
+
92
+ target.vertical_indent = vertical_indent
93
+ end
94
+
95
+ if target.children.empty?
96
+ target.height = target.content_height
97
+ vertical_end = target.vertical_indent + target.content_height
98
+ else
99
+ accum_array = []
100
+ target.children.each do |c|
101
+ accum_array << calculate_height(c)
102
+ end
103
+ target.height = accum_array.max - target.vertical_indent
104
+ vertical_end = accum_array.max
105
+ end
106
+ return vertical_end
107
+ end
108
+
109
+ def make_balance(id = 1)
110
+ target = @element_list.get_id(id)
111
+ if target.children.empty?
112
+ parent = @element_list.get_id(target.parent)
113
+ accum_array = []
114
+ parent.children.each do |c|
115
+ accum_array << @element_list.get_id(c).width
116
+ end
117
+ max = accum_array.max
118
+ parent.children.each do |c|
119
+ @element_list.get_id(c).width = max
120
+ end
121
+ return max
122
+ else
123
+ accum_array = []
124
+ target.children.each do |c|
125
+ accum_array << make_balance(c)
126
+ end
127
+ accum_width = accum_array.max
128
+ max = [accum_width, target.content_width].max
129
+ target.children.each do |c|
130
+ @element_list.get_id(c).width = max
131
+ end
132
+ return target.width
133
+ end
134
+ end
135
+
136
+ def calculate_indent
137
+ node_groups = @element_list.get_elements.group_by {|e| e.parent}
138
+ node_groups.each do |k, v|
139
+ next if k == 0
140
+ parent = @element_list.get_id(k)
141
+ if @symmetrize
142
+ num_leaves = v.size
143
+ partition_width = parent.width / num_leaves
144
+ left_offset = parent.horizontal_indent + parent.content_width / 2.0 - parent.width / 2.0
145
+ v.each do |e|
146
+ indent = left_offset + (partition_width - e.content_width) / 2.0
147
+ e.horizontal_indent = indent
148
+ left_offset += partition_width
149
+ end
150
+ else
151
+ left_offset = parent.horizontal_indent + parent.content_width / 2.0 - parent.width / 2.0
152
+ v.each do |e|
153
+ indent = left_offset + (e.width - e.content_width) / 2.0
154
+ e.horizontal_indent = indent
155
+ left_offset += e.width
156
+ end
157
+ end
158
+ end
159
+ end
160
+
161
+ def draw_elements
162
+ @element_list.get_elements.each do |element|
163
+ draw_element(element)
164
+ end
165
+ end
166
+
167
+ def draw_connector(id = 1)
168
+ parent = @element_list.get_id(id)
169
+ children = parent.children.map{|c| @element_list.get_id(c)}
170
+
171
+ if children.empty?
172
+ ;
173
+ elsif children.size == 1
174
+ child = children[0]
175
+ if (@leafstyle == "auto")
176
+ if child.contains_phrase || child.triangle
177
+ triangle_to_parent(parent, child)
178
+ else
179
+ line_to_parent(parent, child)
180
+ end
181
+ elsif(@leafstyle == "bar")
182
+ if child.triangle
183
+ triangle_to_parent(parent, child)
184
+ else
185
+ line_to_parent(parent, child)
186
+ end
187
+ elsif(@leafstyle == "nothing")
188
+ if child.triangle
189
+ triangle_to_parent(parent, child)
190
+ elsif ETYPE_LEAF == child.type
191
+ child.vertical_indent = parent.vertical_indent + parent.content_height + $height_connector / 2
192
+ end
193
+ end
194
+ else
195
+ children.each do |child|
196
+ line_to_parent(parent, child)
197
+ end
198
+ end
199
+
200
+ parent.children.each do |c|
201
+ draw_connector(c)
202
+ end
203
+ end
204
+
205
+ def get_leftmost(id = 1)
206
+ target = @element_list.get_id(id)
207
+ target_indent = target.horizontal_indent
208
+ children_indent = target.children.map{|c| get_leftmost(c)}
209
+ (children_indent << target_indent).min
210
+ end
211
+
212
+ def get_rightmost(id = 1)
213
+ target = @element_list.get_id(id)
214
+ target_right_end = target.horizontal_indent + target.content_width
215
+ children_right_end = target.children.map{|c| get_rightmost(c)}
216
+ (children_right_end << target_right_end).max
217
+ end
218
+
219
+ def node_centering
220
+ node_groups = @element_list.get_elements.group_by {|e| e.parent}
221
+ node_groups.sort_by{|k, v| -k}.each do |k, v|
222
+ next if k == 0
223
+ parent = @element_list.get_id(k)
224
+ child_positions =v.map {|child| child.horizontal_indent + child.content_width / 2 }
225
+ parent.horizontal_indent = child_positions.min + (child_positions.max - child_positions.min - parent.content_width) / 2
226
+ end
227
+ end
228
+
229
+ def parse_list
230
+ calculate_level
231
+ calculate_width
232
+ make_balance if @symmetrize
233
+ calculate_indent
234
+ node_centering
235
+
236
+ top = @element_list.get_id(1)
237
+ diff = top.horizontal_indent
238
+ @element_list.get_elements.each do |e|
239
+ e.horizontal_indent -= diff
240
+ end
241
+
242
+ offset_l = (top.horizontal_indent - get_leftmost) + $h_gap_between_nodes
243
+ offset_r = top.width / 2 - offset_l - $h_gap_between_nodes
244
+
245
+ @element_list.get_elements.each do |e|
246
+ e.horizontal_indent += offset_l
247
+ end
248
+
249
+ calculate_height
250
+ draw_elements
251
+ draw_connector
252
+ num_paths = draw_paths
253
+
254
+ # width = get_rightmost - get_leftmost + $h_gap_between_nodes * 2
255
+ width = get_rightmost - get_leftmost + $h_gap_between_nodes
256
+ height = @element_list.get_id(1).height
257
+ height = @height if @height > height
258
+
259
+ return {height: height, width: width}
260
+ end
261
+ end
262
+ end