glyph 0.2.0 → 0.3.0
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.
- data/AUTHORS.textile +1 -1
- data/CHANGELOG.textile +119 -222
- data/LICENSE.textile +1 -1
- data/README.textile +42 -23
- data/Rakefile +1 -3
- data/VERSION +1 -1
- data/benchmark.rb +72 -0
- data/book/config.yml +4 -4
- data/book/document.glyph +90 -57
- data/book/images/document_generation.png +0 -0
- data/book/lib/macros/reference.rb +75 -22
- data/book/output/html/glyph.html +3183 -2121
- data/book/output/html/images/document_generation.png +0 -0
- data/book/output/pdf/glyph.pdf +7370 -4913
- data/book/resources/document_generation.txt +34 -0
- data/book/snippets.yml +6 -0
- data/book/text/changelog.glyph +45 -34
- data/book/text/compiling/compiling.glyph +23 -0
- data/book/text/compiling/lite_mode.glyph +23 -0
- data/book/text/compiling/programmatic_usage.glyph +77 -0
- data/book/text/extending/bookmarks_headers.glyph +21 -0
- data/book/text/extending/further_reading.glyph +13 -0
- data/book/text/extending/internals.glyph +79 -0
- data/book/text/extending/interpreting.glyph +51 -0
- data/book/text/extending/macro_def.glyph +64 -0
- data/book/text/extending/params_attrs.glyph +70 -0
- data/book/text/extending/placeholders.glyph +34 -0
- data/book/text/extending/validators.glyph +16 -0
- data/book/text/getting_started/configuration.glyph +49 -0
- data/book/text/getting_started/create_project.glyph +41 -0
- data/book/text/getting_started/structure.glyph +55 -0
- data/book/text/introduction.glyph +49 -26
- data/book/text/license.glyph +1 -1
- data/book/text/macros/macros_block.glyph +99 -0
- data/book/text/macros/macros_core.glyph +208 -0
- data/book/text/macros/macros_filters.glyph +40 -0
- data/book/text/macros/macros_inline.glyph +50 -0
- data/book/text/macros/macros_structure.glyph +100 -0
- data/book/text/ref_commands.glyph +94 -73
- data/book/text/ref_config.glyph +34 -42
- data/book/text/ref_macros.glyph +1 -373
- data/book/text/text_editing/code.glyph +51 -0
- data/book/text/text_editing/conditionals.glyph +49 -0
- data/book/text/text_editing/evaluation.glyph +13 -0
- data/book/text/text_editing/glyph_files.glyph +7 -0
- data/book/text/text_editing/images.glyph +29 -0
- data/book/text/text_editing/inclusions.glyph +44 -0
- data/book/text/text_editing/links.glyph +53 -0
- data/book/text/text_editing/macro_intro.glyph +111 -0
- data/book/text/text_editing/raw_html.glyph +112 -0
- data/book/text/text_editing/sections.glyph +63 -0
- data/book/text/text_editing/stylesheets.glyph +36 -0
- data/book/text/troubleshooting/errors_command.glyph +39 -0
- data/book/text/troubleshooting/errors_generic.glyph +29 -0
- data/book/text/troubleshooting/errors_intro.glyph +3 -0
- data/book/text/troubleshooting/errors_macro.glyph +98 -0
- data/book/text/troubleshooting/errors_parser.glyph +29 -0
- data/config.yml +77 -58
- data/document.glyph +25 -25
- data/glyph.gemspec +57 -22
- data/lib/glyph.rb +54 -13
- data/lib/glyph/commands.rb +84 -17
- data/lib/glyph/config.rb +3 -3
- data/lib/glyph/document.rb +14 -8
- data/lib/glyph/interpreter.rb +18 -58
- data/lib/glyph/macro.rb +160 -55
- data/lib/glyph/macro_validators.rb +104 -12
- data/lib/glyph/node.rb +24 -0
- data/lib/glyph/parser.rb +278 -0
- data/lib/glyph/syntax_node.rb +225 -0
- data/macros/core.rb +212 -0
- data/macros/filters.rb +66 -15
- data/macros/html/block.rb +43 -105
- data/macros/html/inline.rb +11 -12
- data/macros/html/structure.rb +123 -58
- data/macros/xml.rb +33 -0
- data/spec/files/container.textile +2 -2
- data/spec/files/document.glyph +2 -2
- data/spec/files/document_with_toc.glyph +3 -3
- data/spec/files/included.textile +1 -1
- data/spec/files/ligature.jpg +0 -0
- data/spec/files/markdown.markdown +2 -1
- data/spec/lib/commands_spec.rb +46 -3
- data/spec/lib/document_spec.rb +4 -4
- data/spec/lib/glyph_spec.rb +17 -46
- data/spec/lib/interpreter_spec.rb +6 -25
- data/spec/lib/macro_spec.rb +141 -43
- data/spec/lib/macro_validators_spec.rb +27 -5
- data/spec/lib/node_spec.rb +26 -1
- data/spec/lib/parser_spec.rb +246 -0
- data/spec/lib/syntax_node_spec.rb +111 -0
- data/spec/macros/core_spec.rb +195 -0
- data/spec/macros/filters_spec.rb +38 -4
- data/spec/macros/macros_spec.rb +20 -176
- data/spec/macros/textile_spec.rb +13 -71
- data/spec/macros/xml_spec.rb +77 -0
- data/spec/spec_helper.rb +50 -10
- data/spec/tasks/load_spec.rb +13 -2
- data/styles/default.css +18 -6
- data/styles/pagination.css +1 -19
- data/tasks/generate.rake +2 -2
- data/tasks/load.rake +27 -17
- data/tasks/project.rake +1 -1
- metadata +75 -62
- data/book/script/compile.rb +0 -8
- data/book/script/prof +0 -1
- data/book/script/prof_results.htm +0 -21079
- data/book/text/authoring.glyph +0 -548
- data/book/text/extending.glyph +0 -224
- data/book/text/getting_started.glyph +0 -158
- data/book/text/troubleshooting.glyph +0 -179
- data/lib/glyph/glyph_language.rb +0 -538
- data/lib/glyph/glyph_language.treetop +0 -27
- data/macros/common.rb +0 -160
data/document.glyph
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
book[
|
2
|
+
@frontmatter[
|
3
|
+
toc[]
|
4
|
+
preface[
|
5
|
+
@title[Preface]
|
6
|
+
todo[Write the preface]
|
7
|
+
include[preface]
|
8
|
+
]
|
9
|
+
]
|
10
|
+
@bodymatter[
|
11
|
+
chapter[
|
12
|
+
@title[Chapter 1]
|
13
|
+
todo[Write chapter 1]
|
14
|
+
include[chapter_1]
|
14
15
|
]
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
]
|
19
|
-
chapter[header[Chapter #2]
|
20
|
-
@[chapter_2.textile]
|
21
|
-
]
|
16
|
+
chapter[
|
17
|
+
@title[Chapter 2]
|
18
|
+
todo[Write chapter 2]
|
19
|
+
include[chapter_2]
|
22
20
|
]
|
23
|
-
backmatter[
|
24
|
-
appendix[header[Appendix A]
|
25
|
-
@[appendix_a.textile]
|
26
|
-
]
|
27
|
-
]
|
28
21
|
]
|
22
|
+
@backmatter[
|
23
|
+
appendix[
|
24
|
+
@title[Appendix A]
|
25
|
+
todo[Write appendix A]
|
26
|
+
include[appendix_a]
|
27
|
+
]
|
28
|
+
]
|
29
29
|
]
|
data/glyph.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{glyph}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Fabio Cevasco"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-06-13}
|
13
13
|
s.default_executable = %q{glyph}
|
14
14
|
s.description = %q{Glyph is a framework for structured document authoring.}
|
15
15
|
s.email = %q{h3rald@h3rald.com}
|
@@ -25,35 +25,67 @@ Gem::Specification.new do |s|
|
|
25
25
|
"README.textile",
|
26
26
|
"Rakefile",
|
27
27
|
"VERSION",
|
28
|
+
"benchmark.rb",
|
28
29
|
"bin/glyph",
|
29
30
|
"book/config.yml",
|
30
31
|
"book/document.glyph",
|
32
|
+
"book/images/document_generation.png",
|
31
33
|
"book/images/glyph.png",
|
32
34
|
"book/images/glyph.svg",
|
33
35
|
"book/lib/macros/reference.rb",
|
34
36
|
"book/output/html/glyph.html",
|
37
|
+
"book/output/html/images/document_generation.png",
|
35
38
|
"book/output/html/images/glyph.png",
|
36
39
|
"book/output/html/images/glyph.svg",
|
37
40
|
"book/output/pdf/glyph.pdf",
|
41
|
+
"book/resources/document_generation.txt",
|
38
42
|
"book/script/authors",
|
39
43
|
"book/script/changelog",
|
40
|
-
"book/script/compile.rb",
|
41
44
|
"book/script/license",
|
42
|
-
"book/script/prof",
|
43
|
-
"book/script/prof_results.htm",
|
44
45
|
"book/script/readme",
|
45
46
|
"book/snippets.yml",
|
46
47
|
"book/text/acknowledgement.glyph",
|
47
|
-
"book/text/authoring.glyph",
|
48
48
|
"book/text/changelog.glyph",
|
49
|
-
"book/text/
|
50
|
-
"book/text/
|
49
|
+
"book/text/compiling/compiling.glyph",
|
50
|
+
"book/text/compiling/lite_mode.glyph",
|
51
|
+
"book/text/compiling/programmatic_usage.glyph",
|
52
|
+
"book/text/extending/bookmarks_headers.glyph",
|
53
|
+
"book/text/extending/further_reading.glyph",
|
54
|
+
"book/text/extending/internals.glyph",
|
55
|
+
"book/text/extending/interpreting.glyph",
|
56
|
+
"book/text/extending/macro_def.glyph",
|
57
|
+
"book/text/extending/params_attrs.glyph",
|
58
|
+
"book/text/extending/placeholders.glyph",
|
59
|
+
"book/text/extending/validators.glyph",
|
60
|
+
"book/text/getting_started/configuration.glyph",
|
61
|
+
"book/text/getting_started/create_project.glyph",
|
62
|
+
"book/text/getting_started/structure.glyph",
|
51
63
|
"book/text/introduction.glyph",
|
52
64
|
"book/text/license.glyph",
|
65
|
+
"book/text/macros/macros_block.glyph",
|
66
|
+
"book/text/macros/macros_core.glyph",
|
67
|
+
"book/text/macros/macros_filters.glyph",
|
68
|
+
"book/text/macros/macros_inline.glyph",
|
69
|
+
"book/text/macros/macros_structure.glyph",
|
53
70
|
"book/text/ref_commands.glyph",
|
54
71
|
"book/text/ref_config.glyph",
|
55
72
|
"book/text/ref_macros.glyph",
|
56
|
-
"book/text/
|
73
|
+
"book/text/text_editing/code.glyph",
|
74
|
+
"book/text/text_editing/conditionals.glyph",
|
75
|
+
"book/text/text_editing/evaluation.glyph",
|
76
|
+
"book/text/text_editing/glyph_files.glyph",
|
77
|
+
"book/text/text_editing/images.glyph",
|
78
|
+
"book/text/text_editing/inclusions.glyph",
|
79
|
+
"book/text/text_editing/links.glyph",
|
80
|
+
"book/text/text_editing/macro_intro.glyph",
|
81
|
+
"book/text/text_editing/raw_html.glyph",
|
82
|
+
"book/text/text_editing/sections.glyph",
|
83
|
+
"book/text/text_editing/stylesheets.glyph",
|
84
|
+
"book/text/troubleshooting/errors_command.glyph",
|
85
|
+
"book/text/troubleshooting/errors_generic.glyph",
|
86
|
+
"book/text/troubleshooting/errors_intro.glyph",
|
87
|
+
"book/text/troubleshooting/errors_macro.glyph",
|
88
|
+
"book/text/troubleshooting/errors_parser.glyph",
|
57
89
|
"config.yml",
|
58
90
|
"document.glyph",
|
59
91
|
"glyph.gemspec",
|
@@ -61,18 +93,19 @@ Gem::Specification.new do |s|
|
|
61
93
|
"lib/glyph/commands.rb",
|
62
94
|
"lib/glyph/config.rb",
|
63
95
|
"lib/glyph/document.rb",
|
64
|
-
"lib/glyph/glyph_language.rb",
|
65
|
-
"lib/glyph/glyph_language.treetop",
|
66
96
|
"lib/glyph/interpreter.rb",
|
67
97
|
"lib/glyph/macro.rb",
|
68
98
|
"lib/glyph/macro_validators.rb",
|
69
99
|
"lib/glyph/node.rb",
|
100
|
+
"lib/glyph/parser.rb",
|
101
|
+
"lib/glyph/syntax_node.rb",
|
70
102
|
"lib/glyph/system_extensions.rb",
|
71
|
-
"macros/
|
103
|
+
"macros/core.rb",
|
72
104
|
"macros/filters.rb",
|
73
105
|
"macros/html/block.rb",
|
74
106
|
"macros/html/inline.rb",
|
75
107
|
"macros/html/structure.rb",
|
108
|
+
"macros/xml.rb",
|
76
109
|
"spec/files/article.glyph",
|
77
110
|
"spec/files/container.textile",
|
78
111
|
"spec/files/document.glyph",
|
@@ -89,9 +122,13 @@ Gem::Specification.new do |s|
|
|
89
122
|
"spec/lib/macro_spec.rb",
|
90
123
|
"spec/lib/macro_validators_spec.rb",
|
91
124
|
"spec/lib/node_spec.rb",
|
125
|
+
"spec/lib/parser_spec.rb",
|
126
|
+
"spec/lib/syntax_node_spec.rb",
|
127
|
+
"spec/macros/core_spec.rb",
|
92
128
|
"spec/macros/filters_spec.rb",
|
93
129
|
"spec/macros/macros_spec.rb",
|
94
130
|
"spec/macros/textile_spec.rb",
|
131
|
+
"spec/macros/xml_spec.rb",
|
95
132
|
"spec/spec_helper.rb",
|
96
133
|
"spec/tasks/generate_spec.rb",
|
97
134
|
"spec/tasks/load_spec.rb",
|
@@ -130,8 +167,10 @@ Gem::Specification.new do |s|
|
|
130
167
|
s.rubygems_version = %q{1.3.6}
|
131
168
|
s.summary = %q{Glyph -- A Ruby-powered Document Authoring Framework}
|
132
169
|
s.test_files = [
|
133
|
-
"spec/macros/
|
170
|
+
"spec/macros/core_spec.rb",
|
171
|
+
"spec/macros/filters_spec.rb",
|
134
172
|
"spec/macros/textile_spec.rb",
|
173
|
+
"spec/macros/xml_spec.rb",
|
135
174
|
"spec/macros/macros_spec.rb",
|
136
175
|
"spec/lib/interpreter_spec.rb",
|
137
176
|
"spec/lib/commands_spec.rb",
|
@@ -140,6 +179,8 @@ Gem::Specification.new do |s|
|
|
140
179
|
"spec/lib/macro_validators_spec.rb",
|
141
180
|
"spec/lib/config_spec.rb",
|
142
181
|
"spec/lib/glyph_spec.rb",
|
182
|
+
"spec/lib/parser_spec.rb",
|
183
|
+
"spec/lib/syntax_node_spec.rb",
|
143
184
|
"spec/lib/document_spec.rb",
|
144
185
|
"spec/tasks/load_spec.rb",
|
145
186
|
"spec/tasks/generate_spec.rb",
|
@@ -154,46 +195,40 @@ Gem::Specification.new do |s|
|
|
154
195
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
155
196
|
s.add_runtime_dependency(%q<gli>, [">= 0.3.1"])
|
156
197
|
s.add_runtime_dependency(%q<extlib>, [">= 0.9.12"])
|
157
|
-
s.add_runtime_dependency(%q<treetop>, [">= 0.4.3"])
|
158
198
|
s.add_runtime_dependency(%q<rake>, [">= 0.8.7"])
|
159
199
|
s.add_development_dependency(%q<rspec>, [">= 1.1.11"])
|
160
200
|
s.add_development_dependency(%q<yard>, [">= 1.5.4"])
|
161
201
|
s.add_development_dependency(%q<jeweler>, ["= 1.4.0"])
|
162
202
|
s.add_development_dependency(%q<directory_watcher>, [">= 1.3.2"])
|
163
|
-
s.add_development_dependency(%q<haml>, [">=
|
203
|
+
s.add_development_dependency(%q<haml>, [">= 3.0.6"])
|
164
204
|
s.add_development_dependency(%q<RedCloth>, [">= 4.2.3"])
|
165
205
|
s.add_development_dependency(%q<bluecloth>, [">= 2.0.7"])
|
166
206
|
s.add_development_dependency(%q<coderay>, [">= 0.9.3"])
|
167
|
-
s.add_development_dependency(%q<ruby-prof>, [">= 0.8.1"])
|
168
207
|
else
|
169
208
|
s.add_dependency(%q<gli>, [">= 0.3.1"])
|
170
209
|
s.add_dependency(%q<extlib>, [">= 0.9.12"])
|
171
|
-
s.add_dependency(%q<treetop>, [">= 0.4.3"])
|
172
210
|
s.add_dependency(%q<rake>, [">= 0.8.7"])
|
173
211
|
s.add_dependency(%q<rspec>, [">= 1.1.11"])
|
174
212
|
s.add_dependency(%q<yard>, [">= 1.5.4"])
|
175
213
|
s.add_dependency(%q<jeweler>, ["= 1.4.0"])
|
176
214
|
s.add_dependency(%q<directory_watcher>, [">= 1.3.2"])
|
177
|
-
s.add_dependency(%q<haml>, [">=
|
215
|
+
s.add_dependency(%q<haml>, [">= 3.0.6"])
|
178
216
|
s.add_dependency(%q<RedCloth>, [">= 4.2.3"])
|
179
217
|
s.add_dependency(%q<bluecloth>, [">= 2.0.7"])
|
180
218
|
s.add_dependency(%q<coderay>, [">= 0.9.3"])
|
181
|
-
s.add_dependency(%q<ruby-prof>, [">= 0.8.1"])
|
182
219
|
end
|
183
220
|
else
|
184
221
|
s.add_dependency(%q<gli>, [">= 0.3.1"])
|
185
222
|
s.add_dependency(%q<extlib>, [">= 0.9.12"])
|
186
|
-
s.add_dependency(%q<treetop>, [">= 0.4.3"])
|
187
223
|
s.add_dependency(%q<rake>, [">= 0.8.7"])
|
188
224
|
s.add_dependency(%q<rspec>, [">= 1.1.11"])
|
189
225
|
s.add_dependency(%q<yard>, [">= 1.5.4"])
|
190
226
|
s.add_dependency(%q<jeweler>, ["= 1.4.0"])
|
191
227
|
s.add_dependency(%q<directory_watcher>, [">= 1.3.2"])
|
192
|
-
s.add_dependency(%q<haml>, [">=
|
228
|
+
s.add_dependency(%q<haml>, [">= 3.0.6"])
|
193
229
|
s.add_dependency(%q<RedCloth>, [">= 4.2.3"])
|
194
230
|
s.add_dependency(%q<bluecloth>, [">= 2.0.7"])
|
195
231
|
s.add_dependency(%q<coderay>, [">= 0.9.3"])
|
196
|
-
s.add_dependency(%q<ruby-prof>, [">= 0.8.1"])
|
197
232
|
end
|
198
233
|
end
|
199
234
|
|
data/lib/glyph.rb
CHANGED
@@ -7,7 +7,6 @@ require 'pathname'
|
|
7
7
|
require 'yaml'
|
8
8
|
require 'gli'
|
9
9
|
require 'extlib'
|
10
|
-
require 'treetop'
|
11
10
|
require 'rake'
|
12
11
|
|
13
12
|
# Glyph is a Rapid Document Authoring Framework able to produce structured documents effortlessly.
|
@@ -29,14 +28,32 @@ module Glyph
|
|
29
28
|
require LIB/'config'
|
30
29
|
require LIB/'node'
|
31
30
|
require LIB/'document'
|
32
|
-
require LIB/'glyph_language'
|
33
31
|
require LIB/'macro_validators'
|
34
32
|
require LIB/'macro'
|
33
|
+
require LIB/'syntax_node'
|
34
|
+
require LIB/'parser'
|
35
35
|
require LIB/'interpreter'
|
36
36
|
|
37
37
|
class Error < RuntimeError; end
|
38
38
|
class SyntaxError < Error; end
|
39
|
-
class MacroError < Error
|
39
|
+
class MacroError < Error
|
40
|
+
attr_reader :macro
|
41
|
+
|
42
|
+
# Initializes a new Glyph::MacroError
|
43
|
+
# @param [String] message the error message
|
44
|
+
# @param [Glyph::Macro] macro the macro that caused the error
|
45
|
+
def initialize(message, macro)
|
46
|
+
@macro = macro
|
47
|
+
super(message)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Displays the error message, source, path and node value (if debugging)
|
51
|
+
def display
|
52
|
+
Glyph.warning exception.message
|
53
|
+
Glyph.msg " source: #{@macro.source}\n path: #{@macro.path}"
|
54
|
+
Glyph.msg "#{"-"*54}\n#{@macro.node.to_s.gsub(/\t/, ' ')}\n#{"-"*54}" if Glyph.debug?
|
55
|
+
end
|
56
|
+
end
|
40
57
|
class MutualInclusionError < MacroError; end
|
41
58
|
|
42
59
|
# The current version of Glyph
|
@@ -50,8 +67,13 @@ module Glyph
|
|
50
67
|
|
51
68
|
begin
|
52
69
|
unless const_defined? :MODE then
|
53
|
-
|
54
|
-
|
70
|
+
MODE = {
|
71
|
+
:debug => false,
|
72
|
+
:lite => false,
|
73
|
+
:test => false,
|
74
|
+
:library => false,
|
75
|
+
:safe => false
|
76
|
+
}
|
55
77
|
end
|
56
78
|
rescue
|
57
79
|
end
|
@@ -60,7 +82,7 @@ module Glyph
|
|
60
82
|
@@document = nil
|
61
83
|
|
62
84
|
(class << self; self; end).instance_eval do
|
63
|
-
["test", "lite", "debug", "library"].each do |mode|
|
85
|
+
["test", "lite", "debug", "library", "safe"].each do |mode|
|
64
86
|
define_method((mode+"?").to_sym) do
|
65
87
|
MODE[mode.to_sym]
|
66
88
|
end
|
@@ -176,6 +198,12 @@ module Glyph
|
|
176
198
|
MACROS[name.to_sym] = block
|
177
199
|
end
|
178
200
|
|
201
|
+
def self.rewrite(name, &block)
|
202
|
+
MACROS[name.to_sym] = lambda do
|
203
|
+
rewrite &block
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
179
207
|
# Defines an alias for an existing macro
|
180
208
|
# @param [Hash] text the single-key hash defining the alias
|
181
209
|
# @example
|
@@ -198,7 +226,7 @@ module Glyph
|
|
198
226
|
Dir.chdir Pathname.new(src).parent.to_s
|
199
227
|
begin
|
200
228
|
require 'glyph/commands'
|
201
|
-
self[
|
229
|
+
self['system.quiet'] = true
|
202
230
|
self.library_mode = true
|
203
231
|
GLI.run ["compile", src.to_s, out].compact
|
204
232
|
rescue Exception => e
|
@@ -207,7 +235,7 @@ module Glyph
|
|
207
235
|
Dir.chdir pwd
|
208
236
|
self.library_mode = false
|
209
237
|
self.lite_mode = false
|
210
|
-
self[
|
238
|
+
self['system.quiet'] = false
|
211
239
|
end
|
212
240
|
end
|
213
241
|
|
@@ -224,7 +252,7 @@ module Glyph
|
|
224
252
|
self.enable_all
|
225
253
|
result = ""
|
226
254
|
begin
|
227
|
-
self[
|
255
|
+
self['system.quiet'] = true
|
228
256
|
self.library_mode = true
|
229
257
|
self.run 'load:all'
|
230
258
|
result = Interpreter.new(text).document.output
|
@@ -233,27 +261,40 @@ module Glyph
|
|
233
261
|
ensure
|
234
262
|
self.lite_mode = false
|
235
263
|
self.library_mode = false
|
236
|
-
self[
|
264
|
+
self['system.quiet'] = false
|
237
265
|
end
|
238
266
|
result
|
239
267
|
end
|
240
268
|
|
269
|
+
|
241
270
|
# Prints a message
|
242
271
|
# @param [String] message the message to print
|
272
|
+
def self.msg(message)
|
273
|
+
puts message unless Glyph['system.quiet']
|
274
|
+
end
|
275
|
+
|
276
|
+
# Prints an informational message
|
277
|
+
# @param [String] message the message to print
|
243
278
|
def self.info(message)
|
244
|
-
puts "#{message}" unless Glyph[
|
279
|
+
puts "-- #{message}" unless Glyph['system.quiet']
|
245
280
|
end
|
246
281
|
|
247
282
|
# Prints a warning
|
248
283
|
# @param [String] message the message to print
|
249
284
|
def self.warning(message)
|
250
|
-
puts "
|
285
|
+
puts "-> warning: #{message}" unless Glyph['system.quiet']
|
251
286
|
end
|
252
287
|
|
253
288
|
# Prints an error
|
254
289
|
# @param [String] message the message to print
|
255
290
|
def self.error(message)
|
256
|
-
puts "
|
291
|
+
puts "=> error: #{message}" unless Glyph['system.quiet']
|
292
|
+
end
|
293
|
+
|
294
|
+
# Prints a message if running in debug mode
|
295
|
+
# @param [String] message the message to print
|
296
|
+
def self.debug(message)
|
297
|
+
puts message if Glyph.debug?
|
257
298
|
end
|
258
299
|
|
259
300
|
end
|
data/lib/glyph/commands.rb
CHANGED
@@ -29,13 +29,13 @@ command :compile do |c|
|
|
29
29
|
c.desc "Specify the format of the output file (default: html)"
|
30
30
|
c.flag [:f, :format]
|
31
31
|
c.desc "Auto-regenerate output on file changes"
|
32
|
-
c.switch :auto
|
32
|
+
c.switch [:a, :auto]
|
33
33
|
c.action do |global_options, options, args|
|
34
34
|
raise ArgumentError, "Too many arguments" if args.length > 2
|
35
35
|
Glyph.lite_mode = true unless args.blank?
|
36
36
|
Glyph.run! 'load:config'
|
37
37
|
original_config = Glyph::CONFIG.dup
|
38
|
-
output_targets = Glyph
|
38
|
+
output_targets = Glyph['system.output_targets']
|
39
39
|
target = nil
|
40
40
|
Glyph['document.output'] = options[:f] if options[:f]
|
41
41
|
target = Glyph['document.output']
|
@@ -74,7 +74,7 @@ command :compile do |c|
|
|
74
74
|
end
|
75
75
|
|
76
76
|
# Auto-regeneration
|
77
|
-
if options[:
|
77
|
+
if options[:a] && !Glyph.lite? then
|
78
78
|
Glyph.lite_mode = false
|
79
79
|
begin
|
80
80
|
require 'directory_watcher'
|
@@ -113,11 +113,26 @@ end
|
|
113
113
|
GLI.desc 'Display all project TODO items'
|
114
114
|
command :todo do |c|
|
115
115
|
c.action do |global_options, options, args|
|
116
|
+
Glyph['system.quiet'] = true
|
116
117
|
Glyph.run "generate:document"
|
118
|
+
Glyph['system.quiet'] = false
|
117
119
|
unless Glyph.document.todos.blank?
|
118
|
-
|
119
|
-
Glyph
|
120
|
-
|
120
|
+
puts "====================================="
|
121
|
+
puts "#{Glyph['document.title']} - TODOs"
|
122
|
+
puts "====================================="
|
123
|
+
# Group items
|
124
|
+
if Glyph.document.todos.respond_to? :group_by then
|
125
|
+
Glyph.document.todos.group_by{|e| e[:source]}.each_pair do |k, v|
|
126
|
+
puts
|
127
|
+
puts "=== #{k} "
|
128
|
+
v.each do |i|
|
129
|
+
puts " * #{i[:text]}"
|
130
|
+
end
|
131
|
+
end
|
132
|
+
else
|
133
|
+
Glyph.document.todos.each do |t|
|
134
|
+
Glyph.info t
|
135
|
+
end
|
121
136
|
end
|
122
137
|
else
|
123
138
|
Glyph.info "Nothing left to do."
|
@@ -125,6 +140,52 @@ command :todo do |c|
|
|
125
140
|
end
|
126
141
|
end
|
127
142
|
|
143
|
+
GLI.desc 'Display the document outline'
|
144
|
+
command :outline do |c|
|
145
|
+
c.desc "Limit to level N"
|
146
|
+
c.flag :l, :level
|
147
|
+
c.desc "Show file names"
|
148
|
+
c.switch :f, :files
|
149
|
+
c.desc "Show titles"
|
150
|
+
c.switch :t, :titles
|
151
|
+
c.desc "Show IDs"
|
152
|
+
c.switch :i, :ids
|
153
|
+
c.action do |global_options, options, args|
|
154
|
+
levels = options[:l]
|
155
|
+
ids = options[:i]
|
156
|
+
files = options[:f]
|
157
|
+
titles = options[:t]
|
158
|
+
titles = true if !ids && !levels && !files || levels && !ids
|
159
|
+
Glyph['system.quiet'] = true
|
160
|
+
Glyph.run "generate:document"
|
161
|
+
Glyph['system.quiet'] = false
|
162
|
+
puts "====================================="
|
163
|
+
puts "#{Glyph['document.title']} - Outline"
|
164
|
+
puts "====================================="
|
165
|
+
Glyph.document.structure.descend do |n, level|
|
166
|
+
if n.is_a?(Glyph::MacroNode) then
|
167
|
+
case
|
168
|
+
when n[:name].in?(Glyph['system.structure.headers']) then
|
169
|
+
header = Glyph.document.header?(n[:header])
|
170
|
+
next if !header || levels && header[:level]-1 > levels.to_i
|
171
|
+
last_level = header[:level]
|
172
|
+
h_id = ids ? "[##{header[:id]}]" : ""
|
173
|
+
h_title = titles ? "#{header[:title]} " : ""
|
174
|
+
text = (" "*(header[:level]-1))+"- "+h_title+h_id
|
175
|
+
puts text unless text.blank?
|
176
|
+
when n[:name] == :include then
|
177
|
+
if files && n.find_parent{|p| p[:name] == :document && p.is_a?(Glyph::MacroNode)} then
|
178
|
+
# When using the book or article macros, includes appear twice:
|
179
|
+
# * in the macro parameters
|
180
|
+
# * as children of the document macro
|
181
|
+
puts "=== #{n.param(0)}"
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
128
189
|
GLI.desc 'Get/set configuration settings'
|
129
190
|
arg_name "setting [new_value]"
|
130
191
|
command :config do |c|
|
@@ -145,15 +206,19 @@ command :config do |c|
|
|
145
206
|
raise RuntimeError, "Unknown setting '#{args[0]}'" if setting.blank?
|
146
207
|
Glyph.info setting
|
147
208
|
when 2 then
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
209
|
+
if args[0].match /^system\..+/ then
|
210
|
+
Glyph.warning "Cannot reset '#@value' setting (system use only)."
|
211
|
+
else
|
212
|
+
# Remove all overrides
|
213
|
+
Glyph.config_reset
|
214
|
+
# Reload current project config
|
215
|
+
config.read
|
216
|
+
config.set args[0], args[1]
|
217
|
+
# Write changes to file
|
218
|
+
config.write
|
219
|
+
# Refresh configuration
|
220
|
+
Glyph.config_refresh
|
221
|
+
end
|
157
222
|
else
|
158
223
|
raise ArgumentError, "Too many arguments."
|
159
224
|
end
|
@@ -180,12 +245,14 @@ post do |global,command,options,args|
|
|
180
245
|
end
|
181
246
|
|
182
247
|
on_error do |exception|
|
248
|
+
raise if Glyph.library?
|
183
249
|
if exception.is_a? Glyph::MacroError then
|
184
|
-
|
250
|
+
exception.display
|
185
251
|
false
|
186
252
|
else
|
187
253
|
if Glyph.debug? then
|
188
|
-
|
254
|
+
Glyph.warning exception.message
|
255
|
+
puts "\n"+"-"*20+"[ Backtrace: ]"+"-"*20
|
189
256
|
puts "Backtrace:"
|
190
257
|
exception.backtrace.each do |b|
|
191
258
|
puts b
|