glyph 0.3.0 → 0.4.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 (162) hide show
  1. data/.gitignore +7 -0
  2. data/AUTHORS.textile +8 -7
  3. data/CHANGELOG.textile +89 -8
  4. data/LICENSE.textile +1 -2
  5. data/README.textile +89 -61
  6. data/Rakefile +12 -10
  7. data/VERSION +1 -1
  8. data/benchmark.rb +1 -1
  9. data/book/config.yml +18 -4
  10. data/book/document.glyph +269 -45
  11. data/book/images/glyph/commands_tasks.png +0 -0
  12. data/book/images/{document_generation.png → glyph/document_generation.png} +0 -0
  13. data/book/images/glyph/glyph.eps +123 -0
  14. data/book/images/glyph/glyph.png +0 -0
  15. data/book/images/glyph/glyph.svg +29 -0
  16. data/book/lib/commands/commands.rb +11 -0
  17. data/book/lib/layouts/bookindex.glyph +127 -0
  18. data/book/lib/layouts/bookpage.glyph +129 -0
  19. data/book/lib/layouts/project.glyph +26 -0
  20. data/book/lib/macros/reference.rb +27 -7
  21. data/book/lib/tasks/tasks.rake +52 -0
  22. data/book/snippets.yml +1 -1
  23. data/book/text/{acknowledgement.glyph → acknowledgements.glyph} +4 -2
  24. data/book/text/changelog.glyph +29 -3
  25. data/book/text/compiling/compiling.glyph +44 -20
  26. data/book/text/compiling/lite_mode.glyph +0 -4
  27. data/book/text/compiling/programmatic_usage.glyph +1 -5
  28. data/book/text/config/document.glyph +35 -0
  29. data/book/text/config/filters.glyph +28 -0
  30. data/book/text/config/options.glyph +25 -0
  31. data/book/text/config/output.glyph +83 -0
  32. data/book/text/extending/bookmarks_headers.glyph +0 -5
  33. data/book/text/extending/command.glyph +56 -0
  34. data/book/text/extending/commands_tasks.glyph +39 -0
  35. data/book/text/extending/further_reading.glyph +0 -3
  36. data/book/text/extending/internals.glyph +3 -5
  37. data/book/text/extending/interpreting.glyph +0 -4
  38. data/book/text/extending/layouts.glyph +68 -0
  39. data/book/text/extending/macro_def.glyph +0 -5
  40. data/book/text/extending/output_format.glyph +78 -0
  41. data/book/text/extending/params_attrs.glyph +0 -3
  42. data/book/text/extending/placeholders.glyph +0 -4
  43. data/book/text/extending/task.glyph +46 -0
  44. data/book/text/extending/validators.glyph +5 -6
  45. data/book/text/getting_started/configuration.glyph +1 -5
  46. data/book/text/getting_started/create_project.glyph +1 -5
  47. data/book/text/getting_started/structure.glyph +0 -4
  48. data/book/text/introduction.glyph +100 -75
  49. data/book/text/license.glyph +1 -2
  50. data/book/text/macros/macros_block.glyph +8 -4
  51. data/book/text/macros/macros_core.glyph +0 -3
  52. data/book/text/macros/macros_filters.glyph +2 -7
  53. data/book/text/macros/macros_inline.glyph +0 -4
  54. data/book/text/macros/macros_structure.glyph +0 -4
  55. data/book/text/ref_commands.glyph +29 -7
  56. data/book/text/stats/bookmarks.glyph +49 -0
  57. data/book/text/stats/links.glyph +90 -0
  58. data/book/text/stats/macros.glyph +73 -0
  59. data/book/text/stats/snippets.glyph +50 -0
  60. data/book/text/stats/stats.glyph +79 -0
  61. data/book/text/text_editing/attribute_intro.glyph +22 -0
  62. data/book/text/text_editing/code.glyph +0 -5
  63. data/book/text/text_editing/conditionals.glyph +0 -4
  64. data/book/text/text_editing/esc_quot.glyph +64 -0
  65. data/book/text/text_editing/evaluation.glyph +0 -3
  66. data/book/text/text_editing/glyph_files.glyph +0 -3
  67. data/book/text/text_editing/images.glyph +0 -5
  68. data/book/text/text_editing/inclusions.glyph +0 -4
  69. data/book/text/text_editing/links.glyph +2 -7
  70. data/book/text/text_editing/macro_intro.glyph +1 -98
  71. data/book/text/text_editing/raw_html.glyph +0 -87
  72. data/book/text/text_editing/section_aliases.glyph +28 -0
  73. data/book/text/text_editing/sections.glyph +1 -32
  74. data/book/text/text_editing/stylesheets.glyph +3 -5
  75. data/book/text/text_editing/topics.glyph +33 -0
  76. data/book/text/text_editing/xml_fallback.glyph +73 -0
  77. data/book/text/troubleshooting/errors_command.glyph +0 -3
  78. data/book/text/troubleshooting/errors_generic.glyph +21 -6
  79. data/book/text/troubleshooting/errors_macro.glyph +11 -8
  80. data/book/text/troubleshooting/errors_parser.glyph +0 -3
  81. data/config.yml +60 -25
  82. data/glyph.gemspec +90 -36
  83. data/layouts/web/index.glyph +16 -0
  84. data/layouts/web/topic.glyph +15 -0
  85. data/layouts/web5/index.glyph +16 -0
  86. data/layouts/web5/topic.glyph +17 -0
  87. data/lib/glyph.rb +36 -49
  88. data/lib/glyph/analyzer.rb +253 -0
  89. data/lib/glyph/bookmark.rb +92 -0
  90. data/lib/glyph/commands.rb +9 -221
  91. data/lib/glyph/commands/add.rb +8 -0
  92. data/lib/glyph/commands/compile.rb +93 -0
  93. data/lib/glyph/commands/config.rb +38 -0
  94. data/lib/glyph/commands/init.rb +6 -0
  95. data/lib/glyph/commands/outline.rb +45 -0
  96. data/lib/glyph/commands/stats.rb +48 -0
  97. data/lib/glyph/commands/todo.rb +29 -0
  98. data/lib/glyph/config.rb +2 -0
  99. data/lib/glyph/document.rb +61 -30
  100. data/lib/glyph/interpreter.rb +2 -2
  101. data/lib/glyph/macro.rb +14 -5
  102. data/lib/glyph/macro_helpers.rb +280 -0
  103. data/lib/glyph/macro_validators.rb +37 -2
  104. data/lib/glyph/reporter.rb +182 -0
  105. data/lib/glyph/syntax_node.rb +37 -10
  106. data/lib/glyph/system_extensions.rb +8 -45
  107. data/lib/glyph/utils.rb +148 -0
  108. data/macros/core.rb +10 -15
  109. data/macros/filters.rb +4 -5
  110. data/macros/html/block.rb +46 -30
  111. data/macros/html/inline.rb +9 -35
  112. data/macros/html/structure.rb +59 -72
  113. data/macros/html5/block.rb +69 -0
  114. data/macros/html5/inline.rb +24 -0
  115. data/macros/html5/structure.rb +139 -0
  116. data/macros/xml.rb +1 -1
  117. data/spec/files/custom_command.rb +6 -0
  118. data/spec/files/custom_tasks.rake +6 -0
  119. data/spec/files/document_for_stats.glyph +12 -0
  120. data/spec/files/references.glyph +4 -0
  121. data/spec/files/web1.glyph +11 -0
  122. data/spec/files/web2.glyph +10 -0
  123. data/spec/files/web_doc.glyph +23 -0
  124. data/spec/lib/analyzer_spec.rb +137 -0
  125. data/spec/lib/bookmark_spec.rb +64 -0
  126. data/spec/lib/commands_spec.rb +30 -5
  127. data/spec/lib/document_spec.rb +49 -9
  128. data/spec/lib/glyph_spec.rb +21 -1
  129. data/spec/lib/macro_spec.rb +6 -6
  130. data/spec/lib/macro_validators_spec.rb +24 -0
  131. data/spec/lib/reporter_spec.rb +132 -0
  132. data/spec/macros/core_spec.rb +2 -3
  133. data/spec/macros/filters_spec.rb +2 -2
  134. data/spec/macros/html5_spec.rb +101 -0
  135. data/spec/macros/macros_spec.rb +16 -6
  136. data/spec/macros/web5_spec.rb +32 -0
  137. data/spec/macros/web_spec.rb +59 -0
  138. data/spec/macros/xml_spec.rb +1 -1
  139. data/spec/spec_helper.rb +24 -4
  140. data/spec/tasks/generate_spec.rb +54 -0
  141. data/spec/tasks/load_spec.rb +29 -3
  142. data/spec/tasks/project_spec.rb +21 -3
  143. data/styles/default.css +40 -4
  144. data/styles/pagination.css +59 -41
  145. data/tasks/generate.rake +110 -31
  146. data/tasks/load.rake +39 -7
  147. data/tasks/project.rake +9 -7
  148. metadata +115 -34
  149. data/book/images/glyph.png +0 -0
  150. data/book/images/glyph.svg +0 -351
  151. data/book/output/html/glyph.html +0 -4482
  152. data/book/output/html/images/document_generation.png +0 -0
  153. data/book/output/html/images/glyph.png +0 -0
  154. data/book/output/html/images/glyph.svg +0 -351
  155. data/book/output/pdf/glyph.pdf +4 -10254
  156. data/book/script/authors +0 -1
  157. data/book/script/changelog +0 -1
  158. data/book/script/license +0 -1
  159. data/book/script/readme +0 -1
  160. data/book/text/ref_config.glyph +0 -100
  161. data/book/text/ref_macros.glyph +0 -6
  162. data/book/text/troubleshooting/errors_intro.glyph +0 -3
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+
3
+ #!/usr/bin/env ruby
4
+ require File.join(File.dirname(__FILE__), "..", "spec_helper")
5
+
6
+ describe Glyph::Bookmark do
7
+
8
+ before do
9
+ @b = Glyph::Bookmark.new :id => :test, :file => "test.glyph"
10
+ end
11
+
12
+ it "should be initialized with at least an id" do
13
+ lambda { Glyph::Bookmark.new }.should raise_error
14
+ lambda { Glyph::Bookmark.new({:id => :test}) }.should_not raise_error
15
+ lambda { Glyph::Bookmark.new({:file => "test"}) }.should raise_error
16
+ lambda { Glyph::Bookmark.new({:id => "test", :file => "test.glyph"}) }.should_not raise_error
17
+ end
18
+
19
+ it "shiuld expose title, code and file" do
20
+ @b.file.should == "test.glyph"
21
+ @b.code.should == :test
22
+ @b.title.should == nil
23
+ Glyph::Bookmark.new(:id => :test2, :title => "Test 2").title.should == "Test 2"
24
+ end
25
+
26
+ it "should convert to a string" do
27
+ @b.code.to_s == @b.to_s
28
+ "#{@b}".should == @b.to_s
29
+ end
30
+
31
+ it "should format the link for a single output file" do
32
+ # Link within the same file
33
+ @b.link.should == "#test"
34
+ # Link to a different file file
35
+ @b.link('intro.glyph').should == "#test"
36
+ end
37
+
38
+ it "should format the link for multiple output files" do
39
+ out = Glyph['document.output']
40
+ Glyph['document.output'] = 'web'
41
+ # Link within the same file
42
+ @b.link("test.glyph").should == "#test"
43
+ # Link to a different file file
44
+ @b.link("intro.glyph").should == "/test.html#test"
45
+ # Test that base directory is added correctly
46
+ Glyph["output.#{Glyph['document.output']}.base"] = ""
47
+ @b.link("intro.glyph").should == "test.html#test"
48
+ @b.link("test.glyph").should == "#test"
49
+ Glyph['document.output'] = out
50
+ end
51
+
52
+ it "should check ID validity" do
53
+ lambda { Glyph::Bookmark.new :id => "#test$", :file => "test.glyph"}.should raise_error(RuntimeError, "Invalid bookmark ID: #test$")
54
+ end
55
+
56
+ it "should check bookmark equality" do
57
+ @b.should == Glyph::Bookmark.new(:id => :test, :file => 'test.glyph')
58
+ @b.should == Glyph::Bookmark.new(:id => :test, :file => "test.glyph")
59
+ @b.should == Glyph::Bookmark.new(:id => :test, :file => 'test.glyph', :level => 2)
60
+ @b.should_not == Glyph::Bookmark.new(:id => :test1, :file => 'test.glyph')
61
+ @b.should_not == Glyph::Bookmark.new(:id => :test, :file => 'test1.glyph')
62
+ end
63
+
64
+ end
@@ -23,7 +23,7 @@ describe "glyph" do
23
23
  it "[config] should read configuration settings" do
24
24
  create_project
25
25
  run_command_successfully(["config", "-g"]).should == false
26
- run_command(["config", "filters.target"]).match(/html/m).should_not == nil
26
+ run_command(["config", "document.html.filter_target"]).match(/html/m).should_not == nil
27
27
  end
28
28
 
29
29
  it "[config] should write configuration settings" do
@@ -149,9 +149,18 @@ describe "glyph" do
149
149
  Glyph.enable 'generate:html'
150
150
  (Glyph::PROJECT/'article.html').unlink
151
151
  Glyph['document.output'] = 'pdf'
152
- run_command_successfully(["compile", "article.glyph"]).should == true
153
- (Glyph::PROJECT/'article.html').exist?.should == true
154
- (Glyph::PROJECT/'article.pdf').exist?.should == true
152
+ src = Glyph::PROJECT/'article.html'
153
+ out = Glyph::PROJECT/'article.pdf'
154
+ generate_pdf = lambda do |gen|
155
+ Glyph.enable 'generate:pdf'
156
+ Glyph['output.pdf.generator'] = gen
157
+ run_command_successfully(["compile", "article.glyph"]).should == true
158
+ src.exist?.should == true
159
+ out.exist?.should == true
160
+ out.unlink
161
+ end
162
+ generate_pdf.call 'prince'
163
+ generate_pdf.call 'wkhtmltopdf'
155
164
  Glyph.lite_mode = false
156
165
  end
157
166
 
@@ -197,7 +206,7 @@ test_project - Outline
197
206
  i_id = "[#h_2]"
198
207
  m_id = "[#md]"
199
208
  file_write Glyph::PROJECT/'document.glyph', "document[#{file_load(Glyph::PROJECT/'document.glyph')}]"
200
- run_command(["outline"]).should == %{#{start}
209
+ run_command(["-d", "outline"]).should == %{#{start}
201
210
  #{c_title}
202
211
  #{i_title}
203
212
  #{m_title}
@@ -218,4 +227,20 @@ test_project - Outline
218
227
  }
219
228
  end
220
229
 
230
+ it "[stats] should display project statistics" do
231
+ reset_quiet
232
+ create_project
233
+ out = run_command(["stats", "-ms"])
234
+ out.should match "-- Total Macro Definitions: 44"
235
+ out.should match "-- Unused Snippets: test"
236
+ out = run_command(["stats"])
237
+ out.should match "-- Total Macro Definitions: 44"
238
+ out.should_not match "-- Unused Snippets: test"
239
+ out.should match "-- Total Unreferenced Bookmarks: 3"
240
+ out = run_command(["stats", "-lb", "--bookmark=md"])
241
+ out.should match "-- Unreferenced Bookmarks: h_1, h_2, md"
242
+ out.should match "-- Defined in: text/a/b/c/markdown.markdown"
243
+ out.should_not match "-- Total Macro Definitions: 19"
244
+ end
245
+
221
246
  end
@@ -17,15 +17,18 @@ describe Glyph::Document do
17
17
 
18
18
  it "should expose document data" do
19
19
  @doc.bookmarks.should == {}
20
+ @doc.headers.should == {}
21
+ @doc.styles.should == []
20
22
  @doc.placeholders.should == {}
21
23
  @doc.new?.should == true
22
24
  end
23
25
 
24
26
  it "should store bookmarks" do
25
- lambda { @doc.bookmark(:id => "test", :title => "Test Bookmark #1")}.should_not raise_error
26
- lambda { @doc.bookmark(:id => :test, :title => "Test Bookmark #2")}.should_not raise_error
27
+ lambda { @doc.bookmark(:id => "test", :title => "Test Bookmark #1", :file => 'test.glyph')}.should_not raise_error
28
+ lambda { @doc.bookmark(:id => :test, :title => "Test Bookmark #1", :file => 'test.glyph')}.should raise_error
29
+ lambda { @doc.bookmark(:id => :test, :title => "Test Bookmark #2", :file => 'test2.glyph')}.should raise_error
27
30
  @doc.bookmarks.length.should == 1
28
- @doc.bookmarks[:test].should == {:id => :test, :title => "Test Bookmark #2"}
31
+ @doc.bookmarks[:test].should == Glyph::Bookmark.new(:id => :test, :title => "Test Bookmark #1", :file => "test.glyph")
29
32
  end
30
33
 
31
34
  it "should store placeholders" do
@@ -34,20 +37,29 @@ describe Glyph::Document do
34
37
  @doc.placeholders["‡‡‡‡‡PLACEHOLDER¤1‡‡‡‡‡".to_sym].should == p
35
38
  end
36
39
 
40
+ it "should store styles" do
41
+ lambda {@doc.style "test.css"}.should_not raise_error
42
+ @doc.styles.include?(Pathname.new('test.css')).should == true
43
+ end
44
+
37
45
  it "can inherit data from another document" do
38
- @doc.bookmark :id => :test1, :title => "Test #1"
39
- @doc.bookmark :id => :test2, :title => "Test #2"
46
+ @doc.bookmark :id => :test1, :title => "Test #1", :file => "test.glyph"
47
+ @doc.bookmark :id => :test2, :title => "Test #2", :file => "test.glyph"
40
48
  @doc.placeholder { "test" }
41
- @doc.header :id => :test3, :title => "Test #3", :level => 3
49
+ @doc.style "test.css"
50
+ @doc.header :id => :test3, :title => "Test #3", :level => 3, :file => "test.glyph"
51
+ @doc.toc[:contents] = "TOC goes here..."
42
52
  doc2 = create_doc @tree
43
53
  doc2.bookmarks.length.should == 0
44
54
  doc2.placeholders.length.should == 0
45
- doc2.bookmark :id => :test4, :title => "Test #4"
55
+ doc2.bookmark :id => :test4, :title => "Test #4", :file => "test.glyph"
46
56
  doc2.inherit_from @doc
47
- doc2.bookmarks.length.should == 2
57
+ doc2.bookmarks.length.should == 3
48
58
  doc2.placeholders.length.should == 1
49
59
  doc2.headers.length.should == 1
50
- doc2.bookmarks[:test3].should == nil
60
+ doc2.styles.length.should == 1
61
+ doc2.toc[:contents] = "TOC goes here..."
62
+ doc2.bookmarks[0].should_not == Glyph::Bookmark.new(:id => :test4, :title => "Test #4", :file => "test.glyph")
51
63
  end
52
64
 
53
65
  it "should analyze the syntax tree and finalize the document" do
@@ -109,5 +121,33 @@ describe Glyph::Document do
109
121
  doc.finalize
110
122
  doc.output.should == result
111
123
  end
124
+
125
+ it "should store the Table of Contents" do
126
+ delete_project
127
+ create_project
128
+ Glyph.run! "load:all"
129
+ text = %{
130
+ document[
131
+ body[
132
+ toc[]
133
+ section[
134
+ @title[test 1]
135
+ ...
136
+ section[
137
+ @title[test 2]
138
+ ...
139
+ ]
140
+ ]
141
+ ]
142
+ ]
143
+ }
144
+ tree = create_tree text
145
+ doc = create_doc tree
146
+ doc.analyze
147
+ doc.finalize
148
+ doc.toc[:contents].match(%{<div class="contents">}).blank?.should == false
149
+ reset_quiet
150
+ end
151
+
112
152
  end
113
153
 
@@ -39,7 +39,7 @@ describe Glyph do
39
39
  lambda { Glyph.macro_alias("->" => :ref)}.should_not raise_error
40
40
  Glyph::MACROS[:"->"].should == Glyph::MACROS[:ref]
41
41
  Glyph.macro_alias :em => :ref
42
- Glyph::MACROS[:em].should_not == Glyph::MACROS[:ref]
42
+ Glyph::MACROS[:em].should == Glyph::MACROS[:ref]
43
43
  end
44
44
 
45
45
  it "should provide a filter method to convert raw text into HTML" do
@@ -73,4 +73,24 @@ describe Glyph do
73
73
  Glyph.safe_mode = false
74
74
  end
75
75
 
76
+ it "should rewrite macros using Glyph syntax" do
77
+ define_em_macro
78
+ Glyph.rewrite :test_rw_macro, %{em[{{0}} -- {{a}}]}
79
+ output_for("test_rw_macro[@a[!]?]").should == "<em>? -- !</em>"
80
+ end
81
+
82
+ it "should store alias information" do
83
+ delete_project_dir
84
+ create_project_dir
85
+ Glyph.run! 'project:create', Glyph::PROJECT
86
+ Glyph.run 'load:all'
87
+ Glyph::ALIASES[:by_def][:snippet].should == [:&]
88
+ Glyph::ALIASES[:by_alias][:"?"].should == :condition
89
+ Glyph.macro_aliases_for(:link).should == [:"=>"]
90
+ Glyph.macro_aliases_for(:"=>").should == nil
91
+ Glyph.macro_definition_for(:"=>").should == :link
92
+ Glyph.macro_definition_for(:link).should == nil
93
+ Glyph.macro_alias?(:"#").should == true
94
+ end
95
+
76
96
  end
@@ -44,17 +44,17 @@ describe Glyph::Macro do
44
44
  end
45
45
 
46
46
  it "should store and check bookmarks" do
47
- h = { :id => "test2", :title => "Test 2" }
47
+ h = { :id => "test2", :title => "Test 2", :file => 'test.glyph' }
48
48
  @macro.bookmark h
49
- @doc.bookmark?(:test2).should == h
50
- @macro.bookmark?(:test2).should == h
49
+ @doc.bookmark?(:test2).should == Glyph::Bookmark.new(h)
50
+ @macro.bookmark?(:test2).should == Glyph::Bookmark.new(h)
51
51
  end
52
52
 
53
53
  it "should store and check headers" do
54
- h = { :level => 2, :id => "test3", :title => "Test 3" }
54
+ h = { :level => 2, :id => "test3", :title => "Test 3", :file => "test.glyph"}
55
55
  @macro.header h
56
- @doc.header?("test3").should == h
57
- @macro.header?("test3").should == h
56
+ @doc.header?("test3").should == Glyph::Bookmark.new(h)
57
+ @macro.header?("test3").should == Glyph::Bookmark.new(h)
58
58
  end
59
59
 
60
60
  it "should store placeholders" do
@@ -51,5 +51,29 @@ describe Glyph::Macro::Validators do
51
51
  output_for("test[test @.test[test]]").should == "<test>test</test>"
52
52
  end
53
53
 
54
+ it "should validate required attributes" do
55
+ Glyph['document.output'] = 'web'
56
+ Glyph.run! 'load:macros'
57
+ lambda { output_for("contents[section[@src[test]]]") }.should raise_error(Glyph::MacroError, "Macro 'section' requires a 'title' attribute")
58
+ end
59
+
60
+ it "should validate if a macro is within another one" do
61
+ define_em_macro
62
+ Glyph.macro :within_m do
63
+ within :em
64
+ "---"
65
+ end
66
+ lambda { output_for("within_m[test]") }.should raise_error(Glyph::MacroError, "Macro 'within_m' must be within a 'em' macro")
67
+ end
68
+
69
+ it "should validate if a macro is not within another one" do
70
+ define_em_macro
71
+ Glyph.macro :within_m do
72
+ not_within :em
73
+ "---"
74
+ end
75
+ lambda { output_for("em[within_m[test]]") }.should raise_error(Glyph::MacroError, "Macro 'within_m' must not be within a 'em' macro")
76
+ end
77
+
54
78
  end
55
79
 
@@ -0,0 +1,132 @@
1
+ # encoding: utf-8
2
+
3
+ #!/usr/bin/env ruby
4
+ require File.join(File.dirname(__FILE__), "..", "spec_helper")
5
+
6
+ describe Glyph::Reporter do
7
+
8
+ before do
9
+ delete_project
10
+ reset_quiet
11
+ create_project_dir
12
+ create_project
13
+ Glyph.file_copy Glyph::SPEC_DIR/'files/document_for_stats.glyph', Glyph::PROJECT/'document.glyph'
14
+ Glyph.file_copy Glyph::SPEC_DIR/'files/references.glyph', Glyph::PROJECT/'text/references.glyph'
15
+ Glyph.run! 'generate:document'
16
+ @a = Glyph::Analyzer.new
17
+ end
18
+
19
+ def stats(name, *args)
20
+ @a.stats_for(name, *args)
21
+ end
22
+
23
+ def rep
24
+ @r = Glyph::Reporter.new(@a.stats)
25
+ end
26
+
27
+ after do
28
+ delete_project_dir
29
+ end
30
+
31
+ it "should be initialized with stats" do
32
+ stats :macros
33
+ lambda { rep }.should_not raise_error
34
+ end
35
+
36
+ it "should display macro stats" do
37
+ stats :macros
38
+ out = stdout_for { rep.display }
39
+ out.should match "Total Macro Instances: 20"
40
+ out.should match "-- Used Macro Definitions:"
41
+ @r.detailed = false
42
+ out = stdout_for { @r.display }
43
+ out.should_not match "-- Used Macro Definitions:"
44
+ end
45
+
46
+ it "should display stats for a single macro" do
47
+ stats :macro, :section
48
+ out = stdout_for { rep.display }
49
+ out.should match "text/a/b/c/markdown.markdown \\(1\\)"
50
+ out.should match "-- Total Instances: 4"
51
+ @r.detailed = false
52
+ out = stdout_for { @r.display }
53
+ out.should_not match "text/a/b/c/markdown.markdown \\(1\\)"
54
+ stats :macro, :"=>"
55
+ out = stdout_for { rep.display }
56
+ out.should match "alias for: link"
57
+ end
58
+
59
+ it "should display bookmark stats" do
60
+ stats :bookmarks
61
+ out = stdout_for { rep.display }
62
+ out.should match "-- Total Bookmarks: 6"
63
+ out.should match "h_1 h_2 md refs toc"
64
+ out.should match " - h_1 \\(1\\)"
65
+ @r.detailed = false
66
+ out = stdout_for { @r.display }
67
+ out.should_not match "-- Occurrences:"
68
+ end
69
+
70
+ it "should display stats for a single bookmark" do
71
+ stats :bookmark, 'refs'
72
+ out = stdout_for { rep.display }
73
+ out.should match "===== Bookmark 'refs' \\(header\\)"
74
+ out.should match " - text/references.glyph \\(1\\)"
75
+ @r.detailed = false
76
+ out = stdout_for { @r.display }
77
+ out.should_not match "-- Referenced in:"
78
+ end
79
+
80
+ it "should display snippet stats" do
81
+ stats :snippets
82
+ out = stdout_for { rep.display }
83
+ out.should match "-- Total Snippets: 2"
84
+ end
85
+
86
+ it "should display stats for a single snippet" do
87
+ stats :snippet, :test
88
+ out = stdout_for { rep.display }
89
+ out.should match "-- Total Used Instances: 2"
90
+ out.should match " - text/references.glyph \\(1\\)"
91
+ @r.detailed = false
92
+ out = stdout_for { @r.display }
93
+ out.should_not match "-- Usage Details:"
94
+ end
95
+
96
+ it "should display link stats" do
97
+ stats :links
98
+ out = stdout_for { rep.display }
99
+ out.should match "http://www.h3rald.com"
100
+ out.should match "-- Total Internal Links: 2"
101
+ @r.detailed = false
102
+ out = stdout_for { @r.display }
103
+ out.should_not match " - text/references.glyph (1)"
104
+ end
105
+
106
+ it "should display stats for a single link" do
107
+ stats :link, 'h3'
108
+ out = stdout_for { rep.display }
109
+ out.should match "===== Links matching \\/h3\\/"
110
+ out.should match " - http://www.h3rald.com \\(1\\)"
111
+ @r.detailed = false
112
+ out = stdout_for { @r.display }
113
+ out.should_not match " - http://www.h3rald.com \\(1\\)"
114
+ end
115
+
116
+ it "should display files stats" do
117
+ stats :files
118
+ out = stdout_for { rep.display }
119
+ out.should match "-- Total Files: 6"
120
+ out.should match "-- /text -- 4"
121
+ end
122
+
123
+ it "should display global stats" do
124
+ stats :global
125
+ out = stdout_for { rep.display }
126
+ out.should match "-- Total Files: 6"
127
+ out.should match " - http://www.h3rald.com"
128
+ out.should match "Total Macro Instances: 20"
129
+ out.should match "-- Total Snippets: 2"
130
+ out.should match "h_1 h_2 md refs toc"
131
+ end
132
+ end
@@ -83,7 +83,7 @@ describe "Macro:" do
83
83
  Glyph["filters.by_extension"] = true
84
84
  text = file_load(Glyph::PROJECT/'text/container.textile')
85
85
  interpret text
86
- @p.document.output.gsub(/\n|\t|_\d{1,3}/, '').should == %{
86
+ @p.document.output.gsub(/\n|\t/, '').should == %{
87
87
  <div class="section">
88
88
  <h2 id="h_1">Container section</h2>
89
89
  This is a test.
@@ -92,7 +92,7 @@ describe "Macro:" do
92
92
  <p>&#8230;</p>
93
93
  </div>
94
94
  </div>
95
- }.gsub(/\n|\t|_\d{1,3}/, '')
95
+ }.gsub(/\n|\t/, '')
96
96
  end
97
97
 
98
98
  it "include should work in Lite mode" do
@@ -191,5 +191,4 @@ Test -- Test Snippet
191
191
  end.should raise_error(Glyph::MacroError)
192
192
  end
193
193
 
194
-
195
194
  end