glyph 0.4.2 → 0.5.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/Rakefile +19 -40
- data/benchmark.rb +1 -2
- data/book/config.yml +8 -8
- data/book/document.glyph +18 -19
- data/book/images/glyph/commands_tasks.png +0 -0
- data/book/lib/layouts/bookindex.glyph +113 -111
- data/book/lib/layouts/bookpage.glyph +112 -108
- data/book/lib/macros/reference.rb +2 -2
- data/book/lib/tasks/tasks.rake +1 -1
- data/book/text/acknowledgements.glyph +1 -0
- data/book/text/changelog.glyph +140 -112
- data/book/text/compiling/compiling.glyph +36 -24
- data/book/text/compiling/lite_mode.glyph +11 -11
- data/book/text/compiling/programmatic_usage.glyph +57 -57
- data/book/text/config/document.glyph +7 -1
- data/book/text/config/options.glyph +5 -3
- data/book/text/config/output.glyph +41 -8
- data/book/text/extending/bookmarks_headers.glyph +13 -11
- data/book/text/extending/command.glyph +1 -1
- data/book/text/extending/commands_tasks.glyph +2 -2
- data/book/text/extending/internals.glyph +29 -29
- data/book/text/extending/interpreting.glyph +48 -9
- data/book/text/extending/macro_def.glyph +80 -32
- data/book/text/extending/output_format.glyph +2 -2
- data/book/text/extending/placeholders.glyph +27 -15
- data/book/text/extending/validators.glyph +1 -1
- data/book/text/getting_started/configuration.glyph +1 -1
- data/book/text/getting_started/create_project.glyph +4 -5
- data/book/text/getting_started/structure.glyph +2 -2
- data/book/text/macros/macros_core.glyph +341 -199
- data/book/text/macros/macros_filters.glyph +1 -1
- data/book/text/macros/macros_inline.glyph +3 -3
- data/book/text/macros/macros_structure.glyph +1 -1
- data/book/text/ref_commands.glyph +98 -93
- data/book/text/snippets.glyph +18 -0
- data/book/text/stats/bookmarks.glyph +16 -16
- data/book/text/stats/links.glyph +23 -23
- data/book/text/stats/macros.glyph +14 -14
- data/book/text/stats/snippets.glyph +26 -26
- data/book/text/stats/stats.glyph +14 -15
- data/book/text/text_editing/attribute_intro.glyph +8 -8
- data/book/text/text_editing/code.glyph +16 -16
- data/book/text/text_editing/conditionals.glyph +12 -13
- data/book/text/text_editing/esc_quot.glyph +3 -3
- data/book/text/text_editing/evaluation.glyph +57 -3
- data/book/text/text_editing/inclusions.glyph +34 -25
- data/book/text/text_editing/macro_composition.glyph +28 -0
- data/book/text/text_editing/macro_intro.glyph +4 -4
- data/book/text/text_editing/section_aliases.glyph +23 -23
- data/book/text/text_editing/sections.glyph +22 -22
- data/book/text/text_editing/stylesheets.glyph +33 -33
- data/book/text/text_editing/topics.glyph +6 -6
- data/book/text/text_editing/xml_fallback.glyph +1 -1
- data/book/text/troubleshooting/errors_command.glyph +4 -4
- data/book/text/troubleshooting/errors_generic.glyph +16 -10
- data/book/text/troubleshooting/errors_macro.glyph +18 -21
- data/book/text/troubleshooting/errors_parser.glyph +7 -7
- data/config.yml +51 -29
- data/document.glyph +18 -18
- data/glyph.gemspec +39 -287
- data/layouts/web5/topic.glyph +1 -1
- data/lib/glyph.rb +42 -10
- data/lib/glyph/analyzer.rb +5 -2
- data/lib/glyph/bookmark.rb +3 -1
- data/lib/glyph/commands.rb +11 -9
- data/lib/glyph/commands/add.rb +3 -1
- data/lib/glyph/commands/compile.rb +10 -7
- data/lib/glyph/commands/config.rb +7 -5
- data/lib/glyph/commands/init.rb +2 -0
- data/lib/glyph/commands/outline.rb +2 -0
- data/lib/glyph/commands/stats.rb +3 -0
- data/lib/glyph/commands/todo.rb +2 -0
- data/lib/glyph/config.rb +2 -0
- data/lib/glyph/document.rb +34 -9
- data/lib/glyph/interpreter.rb +2 -0
- data/lib/glyph/macro.rb +97 -25
- data/lib/glyph/macro_validators.rb +9 -6
- data/lib/glyph/node.rb +3 -1
- data/lib/glyph/parser.rb +68 -33
- data/lib/glyph/reporter.rb +3 -1
- data/lib/glyph/syntax_node.rb +23 -28
- data/lib/glyph/system_extensions.rb +21 -0
- data/lib/glyph/utils.rb +24 -4
- data/macros/block.rb +111 -0
- data/macros/core.rb +163 -33
- data/macros/filters.rb +3 -2
- data/macros/inline.rb +97 -0
- data/macros/reps/html.rb +180 -0
- data/macros/reps/html5.rb +100 -0
- data/macros/reps/web.rb +4 -0
- data/macros/reps/web5.rb +4 -0
- data/macros/structure.rb +229 -0
- data/macros/xml.rb +29 -24
- data/spec/config.yml +7 -0
- data/spec/files/article.glyph +2 -2
- data/spec/files/web_doc.glyph +9 -5
- data/spec/lib/commands_spec.rb +13 -9
- data/spec/lib/config_spec.rb +2 -2
- data/spec/lib/document_spec.rb +10 -0
- data/spec/lib/glyph_spec.rb +30 -8
- data/spec/lib/macro_spec.rb +39 -4
- data/spec/lib/macro_validators_spec.rb +3 -4
- data/spec/lib/parser_spec.rb +7 -0
- data/spec/lib/reporter_spec.rb +1 -0
- data/spec/lib/syntax_node_spec.rb +40 -6
- data/spec/macros/core_spec.rb +154 -21
- data/spec/macros/filters_spec.rb +1 -1
- data/spec/macros/html5_spec.rb +4 -5
- data/spec/macros/macros_spec.rb +6 -7
- data/spec/macros/web5_spec.rb +3 -3
- data/spec/macros/web_spec.rb +10 -7
- data/spec/macros/xml_spec.rb +11 -2
- data/spec/spec_helper.rb +11 -5
- data/spec/tasks/generate_spec.rb +40 -5
- data/spec/tasks/load_spec.rb +1 -13
- data/styles/coderay.css +147 -38
- data/styles/default.css +19 -22
- data/styles/pagination.css +30 -30
- data/tasks/generate.rake +54 -18
- data/tasks/load.rake +9 -24
- data/tasks/project.rake +0 -2
- metadata +208 -207
- data/.gitignore +0 -7
- data/VERSION +0 -1
- data/book/snippets.yml +0 -18
- data/lib/glyph/macro_helpers.rb +0 -282
- data/macros/html/block.rb +0 -124
- data/macros/html/inline.rb +0 -42
- data/macros/html/structure.rb +0 -191
- data/macros/html5/block.rb +0 -69
- data/macros/html5/inline.rb +0 -24
- data/macros/html5/structure.rb +0 -140
data/.gitignore
DELETED
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.4.2
|
data/book/snippets.yml
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
:glang: Glyph Language
|
|
3
|
-
:macros: Glyph Macros
|
|
4
|
-
:sq_esc: Square brackets must be escaped unless used as macro delimiters or within a quoting macro.
|
|
5
|
-
:gcode: "The following Glyph code:"
|
|
6
|
-
:htmlcode: "Is translated into the following HTML code:"
|
|
7
|
-
:markups: Textile or Markdown
|
|
8
|
-
:filter_by_ext: "the $>[options.filters_by_file_extension] is @true@"
|
|
9
|
-
:called_on_files: "If &[filter_by_ext], this macro is called automatically on =>[#m_include|included] files"
|
|
10
|
-
:only_after_declaration: "can only be used _after_ its declaration"
|
|
11
|
-
:coderay: "=>[http://coderay.rubychan.de/|Coderay]"
|
|
12
|
-
:uv: "=>[http://ultraviolet.rubyforge.org/|Ultraviolet]"
|
|
13
|
-
:yardoc: "http://yardoc.org/docs/h3rald-glyph"
|
|
14
|
-
:unsafe: "This macro cannot be used in =>[#modes|safe mode]."
|
|
15
|
-
:bin_params: "-p[0|The first expression to test]-p[1|The second expression to test]"
|
|
16
|
-
:img_file: "The name of the image file (relative to the code[images/] folder)."
|
|
17
|
-
:img_attrs: "Any attribute supported by the =>[http://www.w3schools.com/tags/tag_IMG.asp|img tag]."
|
|
18
|
-
:opt: "em[(optional)]"
|
data/lib/glyph/macro_helpers.rb
DELETED
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
module Glyph
|
|
2
|
-
class Macro
|
|
3
|
-
|
|
4
|
-
# This module includes some output-agnostic methods used by the most common Glyph macros.
|
|
5
|
-
# @since 0.4.0
|
|
6
|
-
module Helpers
|
|
7
|
-
|
|
8
|
-
# Renders a link
|
|
9
|
-
# @param [String] target the target of the link
|
|
10
|
-
# @param[String] title the title of the link
|
|
11
|
-
# @yield [link_path, link_title] the block to call to render the link
|
|
12
|
-
# @yieldparam [String] link_path the path to the link target
|
|
13
|
-
# @yieldparam [String] link_title the title of the link
|
|
14
|
-
def link_element_for(target, title, &block)
|
|
15
|
-
if target.match /^#/ then
|
|
16
|
-
@node[:document].links << target
|
|
17
|
-
anchor = target.gsub /^#/, ''
|
|
18
|
-
bmk = bookmark? anchor
|
|
19
|
-
if !bmk then
|
|
20
|
-
placeholder do |document|
|
|
21
|
-
bmk = document.bookmark?(anchor)
|
|
22
|
-
macro_error "Bookmark '#{anchor}' does not exist" unless bmk
|
|
23
|
-
bmk_title = title
|
|
24
|
-
bmk_title = bmk.title if bmk_title.blank?
|
|
25
|
-
block.call bmk.link(@source_file), bmk_title
|
|
26
|
-
end
|
|
27
|
-
else
|
|
28
|
-
bmk_title = title
|
|
29
|
-
bmk_title = bmk.title if bmk_title.blank?
|
|
30
|
-
block.call bmk.link(@source_file), bmk_title
|
|
31
|
-
end
|
|
32
|
-
else
|
|
33
|
-
if Glyph['options.url_validation'] && !@node[:document].links.include?(target) then
|
|
34
|
-
begin
|
|
35
|
-
url = URI.parse(target.gsub(/\\\./, ''))
|
|
36
|
-
rescue Exception => e
|
|
37
|
-
macro_warning "Invalid URL: #{url||target}", e
|
|
38
|
-
end
|
|
39
|
-
response = Net::HTTP.get_response(url)
|
|
40
|
-
debug "Checking link URL: #{url} (#{response.code})"
|
|
41
|
-
if response.code.to_i > 302 then
|
|
42
|
-
macro_warning "Linked URL '#{url}' returned status #{response.code} (#{response.message})"
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
@node[:document].links << target
|
|
46
|
-
title ||= target
|
|
47
|
-
block.call target, title
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Renders a For More Information note
|
|
52
|
-
# @param [String] topic the topic of the note
|
|
53
|
-
# @param [String] href the reference to link to
|
|
54
|
-
# @yield [topic, link] the block used to render the FMI note
|
|
55
|
-
def fmi_element_for(topic, href, &block)
|
|
56
|
-
link = placeholder do |document|
|
|
57
|
-
interpret "link[#{href}]"
|
|
58
|
-
end
|
|
59
|
-
block.call topic, link
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Renders a draft comment element
|
|
63
|
-
# @yield [value] the block used to render the comment
|
|
64
|
-
# @yieldparam [String] value the comment text
|
|
65
|
-
def draftcomment_element(&block)
|
|
66
|
-
if Glyph['document.draft'] then
|
|
67
|
-
block.call value
|
|
68
|
-
else
|
|
69
|
-
""
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Renders a todo element
|
|
74
|
-
# @yield [value] the block used to render the todo element
|
|
75
|
-
# @yieldparam [String] value the todo text
|
|
76
|
-
def todo_element(&block)
|
|
77
|
-
todo = {:source => @source_name, :text => value}
|
|
78
|
-
@node[:document].todos << todo unless @node[:document].todos.include? todo
|
|
79
|
-
if Glyph['document.draft'] then
|
|
80
|
-
block.call value
|
|
81
|
-
else
|
|
82
|
-
""
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# Renders an image element
|
|
87
|
-
# @param [String] image the image to render
|
|
88
|
-
# @param [String] alt the value of the image's ALT tag
|
|
89
|
-
# @yield [alt, dest_file] the block used to render the image
|
|
90
|
-
def image_element_for(image, alt, &block)
|
|
91
|
-
src_file = Glyph.lite? ? image : Glyph::PROJECT/"images/#{image}"
|
|
92
|
-
dest_file = Glyph.lite? ? image : "images/#{image}"
|
|
93
|
-
warning "Image '#{image}' not found" unless Pathname.new(src_file).exist?
|
|
94
|
-
block.call alt, dest_file
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# Renders a figure element
|
|
98
|
-
# @param [String] image the image to render
|
|
99
|
-
# @param [String] alt the value of the image's ALT tag
|
|
100
|
-
# @param [String] caption
|
|
101
|
-
# @yield alt, dest_file, caption] the block used to render the figure
|
|
102
|
-
def figure_element_for(image, alt, caption, &block)
|
|
103
|
-
src_file = Glyph.lite? ? image : Glyph::PROJECT/"images/#{image}"
|
|
104
|
-
dest_file = Glyph.lite? ? image : "images/#{image}"
|
|
105
|
-
warning "Figure '#{image}' not found" unless Pathname.new(src_file).exist?
|
|
106
|
-
block.call alt, dest_file, caption
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# Renders a title element
|
|
110
|
-
def title_element(&block)
|
|
111
|
-
unless Glyph["document.title"].blank? then
|
|
112
|
-
block.call
|
|
113
|
-
else
|
|
114
|
-
""
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# Renders a subtitle element
|
|
119
|
-
def subtitle_element(&block)
|
|
120
|
-
unless Glyph["document.subtitle"].blank? then
|
|
121
|
-
block.call
|
|
122
|
-
else
|
|
123
|
-
""
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# Renders an author element
|
|
128
|
-
def author_element(&block)
|
|
129
|
-
unless Glyph['document.author'].blank? then
|
|
130
|
-
block.call
|
|
131
|
-
else
|
|
132
|
-
""
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# Renders a revision element
|
|
137
|
-
def revision_element(&block)
|
|
138
|
-
unless Glyph["document.revision"].blank? then
|
|
139
|
-
block.call
|
|
140
|
-
else
|
|
141
|
-
""
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
# Renders a Table of Contents
|
|
146
|
-
# @param [Integer] depth the maximum header level
|
|
147
|
-
# @param [String] title the title of the TOC
|
|
148
|
-
# @param [Hash] procs the Proc objects used to render the TOC
|
|
149
|
-
# @option procs [Proc] :link used to render TOC header links (parameters: Glyph::Header).
|
|
150
|
-
# @option procs [Proc] :toc_list used to render the TOC list (parameters: a Proc used to traverse the document tree, the Glyph::Bookmark used for the TOC header, a Glyph::Document)
|
|
151
|
-
# @option procs [Proc] :toc_item used to render a TOC item (parameters: an Array of header classes, a String used for the header link)
|
|
152
|
-
# @option procs [Proc] :toc_sublist used to render a TOC sublist (parameters: a String containing the contents of the list)
|
|
153
|
-
def toc_element_for(depth, title, procs={})
|
|
154
|
-
return @node[:document].toc[:contents] if @node[:document].toc[:contents]
|
|
155
|
-
link_header = procs[:link]
|
|
156
|
-
toc = placeholder do |document|
|
|
157
|
-
descend_section = lambda do |n1, added_headers|
|
|
158
|
-
list = ""
|
|
159
|
-
added_headers ||= []
|
|
160
|
-
n1.descend do |n2, level|
|
|
161
|
-
#if n2.is_a?(Glyph::MacroNode) && Glyph['system.structure.headers'].include?(n2[:name]) then
|
|
162
|
-
if n2.is_a?(Glyph::MacroNode) && n2[:name].in?(Glyph.titled_sections) then
|
|
163
|
-
if Glyph.multiple_output_files? then
|
|
164
|
-
# Only consider topics/booklets when building TOC for web/web5
|
|
165
|
-
next if !n2.attribute(:src) && n2.child_macros.select{|child| child.attribute(:src)}.blank?
|
|
166
|
-
end
|
|
167
|
-
next if n2.find_parent{|node| Glyph['system.structure.special'].include? node[:name] }
|
|
168
|
-
header_hash = n2[:header]
|
|
169
|
-
next if depth && header_hash && (header_hash.level-1 > depth.to_i) || header_hash && !header_hash.toc?
|
|
170
|
-
next if added_headers.include? header_hash
|
|
171
|
-
added_headers << header_hash
|
|
172
|
-
# Check if part of frontmatter, bodymatter or backmatter
|
|
173
|
-
container = n2.find_parent do |node|
|
|
174
|
-
node.is_a?(Glyph::MacroNode) &&
|
|
175
|
-
node[:name].in?([:frontmatter, :bodymatter, :appendix, :backmatter])
|
|
176
|
-
end[:name] rescue nil
|
|
177
|
-
list << procs[:toc_item].call([container, n2[:name]], link_header.call(header_hash)) if header_hash
|
|
178
|
-
child_list = ""
|
|
179
|
-
n2.children.each do |c|
|
|
180
|
-
child_list << descend_section.call(c, added_headers)
|
|
181
|
-
end
|
|
182
|
-
list << procs[:toc_sublist].call(child_list) unless child_list.blank?
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
list
|
|
186
|
-
end
|
|
187
|
-
title ||= "Table of Contents"
|
|
188
|
-
bmk = @node[:document].bookmark?(:toc) || bookmark(:id => :toc, :file => @source_file, :title => title)
|
|
189
|
-
procs[:toc_list].call descend_section, bmk, document
|
|
190
|
-
end
|
|
191
|
-
@node[:document].toc[:contents] = toc.to_s
|
|
192
|
-
toc
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# Renders a section element
|
|
196
|
-
# @param [Hash] procs the Proc objects used to render the section
|
|
197
|
-
# @option procs [Proc] :title used to render the section header (parameters: the header level, the section ID, the section title)
|
|
198
|
-
# @option procs [Proc] :body used to render the section body (parameters: the section title, the section body)
|
|
199
|
-
def section_element_for(procs={})
|
|
200
|
-
h = ""
|
|
201
|
-
if attr(:title) then
|
|
202
|
-
level = 1
|
|
203
|
-
@node.ascend do |n|
|
|
204
|
-
break if n.respond_to?(:attribute) && n.attribute(:class) && n.attribute(:class).children.join.strip == "topic"
|
|
205
|
-
#if n.is_a?(Glyph::MacroNode) && Glyph["system.structure.headers"].include?(n[:name]) then
|
|
206
|
-
if n.is_a?(Glyph::MacroNode) && n[:name].in?(Glyph.titled_sections) then
|
|
207
|
-
level+=1
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
ident = (attr(:id) || "h_#{@node[:document].headers.length+1}").to_sym
|
|
211
|
-
# The bookmark is added when the section is first processed; therefore it will exist already when a topic layout is processed
|
|
212
|
-
bmk = @node[:document].bookmark?(ident)
|
|
213
|
-
bmk ||= header :title => attr(:title),
|
|
214
|
-
:level => level,
|
|
215
|
-
:id => ident,
|
|
216
|
-
:toc => !attr(:notoc),
|
|
217
|
-
:definition => @source_file,
|
|
218
|
-
:file => (attr(:src) || @source_file)
|
|
219
|
-
@node[:header] = bmk
|
|
220
|
-
h = procs[:title].call level, bmk, attr(:title)
|
|
221
|
-
end
|
|
222
|
-
if attr(:src) then
|
|
223
|
-
# Create topic
|
|
224
|
-
if Glyph.multiple_output_files?
|
|
225
|
-
topic_id = (attr(:id) || "t_#{@node[:document].topics.length}").to_sym
|
|
226
|
-
layout = attr(:layout) || Glyph["output.#{Glyph['document.output']}.layouts.topic"] || :topic
|
|
227
|
-
layout_name = "layout:#{layout}".to_sym
|
|
228
|
-
macro_error "Layout '#{layout}' not found" unless Glyph::MACROS[layout_name]
|
|
229
|
-
result = interpret %{#{layout_name}[
|
|
230
|
-
@title[#{attr(:title)}]
|
|
231
|
-
@id[#{topic_id}]
|
|
232
|
-
@contents[include[@topic[true]#{attr(:src)}]]
|
|
233
|
-
]}
|
|
234
|
-
bmk = @node[:document].bookmark? topic_id
|
|
235
|
-
if bmk then
|
|
236
|
-
# Fix file for topic bookmark
|
|
237
|
-
@node[:document].bookmark?(topic_id).file = attr(:src)
|
|
238
|
-
else
|
|
239
|
-
bookmark :title => attr(:title), :id => topic_id, :file => attr(:src), :definition => @source_file
|
|
240
|
-
end
|
|
241
|
-
topic_src = attr(:src)
|
|
242
|
-
topic_src += ".glyph" unless topic_src.match /\..+$/
|
|
243
|
-
@node[:document].topics << {:src => topic_src, :title => attr(:title), :id => topic_id, :contents => result}
|
|
244
|
-
# Process section contents
|
|
245
|
-
procs[:body].call h, value
|
|
246
|
-
# Return nothing
|
|
247
|
-
nil
|
|
248
|
-
else
|
|
249
|
-
v = raw_value
|
|
250
|
-
@node.children.delete_if{|c| !c.is_a?(Glyph::AttributeNode)}
|
|
251
|
-
body = interpret "include[#{attr(:src)}]#{v}"
|
|
252
|
-
procs[:body].call h, body
|
|
253
|
-
end
|
|
254
|
-
else
|
|
255
|
-
procs[:body].call h, value
|
|
256
|
-
end
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
# Renders a navigation element
|
|
260
|
-
# @param [String] topic_id the ID of the current topic
|
|
261
|
-
# @param [Hash] procs the Proc objects used to render the navigation element
|
|
262
|
-
# @option procs [Proc] :previous the link to the previous topic
|
|
263
|
-
# @option procs [Proc] :next the link to the next topic
|
|
264
|
-
# @option procs [Proc] :contents the link to the document contents
|
|
265
|
-
def navigation_element_for(topic_id, procs={})
|
|
266
|
-
# Get the previous topic
|
|
267
|
-
previous_topic = @node[:document].topics.last
|
|
268
|
-
previous_link = procs[:previous].call previous_topic
|
|
269
|
-
# The next topic is not going to be available yet, use a placeholder
|
|
270
|
-
next_link = placeholder do |document|
|
|
271
|
-
current_topic = document.topics.select{|t| t[:id] == topic_id}[0] rescue nil
|
|
272
|
-
next_topic = document.topics[document.topics.index(current_topic)+1] rescue nil
|
|
273
|
-
procs[:next].call next_topic
|
|
274
|
-
end
|
|
275
|
-
contents_link = procs[:contents].call
|
|
276
|
-
procs[:navigation].call contents_link, previous_link, next_link
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
end
|
|
281
|
-
end
|
|
282
|
-
end
|
data/macros/html/block.rb
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
macro :note do
|
|
4
|
-
%{<div class="#{@name}">
|
|
5
|
-
<span class="note-title">#{@name.to_s.capitalize}</span>#{value}
|
|
6
|
-
|
|
7
|
-
</div>}
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
macro :box do
|
|
11
|
-
exact_parameters 2
|
|
12
|
-
%{<div class="box">
|
|
13
|
-
<div class="box-title">#{param(0)}</div>
|
|
14
|
-
#{param(1)}
|
|
15
|
-
|
|
16
|
-
</div>}
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
macro :codeblock do
|
|
20
|
-
exact_parameters 1
|
|
21
|
-
%{
|
|
22
|
-
<div class="code">
|
|
23
|
-
<pre>
|
|
24
|
-
<code>
|
|
25
|
-
#{value}
|
|
26
|
-
</code>
|
|
27
|
-
</pre>
|
|
28
|
-
</div>}
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
macro :image do
|
|
32
|
-
min_parameters 1
|
|
33
|
-
max_parameters 3
|
|
34
|
-
image = param(0)
|
|
35
|
-
alt = "@alt[-]" unless attr(:alt)
|
|
36
|
-
image_element_for image, alt do |alt, dest_file|
|
|
37
|
-
interpret "img[#{alt}@src[#{Glyph["output.#{Glyph['document.output']}.base"]}#{dest_file}]#{@node.attrs.join}]"
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
macro :figure do
|
|
42
|
-
min_parameters 1
|
|
43
|
-
max_parameters 2
|
|
44
|
-
image = param(0)
|
|
45
|
-
alt = "@alt[-]" unless attr(:alt)
|
|
46
|
-
caption = "div[@class[caption]#{param(1)}]" rescue nil
|
|
47
|
-
figure_element_for image, alt, caption do |alt, dest_file, caption|
|
|
48
|
-
interpret %{div[@class[figure]
|
|
49
|
-
img[#{alt}@src[#{Glyph["output.#{Glyph['document.output']}.base"]}#{dest_file}]#{@node.attrs.join}]
|
|
50
|
-
#{caption}
|
|
51
|
-
]}
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
macro :title do
|
|
56
|
-
no_parameters
|
|
57
|
-
title_element do
|
|
58
|
-
%{<h1>
|
|
59
|
-
#{Glyph["document.title"]}
|
|
60
|
-
</h1>}
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
macro :subtitle do
|
|
65
|
-
no_parameters
|
|
66
|
-
subtitle_element do
|
|
67
|
-
%{<h2>
|
|
68
|
-
#{Glyph["document.subtitle"]}
|
|
69
|
-
</h2>}
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
macro :author do
|
|
74
|
-
no_parameters
|
|
75
|
-
author_element do
|
|
76
|
-
%{<div class="author">
|
|
77
|
-
by <em>#{Glyph["document.author"]}</em>
|
|
78
|
-
</div>}
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
macro :pubdate do
|
|
83
|
-
no_parameters
|
|
84
|
-
%{<div class="pubdate">
|
|
85
|
-
#{Time.now.strftime("%B %Y")}
|
|
86
|
-
</div>}
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
macro :revision do
|
|
90
|
-
no_parameters
|
|
91
|
-
revision_element do
|
|
92
|
-
%{<div class="revision">#{Glyph['document.revision']}</div>}
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
macro :navigation do
|
|
97
|
-
exact_parameters 1
|
|
98
|
-
procs = {}
|
|
99
|
-
procs[:contents] = lambda do
|
|
100
|
-
%{<a href="#{Glyph["output.#{Glyph['document.output']}.base"]}index.html">Contents</a>}
|
|
101
|
-
end
|
|
102
|
-
procs[:previous] = lambda do |topic|
|
|
103
|
-
if topic then
|
|
104
|
-
%{<a href="#{Glyph["output.#{Glyph['document.output']}.base"]}#{topic[:src].gsub(/\..+$/, '.html')}">#{topic[:title]} ←</a>}
|
|
105
|
-
else
|
|
106
|
-
""
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
procs[:next] = lambda do |topic|
|
|
110
|
-
if topic then
|
|
111
|
-
%{<a href="#{Glyph["output.#{Glyph['document.output']}.base"]}#{topic[:src].gsub(/\..+$/, '.html')}">→ #{topic[:title]}</a>}
|
|
112
|
-
else
|
|
113
|
-
""
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
procs[:navigation] = lambda do |contents, prev_link, next_link|
|
|
117
|
-
%{<div class="navigation">#{prev_link}#{contents}#{next_link}</div>}
|
|
118
|
-
end
|
|
119
|
-
navigation_element_for param(0).to_sym, procs
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
macro_alias :important => :note
|
|
123
|
-
macro_alias :tip => :note
|
|
124
|
-
macro_alias :caution => :note
|
data/macros/html/inline.rb
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
macro :anchor do
|
|
4
|
-
min_parameters 1
|
|
5
|
-
max_parameters 2
|
|
6
|
-
bookmark :id => param(0), :title => param(1), :file => @source_file
|
|
7
|
-
%{<a id="#{param(0)}">#{(param(1) rescue nil)}</a>}
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
macro :link do
|
|
11
|
-
min_parameters 1
|
|
12
|
-
max_parameters 2
|
|
13
|
-
link_element_for param(0), param(1) do |target, title|
|
|
14
|
-
%{<a href="#{target}">#{title}</a>}
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
macro :fmi do
|
|
19
|
-
exact_parameters 2, :level => :warning
|
|
20
|
-
fmi_element_for param(0), param(1) do |topic, link|
|
|
21
|
-
%{<span class="fmi">for more information on #{topic}, see #{link}</span>}
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
macro :draftcomment do
|
|
26
|
-
draftcomment_element do |value|
|
|
27
|
-
%{<span class="comment"><span class="comment-pre"><strong>Comment:</strong> </span>#{value}</span>}
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
macro :todo do
|
|
32
|
-
exact_parameters 1
|
|
33
|
-
todo_element do |value|
|
|
34
|
-
%{<span class="todo"><span class="todo-pre"><strong>TODO:</strong> </span>#{value}</span>}
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
macro_alias :bookmark => :anchor
|
|
39
|
-
macro_alias '#' => :anchor
|
|
40
|
-
macro_alias '=>' => :link
|
|
41
|
-
macro_alias '!' => :todo
|
|
42
|
-
macro_alias :dc => :draftcomment
|