glyph 0.1.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.
Files changed (68) hide show
  1. data/README.textile +80 -0
  2. data/Rakefile +51 -0
  3. data/VERSION +1 -0
  4. data/bin/glyph +7 -0
  5. data/book/config.yml +5 -0
  6. data/book/document.glyph +55 -0
  7. data/book/images/glyph.png +0 -0
  8. data/book/images/glyph.svg +351 -0
  9. data/book/lib/macros/reference.rb +98 -0
  10. data/book/output/html/glyph.html +1809 -0
  11. data/book/output/html/images/glyph.png +0 -0
  12. data/book/output/html/images/glyph.svg +351 -0
  13. data/book/output/pdf/glyph.pdf +4277 -0
  14. data/book/snippets.yml +13 -0
  15. data/book/styles/css3.css +220 -0
  16. data/book/styles/default.css +190 -0
  17. data/book/text/authoring.textile +351 -0
  18. data/book/text/extending.textile +148 -0
  19. data/book/text/getting_started.textile +152 -0
  20. data/book/text/introduction.textile +88 -0
  21. data/book/text/ref_commands.textile +74 -0
  22. data/book/text/ref_config.textile +0 -0
  23. data/book/text/ref_macros.textile +256 -0
  24. data/book/text/troubleshooting.textile +118 -0
  25. data/config.yml +63 -0
  26. data/document.glyph +29 -0
  27. data/glyph.gemspec +138 -0
  28. data/lib/glyph.rb +128 -0
  29. data/lib/glyph/commands.rb +124 -0
  30. data/lib/glyph/config.rb +152 -0
  31. data/lib/glyph/document.rb +145 -0
  32. data/lib/glyph/glyph_language.rb +530 -0
  33. data/lib/glyph/glyph_language.treetop +27 -0
  34. data/lib/glyph/interpreter.rb +84 -0
  35. data/lib/glyph/macro.rb +69 -0
  36. data/lib/glyph/node.rb +126 -0
  37. data/lib/glyph/system_extensions.rb +77 -0
  38. data/macros/common.rb +66 -0
  39. data/macros/filters.rb +69 -0
  40. data/macros/html/block.rb +119 -0
  41. data/macros/html/inline.rb +43 -0
  42. data/macros/html/structure.rb +138 -0
  43. data/spec/files/container.textile +5 -0
  44. data/spec/files/document.glyph +2 -0
  45. data/spec/files/document_with_toc.glyph +3 -0
  46. data/spec/files/included.textile +4 -0
  47. data/spec/files/ligature.jpg +449 -0
  48. data/spec/files/markdown.markdown +8 -0
  49. data/spec/files/test.sass +2 -0
  50. data/spec/lib/commands_spec.rb +83 -0
  51. data/spec/lib/config_spec.rb +79 -0
  52. data/spec/lib/document_spec.rb +100 -0
  53. data/spec/lib/glyph_spec.rb +76 -0
  54. data/spec/lib/interpreter_spec.rb +90 -0
  55. data/spec/lib/macro_spec.rb +60 -0
  56. data/spec/lib/node_spec.rb +76 -0
  57. data/spec/macros/filters_spec.rb +42 -0
  58. data/spec/macros/macros_spec.rb +159 -0
  59. data/spec/spec_helper.rb +92 -0
  60. data/spec/tasks/generate_spec.rb +31 -0
  61. data/spec/tasks/load_spec.rb +37 -0
  62. data/spec/tasks/project_spec.rb +41 -0
  63. data/styles/css3.css +220 -0
  64. data/styles/default.css +190 -0
  65. data/tasks/generate.rake +57 -0
  66. data/tasks/load.rake +55 -0
  67. data/tasks/project.rake +33 -0
  68. metadata +192 -0
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ namespace :generate do
4
+
5
+ desc "Process source"
6
+ task :document => ["load:all"] do
7
+ info "Parsing '#{cfg('document.source')}'..."
8
+ text = file_load Glyph::PROJECT/cfg('document.source')
9
+ interpreter = Glyph::Interpreter.new text, :source => "file: #{cfg('document.source')}"
10
+ info "Processing..."
11
+ interpreter.process
12
+ info "Post-processing..."
13
+ interpreter.postprocess
14
+ Glyph::DOCUMENT = interpreter.document
15
+ end
16
+
17
+ desc "Create a standalone html file"
18
+ task :html => :document do
19
+ info "Generating HTML file..."
20
+ out = Glyph::PROJECT/"output/html"
21
+ out.mkpath
22
+ file = "#{cfg('document.filename')}.html"
23
+ file_write out/file, Glyph::DOCUMENT.output
24
+ info "'#{cfg('document.filename')}.html' generated successfully."
25
+ images = Glyph::PROJECT/'output/html/images'
26
+ images.mkpath
27
+ (Glyph::PROJECT/'images').find do |i|
28
+ if i.file? then
29
+ dest = "#{Glyph::PROJECT/'output/html/images'}/#{i.relative_path_from(Glyph::PROJECT/'images')}"
30
+ Pathname.new(dest).parent.mkpath
31
+ file_copy i.to_s, dest
32
+ end
33
+ end
34
+ end
35
+
36
+ desc "Create a pdf file"
37
+ task :pdf => :html do
38
+ info "Generating PDF file..."
39
+ out = Glyph::PROJECT/"output/pdf"
40
+ out.mkpath
41
+ file = cfg('document.filename')
42
+ case cfg('pdf_renderer')
43
+ when 'prince' then
44
+ ENV['PATH'] += ";#{ENV['ProgramFiles']}\\Prince\\Engine\\bin" if RUBY_PLATFORM.match /mswin/
45
+ res = system "prince #{Glyph::PROJECT/"output/html/#{file}.html"} -o #{out/"#{file}.pdf"}"
46
+ if res then
47
+ info "'#{file}.pdf' generated successfully."
48
+ else
49
+ warning "An error occurred while generating #{file}.pdf"
50
+ end
51
+ # TODO: support other PDF renderers
52
+ else
53
+ warning "Glyph cannot generate PDF. Please specify a valid pdf_renderer setting."
54
+ end
55
+ end
56
+
57
+ end
data/tasks/load.rake ADDED
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ namespace :load do
4
+
5
+ desc "Load all files"
6
+ task :all => [:config, :snippets, :macros] do
7
+ end
8
+
9
+ desc "Load snippets"
10
+ task :snippets do
11
+ raise RuntimeError, "The current directory is not a valid Glyph project" unless Glyph.project?
12
+ info "Loading snippets..."
13
+ snippets = yaml_load Glyph::PROJECT/'snippets.yml'
14
+ raise RuntimeError, "Invalid snippets file" unless snippets.blank? || snippets.is_a?(Hash)
15
+ Glyph::SNIPPETS.replace snippets
16
+ end
17
+
18
+ desc "Load macros"
19
+ task :macros do
20
+ raise RuntimeError, "The current directory is not a valid Glyph project" unless Glyph.project?
21
+ info "Loading macros..."
22
+ load_macros = lambda do |macro_base|
23
+ macro_base.children.each do |c|
24
+ Glyph.instance_eval file_load(c) unless c.directory?
25
+ end
26
+ macro_dir = macro_base/cfg("filters.target").to_s
27
+ if macro_dir.exist? then
28
+ macro_dir.children.each do |f|
29
+ Glyph.instance_eval file_load(f)
30
+ end
31
+ end
32
+ end
33
+ load_macros.call Glyph::HOME/"macros"
34
+ load_macros.call Glyph::PROJECT/"lib/macros" rescue nil
35
+ end
36
+
37
+ desc "Load configuration files"
38
+ task :config do
39
+ raise RuntimeError, "The current directory is not a valid Glyph project" unless Glyph.project?
40
+ # Save overrides set by commands...
41
+ overrides = Glyph::PROJECT_CONFIG.dup
42
+ Glyph::PROJECT_CONFIG.read
43
+ Glyph::PROJECT_CONFIG.merge! overrides
44
+ Glyph::SYSTEM_CONFIG.read
45
+ Glyph::GLOBAL_CONFIG.read
46
+ Glyph.reset_config
47
+ Glyph.config_override("structure.headers",
48
+ [:section] +
49
+ cfg('structure.frontmatter') +
50
+ cfg('structure.backmatter') +
51
+ cfg('structure.bodymatter') -
52
+ cfg('structure.hidden'))
53
+ end
54
+
55
+ end
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ namespace :project do
4
+
5
+ desc "Create a new Glyph project"
6
+ task :create, [:dir] do |t, args|
7
+ dir = Pathname.new args[:dir]
8
+ raise ArgumentError, "Directory #{dir} does not exist." unless dir.exist?
9
+ raise ArgumentError, "Directory #{dir} is not empty." unless dir.children.blank?
10
+ # Create subdirectories
11
+ subdirs = ['lib/tasks', 'lib/macros', 'lib/macros/html', 'lib', 'text', 'output', 'images', 'styles']
12
+ subdirs.each {|d| (dir/d).mkpath }
13
+ # Create snippets
14
+ yaml_dump Glyph::PROJECT/'snippets.yml', {:test => "This is a \nTest snippet"}
15
+ # Create files
16
+ file_copy Glyph::HOME/'document.glyph', Glyph::PROJECT/'document.glyph'
17
+ config = yaml_load Glyph::HOME/'config.yml'
18
+ config[:document][:filename] = dir.basename.to_s
19
+ config[:document][:author] = ENV['USER'] || ENV['USERNAME']
20
+ yaml_dump Glyph::PROJECT/'config.yml', config
21
+ info "Project '#{dir.basename}' created successfully."
22
+ end
23
+
24
+ desc "Add a new text file to the project"
25
+ task :add, [:file] do |t, args|
26
+ Glyph.enable 'project:add'
27
+ file = Glyph::PROJECT/"text/#{args[:file]}"
28
+ file.parent.mkpath
29
+ raise ArgumentError, "File '#{args[:file]}' already exists." if file.exist?
30
+ File.new(file.to_s, "w").close
31
+ end
32
+
33
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glyph
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Fabio Cevasco
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-04-09 00:00:00 +02:00
13
+ default_executable: glyph
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: gli
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.3.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: extlib
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.12
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: treetop
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.4.3
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rake
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 0.8.7
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: yard
67
+ type: :development
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ description: Glyph is a framework for structured document authoring.
76
+ email: h3rald@h3rald.com
77
+ executables:
78
+ - glyph
79
+ extensions: []
80
+
81
+ extra_rdoc_files:
82
+ - README.textile
83
+ files:
84
+ - README.textile
85
+ - Rakefile
86
+ - VERSION
87
+ - bin/glyph
88
+ - book/config.yml
89
+ - book/document.glyph
90
+ - book/images/glyph.png
91
+ - book/images/glyph.svg
92
+ - book/lib/macros/reference.rb
93
+ - book/output/html/glyph.html
94
+ - book/output/html/images/glyph.png
95
+ - book/output/html/images/glyph.svg
96
+ - book/output/pdf/glyph.pdf
97
+ - book/snippets.yml
98
+ - book/styles/css3.css
99
+ - book/styles/default.css
100
+ - book/text/authoring.textile
101
+ - book/text/extending.textile
102
+ - book/text/getting_started.textile
103
+ - book/text/introduction.textile
104
+ - book/text/ref_commands.textile
105
+ - book/text/ref_config.textile
106
+ - book/text/ref_macros.textile
107
+ - book/text/troubleshooting.textile
108
+ - config.yml
109
+ - document.glyph
110
+ - glyph.gemspec
111
+ - lib/glyph.rb
112
+ - lib/glyph/commands.rb
113
+ - lib/glyph/config.rb
114
+ - lib/glyph/document.rb
115
+ - lib/glyph/glyph_language.rb
116
+ - lib/glyph/glyph_language.treetop
117
+ - lib/glyph/interpreter.rb
118
+ - lib/glyph/macro.rb
119
+ - lib/glyph/node.rb
120
+ - lib/glyph/system_extensions.rb
121
+ - macros/common.rb
122
+ - macros/filters.rb
123
+ - macros/html/block.rb
124
+ - macros/html/inline.rb
125
+ - macros/html/structure.rb
126
+ - spec/files/container.textile
127
+ - spec/files/document.glyph
128
+ - spec/files/document_with_toc.glyph
129
+ - spec/files/included.textile
130
+ - spec/files/ligature.jpg
131
+ - spec/files/markdown.markdown
132
+ - spec/files/test.sass
133
+ - spec/lib/commands_spec.rb
134
+ - spec/lib/config_spec.rb
135
+ - spec/lib/document_spec.rb
136
+ - spec/lib/glyph_spec.rb
137
+ - spec/lib/interpreter_spec.rb
138
+ - spec/lib/macro_spec.rb
139
+ - spec/lib/node_spec.rb
140
+ - spec/macros/filters_spec.rb
141
+ - spec/macros/macros_spec.rb
142
+ - spec/spec_helper.rb
143
+ - spec/tasks/generate_spec.rb
144
+ - spec/tasks/load_spec.rb
145
+ - spec/tasks/project_spec.rb
146
+ - styles/css3.css
147
+ - styles/default.css
148
+ - tasks/generate.rake
149
+ - tasks/load.rake
150
+ - tasks/project.rake
151
+ has_rdoc: true
152
+ homepage: http://www.h3rald.com/glyph/
153
+ licenses: []
154
+
155
+ post_install_message:
156
+ rdoc_options:
157
+ - --charset=UTF-8
158
+ require_paths:
159
+ - lib
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: "0"
165
+ version:
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: "0"
171
+ version:
172
+ requirements: []
173
+
174
+ rubyforge_project:
175
+ rubygems_version: 1.3.5
176
+ signing_key:
177
+ specification_version: 3
178
+ summary: Glyph -- A Ruby-powered Document Authoring Framework
179
+ test_files:
180
+ - spec/macros/filters_spec.rb
181
+ - spec/macros/macros_spec.rb
182
+ - spec/lib/interpreter_spec.rb
183
+ - spec/lib/commands_spec.rb
184
+ - spec/lib/node_spec.rb
185
+ - spec/lib/macro_spec.rb
186
+ - spec/lib/config_spec.rb
187
+ - spec/lib/glyph_spec.rb
188
+ - spec/lib/document_spec.rb
189
+ - spec/tasks/load_spec.rb
190
+ - spec/tasks/generate_spec.rb
191
+ - spec/tasks/project_spec.rb
192
+ - spec/spec_helper.rb