Module: Glyph
- Extended by:
- Utils
- Defined in:
- lib/glyph.rb,
lib/glyph/macro.rb,
lib/glyph/utils.rb,
lib/glyph/config.rb,
lib/glyph/parser.rb,
lib/glyph/analyzer.rb,
lib/glyph/bookmark.rb,
lib/glyph/document.rb,
lib/glyph/reporter.rb,
lib/glyph/interpreter.rb,
lib/glyph/syntax_node.rb,
lib/glyph/macro_validators.rb
Overview
Glyph is a Rapid Document Authoring Framework able to produce structured documents effortlessly.
Defined Under Namespace
Modules: Utils Classes: Analyzer, AttributeNode, Bookmark, Config, Document, DocumentNode, Error, EscapeNode, Header, Interpreter, Macro, MacroError, MacroNode, MutualInclusionError, ParameterNode, Parser, Reporter, SyntaxError, SyntaxNode, TextNode
Constant Summary collapse
- LIB =
The directory containing Glyph library files
Pathname(__FILE__).dirname./'glyph'
- HOME =
The directory containing the full Glyph installation
LIB/'../../'
- SPEC_DIR =
The directory containing all Glyph tests
Pathname(__FILE__).dirname./'../spec'
- TASKS_DIR =
The directory containing all Glyph Rake tasks
Pathname(__FILE__).dirname./'../tasks'
- VERSION =
The current version of Glyph
"0.5.3.1"
- MACROS =
All the currently-loaded macros
{}
- REPS =
All the currently-loaded macro representations
{}
- ALIASES =
All macro aliases
{:by_alias => {}, :by_def => {}}
- PROJECT =
The directory of the current Glyph project.
(Glyph.test?) ? Glyph::SPEC_DIR/"test_project" : Pathname.new(Dir.pwd)
- CONFIG =
Glyph’s configuration
Glyph::Config.new :resettable => true, :mutable => false
- SYSTEM_CONFIG =
System configuration
Glyph::Config.new(:file => HOME/'config.yml')
- GLOBAL_CONFIG =
Global configuration
Glyph.test? ? Glyph::Config.new(:file => SPEC_DIR/'.glyphrc') : Glyph::Config.new(:file => home_dir/'.glyphrc')
- PROJECT_CONFIG =
Project configuration
Glyph::Config.new(:file => PROJECT/'config.yml', :resettable => true) rescue Glyph::Config.new(:resettable => true, :mutable => true)
- @@document =
The main document being generated by Glyph
nil
Class Method Summary collapse
-
.[](setting) ⇒ Object
Returns the value of a configuration setting.
-
.[]=(setting, value) ⇒ Object
Overrides a configuration setting.
-
.compile(src, out = nil) ⇒ Object
Compiles a single Glyph file.
-
.config_refresh ⇒ Object
Restores Glyph configuration (keeping all overrides and project settings).
-
.config_reset ⇒ Object
Resets Glyph configuration (removing all overrides and project settings).
-
.define(name, text) ⇒ Object
Defines a new macro in Glyph code.
-
.document ⇒ Object
Used to access @@document.
-
.document=(document) ⇒ Object
Used to set @@document.
-
.enable(task) ⇒ Object
Reenables a Rake task.
-
.enable_all ⇒ Object
Reenables all Glyph Rake tasks.
-
.filter(text) ⇒ String
Converts a text containing Glyph markup language into the current Glyph output target.
-
.macro(name, &block) ⇒ Object
Defines a new macro.
-
.macro_alias(pair) ⇒ Object
Defines an alias for an existing macro.
-
.project_reps_for(output) ⇒ Object
Loads project macro representations for a given output.
-
.rep(name, &block) ⇒ Object
Defines a new macro representation.
-
.reps_for(output) ⇒ Object
Loads macro representations for a given output.
-
.reset ⇒ Object
Resets Glyph completely, i.e.: * Re-enables all Glyph Rake tasks * Resets the configuration to system defaults * Clears macros and snippets.
-
.run(task, *args) ⇒ Object
Runs a Rake task.
-
.run!(task, *args) ⇒ Object
Reenables and runs a Rake task.
-
.setup ⇒ Object
Loads all Rake tasks.
Methods included from Utils
clean_xml_document, complex_output?, current_output_setting, debug, error, file_copy, file_load, file_write, info, load_files_from_dir, macro_alias?, macro_aliases_for, macro_definition_for, macro_eq?, msg, multiple_output_files?, project?, run_external_command, titled_sections, warning, with_files_from, yaml_dump, yaml_load
Class Method Details
.[](setting) ⇒ Object
Returns the value of a configuration setting
148 149 150 |
# File 'lib/glyph.rb', line 148 def self.[](setting) Glyph::CONFIG.get(setting) end |
.[]=(setting, value) ⇒ Object
Overrides a configuration setting
155 156 157 158 |
# File 'lib/glyph.rb', line 155 def self.[]=(setting, value) PROJECT_CONFIG.set setting, value self.config_refresh end |
.compile(src, out = nil) ⇒ Object
Compiles a single Glyph file
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
# File 'lib/glyph.rb', line 274 def self.compile(src, out=nil) pwd = Dir.pwd Dir.chdir Pathname.new(src).parent.to_s begin require 'glyph/commands' self['system.quiet'] = true self.library_mode = true TOPLEVEL_BINDING.eval('self').run ["compile", src.to_s, out].compact rescue Exception => e raise ensure Dir.chdir pwd self.library_mode = false self.lite_mode = false self['system.quiet'] = false end end |
.config_refresh ⇒ Object
Restores Glyph configuration (keeping all overrides and project settings)
161 162 163 164 |
# File 'lib/glyph.rb', line 161 def self.config_refresh CONFIG.merge!(SYSTEM_CONFIG.merge(GLOBAL_CONFIG.merge(PROJECT_CONFIG))) Glyph.safe_mode = Glyph['options.safe_mode'] end |
.config_reset ⇒ Object
Resets Glyph configuration (removing all overrides and project settings)
167 168 169 170 171 |
# File 'lib/glyph.rb', line 167 def self.config_reset Glyph::CONFIG.reset Glyph::PROJECT_CONFIG.reset self.config_refresh end |
.define(name, text) ⇒ Object
Defines a new macro in Glyph code.
243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/glyph.rb', line 243 def self.define(name, text) macro name do body = text.dup # Parameters body.gsub!(/\{\{(\d+)\}\}/) do raw_param($1.to_i).to_s.strip end # Attributes body.gsub!(/\{\{([^\[\]\|\\\s]+)\}\}/) do raw_attr($1.to_sym).to_s.strip end interpret body end end |
.document ⇒ Object
Used to access @@document
138 139 140 |
# File 'lib/glyph.rb', line 138 def self.document @@document end |
.document=(document) ⇒ Object
Used to set @@document
143 144 145 |
# File 'lib/glyph.rb', line 143 def self.document=(document) @@document = document end |
.enable(task) ⇒ Object
Reenables a Rake task
191 192 193 |
# File 'lib/glyph.rb', line 191 def self.enable(task) Rake::Task[task].reenable end |
.enable_all ⇒ Object
Reenables all Glyph Rake tasks
185 186 187 |
# File 'lib/glyph.rb', line 185 def self.enable_all Rake::Task.tasks.each {|t| t.reenable } end |
.filter(text) ⇒ String
Converts a text containing Glyph markup language into the current Glyph output target.
Note Only ‘html’ is supported as output target for now.
300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 |
# File 'lib/glyph.rb', line 300 def self.filter(text) self.lite_mode = true self.enable_all result = "" begin self['system.quiet'] = true self.library_mode = true self.run 'load:all' result = Interpreter.new(text).document.output rescue Exception => e raise ensure self.lite_mode = false self.library_mode = false self['system.quiet'] = false end result end |
.macro(name, &block) ⇒ Object
Defines a new macro
212 213 214 |
# File 'lib/glyph.rb', line 212 def self.macro(name, &block) MACROS[name.to_sym] = block end |
.macro_alias(pair) ⇒ Object
Defines an alias for an existing macro
262 263 264 265 266 267 268 269 |
# File 'lib/glyph.rb', line 262 def self.macro_alias(pair) name = pair.keys[0].to_sym orig = pair.values[0].to_sym ALIASES[:by_def][orig] = [] unless ALIASES[:by_def][orig] ALIASES[:by_def][orig] << name unless ALIASES[:by_def][orig].include? name ALIASES[:by_alias][name] = orig MACROS[name] = MACROS[orig] end |
.project_reps_for(output) ⇒ Object
Loads project macro representations for a given output
235 236 237 |
# File 'lib/glyph.rb', line 235 def self.project_reps_for(output) Glyph.instance_eval file_load(Glyph::PROJECT/"lib/macros/reps/#{output}.rb") rescue nil end |
.rep(name, &block) ⇒ Object
Defines a new macro representation
219 220 221 222 223 |
# File 'lib/glyph.rb', line 219 def self.rep(name, &block) REPS[name.to_sym] = block # Mirror aliases as well ALIASES[:by_def][name.to_sym].to_a.each { |a| REPS[a] = block } end |
.reps_for(output) ⇒ Object
Loads macro representations for a given output
228 229 230 |
# File 'lib/glyph.rb', line 228 def self.reps_for(output) Glyph.instance_eval file_load(Glyph::HOME/"macros/reps/#{output}.rb") rescue nil end |
.reset ⇒ Object
Resets Glyph completely, i.e.:
-
Re-enables all Glyph Rake tasks
-
Resets the configuration to system defaults
-
Clears macros and snippets
177 178 179 180 181 182 |
# File 'lib/glyph.rb', line 177 def self.reset self.enable_all self.config_reset MACROS.clear REPS.clear end |
.run(task, *args) ⇒ Object
Runs a Rake task
206 207 208 |
# File 'lib/glyph.rb', line 206 def self.run(task, *args) Rake::Task[task].invoke *args end |
.run!(task, *args) ⇒ Object
Reenables and runs a Rake task
198 199 200 201 |
# File 'lib/glyph.rb', line 198 def self.run!(task, *args) Rake::Task[task].reenable self.run task, *args end |
.setup ⇒ Object
Loads all Rake tasks
131 132 133 134 135 |
# File 'lib/glyph.rb', line 131 def self.setup FileList["#{TASKS_DIR}/**/*.rake"].each do |f| load f end end |