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.
Files changed (114) hide show
  1. data/AUTHORS.textile +1 -1
  2. data/CHANGELOG.textile +119 -222
  3. data/LICENSE.textile +1 -1
  4. data/README.textile +42 -23
  5. data/Rakefile +1 -3
  6. data/VERSION +1 -1
  7. data/benchmark.rb +72 -0
  8. data/book/config.yml +4 -4
  9. data/book/document.glyph +90 -57
  10. data/book/images/document_generation.png +0 -0
  11. data/book/lib/macros/reference.rb +75 -22
  12. data/book/output/html/glyph.html +3183 -2121
  13. data/book/output/html/images/document_generation.png +0 -0
  14. data/book/output/pdf/glyph.pdf +7370 -4913
  15. data/book/resources/document_generation.txt +34 -0
  16. data/book/snippets.yml +6 -0
  17. data/book/text/changelog.glyph +45 -34
  18. data/book/text/compiling/compiling.glyph +23 -0
  19. data/book/text/compiling/lite_mode.glyph +23 -0
  20. data/book/text/compiling/programmatic_usage.glyph +77 -0
  21. data/book/text/extending/bookmarks_headers.glyph +21 -0
  22. data/book/text/extending/further_reading.glyph +13 -0
  23. data/book/text/extending/internals.glyph +79 -0
  24. data/book/text/extending/interpreting.glyph +51 -0
  25. data/book/text/extending/macro_def.glyph +64 -0
  26. data/book/text/extending/params_attrs.glyph +70 -0
  27. data/book/text/extending/placeholders.glyph +34 -0
  28. data/book/text/extending/validators.glyph +16 -0
  29. data/book/text/getting_started/configuration.glyph +49 -0
  30. data/book/text/getting_started/create_project.glyph +41 -0
  31. data/book/text/getting_started/structure.glyph +55 -0
  32. data/book/text/introduction.glyph +49 -26
  33. data/book/text/license.glyph +1 -1
  34. data/book/text/macros/macros_block.glyph +99 -0
  35. data/book/text/macros/macros_core.glyph +208 -0
  36. data/book/text/macros/macros_filters.glyph +40 -0
  37. data/book/text/macros/macros_inline.glyph +50 -0
  38. data/book/text/macros/macros_structure.glyph +100 -0
  39. data/book/text/ref_commands.glyph +94 -73
  40. data/book/text/ref_config.glyph +34 -42
  41. data/book/text/ref_macros.glyph +1 -373
  42. data/book/text/text_editing/code.glyph +51 -0
  43. data/book/text/text_editing/conditionals.glyph +49 -0
  44. data/book/text/text_editing/evaluation.glyph +13 -0
  45. data/book/text/text_editing/glyph_files.glyph +7 -0
  46. data/book/text/text_editing/images.glyph +29 -0
  47. data/book/text/text_editing/inclusions.glyph +44 -0
  48. data/book/text/text_editing/links.glyph +53 -0
  49. data/book/text/text_editing/macro_intro.glyph +111 -0
  50. data/book/text/text_editing/raw_html.glyph +112 -0
  51. data/book/text/text_editing/sections.glyph +63 -0
  52. data/book/text/text_editing/stylesheets.glyph +36 -0
  53. data/book/text/troubleshooting/errors_command.glyph +39 -0
  54. data/book/text/troubleshooting/errors_generic.glyph +29 -0
  55. data/book/text/troubleshooting/errors_intro.glyph +3 -0
  56. data/book/text/troubleshooting/errors_macro.glyph +98 -0
  57. data/book/text/troubleshooting/errors_parser.glyph +29 -0
  58. data/config.yml +77 -58
  59. data/document.glyph +25 -25
  60. data/glyph.gemspec +57 -22
  61. data/lib/glyph.rb +54 -13
  62. data/lib/glyph/commands.rb +84 -17
  63. data/lib/glyph/config.rb +3 -3
  64. data/lib/glyph/document.rb +14 -8
  65. data/lib/glyph/interpreter.rb +18 -58
  66. data/lib/glyph/macro.rb +160 -55
  67. data/lib/glyph/macro_validators.rb +104 -12
  68. data/lib/glyph/node.rb +24 -0
  69. data/lib/glyph/parser.rb +278 -0
  70. data/lib/glyph/syntax_node.rb +225 -0
  71. data/macros/core.rb +212 -0
  72. data/macros/filters.rb +66 -15
  73. data/macros/html/block.rb +43 -105
  74. data/macros/html/inline.rb +11 -12
  75. data/macros/html/structure.rb +123 -58
  76. data/macros/xml.rb +33 -0
  77. data/spec/files/container.textile +2 -2
  78. data/spec/files/document.glyph +2 -2
  79. data/spec/files/document_with_toc.glyph +3 -3
  80. data/spec/files/included.textile +1 -1
  81. data/spec/files/ligature.jpg +0 -0
  82. data/spec/files/markdown.markdown +2 -1
  83. data/spec/lib/commands_spec.rb +46 -3
  84. data/spec/lib/document_spec.rb +4 -4
  85. data/spec/lib/glyph_spec.rb +17 -46
  86. data/spec/lib/interpreter_spec.rb +6 -25
  87. data/spec/lib/macro_spec.rb +141 -43
  88. data/spec/lib/macro_validators_spec.rb +27 -5
  89. data/spec/lib/node_spec.rb +26 -1
  90. data/spec/lib/parser_spec.rb +246 -0
  91. data/spec/lib/syntax_node_spec.rb +111 -0
  92. data/spec/macros/core_spec.rb +195 -0
  93. data/spec/macros/filters_spec.rb +38 -4
  94. data/spec/macros/macros_spec.rb +20 -176
  95. data/spec/macros/textile_spec.rb +13 -71
  96. data/spec/macros/xml_spec.rb +77 -0
  97. data/spec/spec_helper.rb +50 -10
  98. data/spec/tasks/load_spec.rb +13 -2
  99. data/styles/default.css +18 -6
  100. data/styles/pagination.css +1 -19
  101. data/tasks/generate.rake +2 -2
  102. data/tasks/load.rake +27 -17
  103. data/tasks/project.rake +1 -1
  104. metadata +75 -62
  105. data/book/script/compile.rb +0 -8
  106. data/book/script/prof +0 -1
  107. data/book/script/prof_results.htm +0 -21079
  108. data/book/text/authoring.glyph +0 -548
  109. data/book/text/extending.glyph +0 -224
  110. data/book/text/getting_started.glyph +0 -158
  111. data/book/text/troubleshooting.glyph +0 -179
  112. data/lib/glyph/glyph_language.rb +0 -538
  113. data/lib/glyph/glyph_language.treetop +0 -27
  114. data/macros/common.rb +0 -160
@@ -0,0 +1,195 @@
1
+ #!/usr/bin/env ruby
2
+ require File.join(File.dirname(__FILE__), "..", "spec_helper")
3
+
4
+ describe "Macro:" do
5
+
6
+ before do
7
+ create_project
8
+ Glyph.run! 'load:all'
9
+ end
10
+
11
+ after do
12
+ Glyph.lite_mode = false
13
+ delete_project
14
+ end
15
+
16
+ it "snippet" do
17
+ define_em_macro
18
+ interpret "Testing a snippet: &[test]."
19
+ @p.document.output.should == "Testing a snippet: This is a \nTest snippet."
20
+ interpret("Testing &[wrong].")
21
+ @p.document.output.should == "Testing [SNIPPET 'wrong' NOT PROCESSED]."
22
+ Glyph::SNIPPETS[:a] = "this is a em[test] &[b]"
23
+ Glyph::SNIPPETS[:b] = "and another em[test]"
24
+ text = "TEST: &[a]"
25
+ interpret text
26
+ @p.document.output.should == "TEST: this is a <em>test</em> and another <em>test</em>"
27
+ # Check snippets with links
28
+ Glyph::SNIPPETS[:c] = "This is a link to something afterwards: =>[#other]"
29
+ text = "Test. &[c]. #[other|Test]."
30
+ output_for(text).should == %{Test. This is a link to something afterwards: <a href="#other">Test</a>. <a id="other">Test</a>.}
31
+ end
32
+
33
+ it "snippet:" do
34
+ interpret("&[t1] - &:[t1|Test #1] - &[t1]")
35
+ @p.document.output.should == "[SNIPPET 't1' NOT PROCESSED] - - Test #1"
36
+ Glyph::SNIPPETS[:t1].should == "Test #1"
37
+ Glyph::SNIPPETS.delete :t1
38
+ end
39
+
40
+ it "condition" do
41
+ define_em_macro
42
+ interpret("?[$[document.invalid]|em[test]]")
43
+ @p.document.output.should == ""
44
+ interpret("?[$[document.output]|em[test]]")
45
+ @p.document.output.should == "<em>test</em>"
46
+ interpret("?[not[eq[$[document.output]|]]|em[test]]")
47
+ @p.document.output.should == "<em>test</em>"
48
+ interpret %{?[
49
+ or[
50
+ eq[$[document.target]|htmls]|
51
+ not[eq[$[document.author]|x]]
52
+ ]|em[test]]}
53
+ @p.document.output.should == "<em>test</em>"
54
+ # "false" should be regarded as false
55
+ interpret(%{?[%["test".blank?]|---]})
56
+ @p.document.output.should == ""
57
+ interpret("?[not[match[$[document.source]|/^docu/]]|em[test]]")
58
+ @p.document.output.should == ""
59
+ # Invalid regexp
60
+ lambda { interpret("?[match[$[document.source]|document]em[test]]").document.output }.should raise_error
61
+ interpret "?[%[lite?]|test]"
62
+ @p.document.output.should == ""
63
+ interpret "?[%[!lite?]|test]"
64
+ @p.document.output.should == "test"
65
+ interpret "?[%[lite?]|%[\"test\"]]"
66
+ @p.document.output.should == ""
67
+ # Condition not satisfied...
68
+ interpret "?[%[lite?]|%[ Glyph\\['test_config'\\] = true ]]"
69
+ @p.document.output.should == ""
70
+ Glyph['test_config'].should_not == true
71
+ # Condition satisfied...
72
+ interpret "?[%[!lite?]|%[ Glyph\\['test_config'\\] = true ]]"
73
+ @p.document.output.should == "true"
74
+ Glyph['test_config'].should == true
75
+ end
76
+
77
+ it "comment" do
78
+ output_for("--[config:[some_random_setting|test]]").should == ""
79
+ Glyph[:some_random_setting].should == nil
80
+ end
81
+
82
+ it "include" do
83
+ Glyph["filters.by_extension"] = true
84
+ text = file_load(Glyph::PROJECT/'text/container.textile')
85
+ interpret text
86
+ @p.document.output.gsub(/\n|\t|_\d{1,3}/, '').should == %{
87
+ <div class="section">
88
+ <h2 id="h_1">Container section</h2>
89
+ This is a test.
90
+ <div class="section">
91
+ <h3 id="h_2">Test Section</h3>
92
+ <p>&#8230;</p>
93
+ </div>
94
+ </div>
95
+ }.gsub(/\n|\t|_\d{1,3}/, '')
96
+ end
97
+
98
+ it "include should work in Lite mode" do
99
+ Glyph.lite_mode = true
100
+ result = %{<div class="section">
101
+ <h2 id="h_1">Container section</h2>
102
+ This is a test.
103
+ <div class="section">
104
+ <h3 id="h_2">Test Section</h3>
105
+ <p>&#8230;</p>
106
+ </div>
107
+
108
+ </div>}.gsub(/\n|\t/, '')
109
+ Dir.chdir Glyph::SPEC_DIR/"files"
110
+ text = file_load(Glyph::SPEC_DIR/"files/container.textile").gsub("a/b/c/", '')
111
+ Glyph.filter(text).gsub(/\n|\t/, '').should == result
112
+ Dir.chdir Glyph::PROJECT
113
+ Glyph.lite_mode = false
114
+ end
115
+
116
+ it "include should assume .glyph as the default extension" do
117
+ file_copy Glyph::SPEC_DIR/'files/article.glyph', Glyph::PROJECT/'text/article.glyph'
118
+ output_for("include[article]").gsub(/\n|\t/, '').should == %{<div class="section">
119
+ Test -- Test Snippet
120
+
121
+ </div>}.gsub(/\n|\t/, '')
122
+ end
123
+
124
+ it "include should evaluate .rb file in the context of Glyph" do
125
+ text = %{
126
+ macro :day do
127
+ Time.now.day
128
+ end
129
+ }
130
+ file_write Glyph::PROJECT/"lib/test.rb", text
131
+ output_for("include[test.rb]day[]").should == Time.now.day.to_s
132
+ end
133
+
134
+
135
+ it "escape" do
136
+ define_em_macro
137
+ text = %{This is a test em[This can .[=contain test[macros em[test]]=]]}
138
+ interpret text
139
+ @p.document.output.should == %{This is a test <em>This can contain test[macros em[test]]</em>}
140
+ end
141
+
142
+ it "ruby" do
143
+ interpret "2 + 2 = %[2+2]"
144
+ @p.document.output.should == %{2 + 2 = 4}
145
+ interpret "%[lite?]"
146
+ @p.document.output.should == %{false}
147
+ interpret "%[def test; end]"
148
+ end
149
+
150
+ it "config" do
151
+ Glyph["test.setting"] = "TEST"
152
+ interpret "test.setting = $[test.setting]"
153
+ @p.document.output.should == %{test.setting = TEST}
154
+ end
155
+
156
+ it "config:" do
157
+ Glyph["test.setting"] = "TEST"
158
+ interpret "test.setting = $[test.setting]"
159
+ @p.document.output.should == %{test.setting = TEST}
160
+ interpret "test.setting = $:[test.setting|TEST2]$[test.setting]"
161
+ @p.document.output.should == %{test.setting = TEST2}
162
+ interpret("$:[test.setting]").process
163
+ Glyph['test.setting'].should == nil
164
+ Glyph['system.test'] = 1
165
+ interpret("$:[system.test|2]").process
166
+ Glyph['system.test'].should == 1
167
+ end
168
+
169
+ it "macro:" do
170
+ interpret '%:[e_macro|
171
+ "Test: #{value}"]e_macro[OK!]'
172
+ @p.document.output.should == "Test: OK!"
173
+ end
174
+
175
+ it "alias:" do
176
+ define_em_macro
177
+ interpret("alias:[test|em]").process
178
+ Glyph::MACROS[:test].should == Glyph::MACROS[:em]
179
+ end
180
+
181
+ it "rewrite:" do
182
+ define_em_macro
183
+ interpret("rewrite:[rw_test|em[{{0}}\\.em[{{a}}]]]").process
184
+ output_for("rw_test[test @a[em[A!]]]").should == "<em>test<em><em>A!</em></em></em>"
185
+ end
186
+
187
+ it "rewrite should detect mutual definitions" do
188
+ define_em_macro
189
+ lambda do
190
+ interpret("rw:[rw_test2|em[rw_test2[{{0}}]]]").process
191
+ end.should raise_error(Glyph::MacroError)
192
+ end
193
+
194
+
195
+ end
@@ -12,7 +12,7 @@ describe "Filter Macros" do
12
12
  after do
13
13
  delete_project
14
14
  end
15
-
15
+
16
16
  it "should filter textile input" do
17
17
  text = "textile[This is a _TEST_(TM).]"
18
18
  interpret text
@@ -34,9 +34,43 @@ describe "Filter Macros" do
34
34
  - item 3
35
35
 
36
36
  etc.]"
37
- interpret text
38
- @p.document.output.gsub(/\n|\t/, '').should ==
39
- "<p>This is a test:</p><ul><li>item 1</li><li>item 2</li><li>item 3</li></ul><p>etc.</p>"
37
+ interpret text
38
+ @p.document.output.gsub(/\n|\t|\s{2}/, '').should ==
39
+ "<p>This is a test:</p><ul><li>item 1</li><li>item 2</li><li>item 3</li></ul><p>etc.</p>"
40
40
  end
41
41
 
42
+ it "highlight" do
43
+ cr = false
44
+ uv = false
45
+ begin
46
+ require 'coderay'
47
+ cr = true
48
+ rescue Exception
49
+ end
50
+ begin
51
+ require 'uv'
52
+ uv = true
53
+ rescue Exception
54
+ end
55
+ code = %{def test_method(a, b)
56
+ puts a+b
57
+ end}
58
+ cr_result = %{<div class=\"CodeRay\"> <div class=\"code\"><pre><span class=\"r\">def</span>
59
+ <span class=\"fu\">test_method</span>(a, b) puts a+b <span class=\"r\">end</span></pre></div> </div>}
60
+ uv_result = %{<pre class=\"iplastic\"><span class=\"Keyword\">def</span>
61
+ <span class=\"FunctionName\">test_method</span>(<span class=\"Arguments\">a<span class=\"Arguments\">,</span> b</span>)
62
+ puts a<span class=\"Keyword\">+</span>b <span class=\"Keyword\">end</span> </pre>}
63
+ Glyph['filters.ultraviolet.theme'] = 'iplastic'
64
+ check = lambda do |hl, result|
65
+ Glyph["filters.highlighter"] = hl.to_sym
66
+ Glyph.debug_mode = true
67
+ interpret("highlight[=ruby|\n#{code}=]")
68
+ @p.document.output.gsub(/\s+/, ' ').strip.should == result.gsub(/\s+/, ' ').strip
69
+ end
70
+ Glyph['filters.ultraviolet.line_numbers'] = false
71
+ check.call 'ultraviolet', uv_result if uv
72
+ check.call 'coderay', cr_result if cr
73
+ end
74
+
75
+
42
76
  end
@@ -10,6 +10,7 @@ describe "Macro:" do
10
10
 
11
11
  after do
12
12
  Glyph.lite_mode = false
13
+ reset_quiet
13
14
  delete_project
14
15
  end
15
16
 
@@ -21,78 +22,16 @@ describe "Macro:" do
21
22
  lambda { interpret "this is a #[test|test]. #[test|This won't work!]"; @p.document }.should raise_error(Glyph::MacroError)
22
23
  end
23
24
 
24
- it "snippet" do
25
- define_em_macro
26
- interpret "Testing a snippet: &[test]."
27
- @p.document.output.should == "Testing a snippet: This is a \nTest snippet."
28
- interpret("Testing &[wrong].")
29
- @p.document.output.should == "Testing [SNIPPET 'wrong' NOT PROCESSED]."
30
- Glyph::SNIPPETS[:a] = "this is a em[test] &[b]"
31
- Glyph::SNIPPETS[:b] = "and another em[test]"
32
- text = "TEST: &[a]"
33
- interpret text
34
- @p.document.output.should == "TEST: this is a <em>test</em> and another <em>test</em>"
35
- # Check snippets with links
36
- Glyph::SNIPPETS[:c] = "This is a link to something afterwards: =>[#other]"
37
- text = "Test. &[c]. #[other|Test]."
38
- interpret text
39
- @p.document.output.should == %{Test. This is a link to something afterwards: <a href="#other">Test</a>. <a id="other">Test</a>.}
40
- end
41
-
42
- it "snippet:" do
43
- interpret("&[t1] - &:[t1|Test #1] - &[t1]")
44
- @p.document.output.should == "[SNIPPET 't1' NOT PROCESSED] - - Test #1"
45
- Glyph::SNIPPETS[:t1].should == "Test #1"
46
- Glyph::SNIPPETS.delete :t1
47
- end
48
-
49
- it "condition" do
50
- define_em_macro
51
- interpret("?[$[document.invalid]|em[test]]")
52
- @p.document.output.should == ""
53
- interpret("?[$[document.output]|em[test]]")
54
- @p.document.output.should == "<em>test</em>"
55
- interpret("?[not[eq[$[document.output]|]]|em[test]]")
56
- @p.document.output.should == "<em>test</em>"
57
- interpret %{?[
58
- or[
59
- eq[$[document.target]|htmls]|
60
- not[eq[$[document.author]|x]]
61
- ]|em[test]]}
62
- @p.document.output.should == "<em>test</em>"
63
- # "false" should be regarded as false
64
- interpret(%{?[%["test".blank?]|---]})
65
- @p.document.output.should == ""
66
- interpret("?[not[match[$[document.source]|/^docu/]]|em[test]]")
67
- @p.document.output.should == ""
68
- # Invalid regexp
69
- lambda { interpret("?[match[$[document.source]|document]em[test]]").document.output }.should raise_error
70
- interpret "?[%[lite?]|test]"
71
- @p.document.output.should == ""
72
- interpret "?[%[!lite?]|test]"
73
- @p.document.output.should == "test"
74
- interpret "?[%[lite?]|%[\"test\"]]"
75
- @p.document.output.should == ""
76
- # Condition not satisfied...
77
- interpret "?[%[lite?]|*[= %[ Glyph\\['test_config'\\] = true ] =]]"
78
- @p.document.output.should == ""
79
- Glyph['test_config'].should_not == true
80
- # Condition satisfied...
81
- interpret "?[%[!lite?]|*[= --[%[ Glyph\\['test_config'\\] = true ]] =]]"
82
- @p.document.output.should == ""
83
- Glyph['test_config'].should == true
84
- end
85
-
86
25
  it "section, chapter, header" do
87
- text = "chapter[header[Chapter X] ... section[header[Section Y|sec-y] ... section[header[Another section] ...]]]"
26
+ text = "chapter[@title[Chapter X] ... section[@title[Section Y]@id[sec-y] ... section[@title[Another section] ...]]]"
88
27
  interpret text
89
28
  doc = @p.document
90
29
  doc.output.gsub(/\n|\t/, '').should == %{<div class="chapter">
91
- <h2 id="h_1">Chapter X</h2> ...
30
+ <h2 id="h_1">Chapter X</h2>...
92
31
  <div class="section">
93
- <h3 id="sec-y">Section Y</h3> ...
32
+ <h3 id="sec-y">Section Y</h3>...
94
33
  <div class="section">
95
- <h4 id="h_3">Another section</h4> ...
34
+ <h4 id="h_3">Another section</h4>...
96
35
  </div>
97
36
  </div>
98
37
  </div>
@@ -100,29 +39,6 @@ describe "Macro:" do
100
39
  doc.bookmark?(:"sec-y").should == {:id => :"sec-y", :title => "Section Y"}
101
40
  end
102
41
 
103
- it "include" do
104
- Glyph["filters.by_extension"] = true
105
- text = file_load(Glyph::PROJECT/'text/container.textile')
106
- interpret text
107
- @p.document.output.gsub(/\n|\t|_\d{1,3}/, '').should == %{
108
- <div class="section">
109
- <h2 id="h_1">Container section</h2>
110
- This is a test.
111
- <div class="section">
112
- <h3 id="h_2">Test Section</h3>
113
- <p>&#8230;</p>
114
- </div>
115
- </div>
116
- }.gsub(/\n|\t|_\d{1,3}/, '')
117
- end
118
-
119
- it "include should not work in Lite mode" do
120
- text = file_load(Glyph::PROJECT/'text/container.textile')
121
- Glyph.lite_mode = true
122
- lambda { interpret(text).document.output }.should raise_error Glyph::MacroError
123
- Glyph.lite_mode = false
124
- end
125
-
126
42
  it "document, head, style" do
127
43
  interpret "document[head[style[test.sass]]]"
128
44
  @p.document.output.gsub(/\n|\t/, '').should == %{
@@ -134,7 +50,7 @@ describe "Macro:" do
134
50
  <meta name="author" content="#{Glyph["document.author"]}" />
135
51
  <meta name="copyright" content="#{Glyph["document.author"]}" />
136
52
  <meta name="generator" content="Glyph v#{Glyph::VERSION} (http://www.h3rald.com/glyph)" />
137
- <style type=\"text/css\">#main { background-color: #0000ff; }</style>
53
+ <style type=\"text/css\">#main { background-color: blue; }</style>
138
54
  </head>
139
55
  </html>
140
56
  }.gsub(/\n|\t/, '')
@@ -150,7 +66,7 @@ describe "Macro:" do
150
66
  <meta name="author" content="#{Glyph["document.author"]}" />
151
67
  <meta name="copyright" content="#{Glyph["document.author"]}" />
152
68
  <meta name="generator" content="Glyph v#{Glyph::VERSION} (http://www.h3rald.com/glyph)" />
153
- <style type=\"text/css\">#main { background-color: #0000ff; }</style>
69
+ <style type=\"text/css\">#main { background-color: blue; }</style>
154
70
  </head>
155
71
  </html>
156
72
  }.gsub(/\n|\t/, '')
@@ -162,35 +78,6 @@ describe "Macro:" do
162
78
  @p.document.output.gsub(/\n|\t/, '').should == result
163
79
  end
164
80
 
165
- it "escape" do
166
- define_em_macro
167
- text = %{This is a test em[This can .[=contain test[macros em[test]]=]]}
168
- interpret text
169
- @p.document.output.should == %{This is a test <em>This can contain test[macros em[test]]</em>}
170
- end
171
-
172
- it "ruby" do
173
- interpret "2 + 2 = %[2+2]"
174
- @p.document.output.should == %{2 + 2 = 4}
175
- interpret "%[lite?]"
176
- @p.document.output.should == %{false}
177
- interpret "%[def test; end]"
178
- end
179
-
180
- it "config" do
181
- Glyph["test.setting"] = "TEST"
182
- interpret "test.setting = $[test.setting]"
183
- @p.document.output.should == %{test.setting = TEST}
184
- end
185
-
186
- it "config:" do
187
- Glyph["test.setting"] = "TEST"
188
- interpret "test.setting = $[test.setting]"
189
- @p.document.output.should == %{test.setting = TEST}
190
- interpret "test.setting = $:[test.setting|TEST2]$[test.setting]"
191
- @p.document.output.should == %{test.setting = TEST2}
192
- end
193
-
194
81
  it "toc" do
195
82
  file_copy Glyph::PROJECT/'../files/document_with_toc.glyph', Glyph::PROJECT/'document.glyph'
196
83
  interpret file_load(Glyph::PROJECT/'document.glyph')
@@ -201,9 +88,6 @@ describe "Macro:" do
201
88
  <h2 class="toc-header" id="h_toc">Table of Contents</h2>
202
89
  <ol class="toc">
203
90
  <li class=" section"><a href="#h_1">Container section</a></li>
204
- <li><ol>
205
- <li class=" section"><a href="#h_2">Test Section</a></li>
206
- </ol></li>
207
91
  <li class=" section"><a href="#md">Markdown</a></li>
208
92
  </ol>
209
93
  </div>
@@ -233,32 +117,30 @@ describe "Macro:" do
233
117
  see <a href="#test">Test</a></span> <a id="test">Test</a>}.gsub(/\n|\t/, '')
234
118
  end
235
119
 
236
- it "img" do
237
- interpret "img[ligature.jpg|90%|90%]"
120
+ it "image" do
121
+ interpret "image[@width[90%]@height[90%]@alt[-]ligature.jpg]"
238
122
  @p.document.output.gsub(/\t|\n/, '').should == %{
239
- <img src="images/ligature.jpg"
240
- width="90%" height="90%" alt="-"/>
123
+ <img src="images/ligature.jpg" width="90%" height="90%" alt="-" />
241
124
  }.gsub(/\n|\t/, '')
242
125
  end
243
126
 
244
- it "img should link files by absolute or relative path in Lite mode" do
127
+ it "image should link files by absolute or relative path in Lite mode" do
245
128
  result = %{
246
- <img src="images/ligature.jpg"
247
- width="90%" height="90%" alt="-"/>
129
+ <img alt="-" src="images/ligature.jpg" width="90%" height="90%" />
248
130
  }.gsub(/\n|\t/, '')
249
131
  Glyph.lite_mode = true
250
132
  Dir.chdir Glyph::PROJECT
251
- interpret "img[images/ligature.jpg|90%|90%]"
133
+ interpret "image[@width[90%]@height[90%]images/ligature.jpg]"
252
134
  @p.document.output.gsub(/\t|\n/, '').should == result
253
- interpret "img[#{Glyph::PROJECT}/images/ligature.jpg|90%|90%]"
135
+ interpret "image[@width[90%]@height[90%]#{Glyph::PROJECT}/images/ligature.jpg]"
254
136
  @p.document.output.gsub(/\t|\n/, '').gsub(Glyph::PROJECT.to_s+'/', '').should == result
255
137
  end
256
138
 
257
- it "fig" do
258
- interpret "fig[ligature.jpg|Ligature]"
139
+ it "figure" do
140
+ interpret "figure[@alt[ligature]ligature.jpg|Ligature]"
259
141
  @p.document.output.gsub(/\t|\n/, '').should == %{
260
142
  <div class="figure">
261
- <img src="images/ligature.jpg" alt="-"/>
143
+ <img src="images/ligature.jpg" alt="ligature" />
262
144
  <div class="caption">Ligature</div>
263
145
  </div>
264
146
  }.gsub(/\n|\t/, '')
@@ -267,15 +149,15 @@ describe "Macro:" do
267
149
  it "fig should link files by absolute or relative path in Lite mode" do
268
150
  result = %{
269
151
  <div class="figure">
270
- <img src="images/ligature.jpg" alt="-"/>
152
+ <img alt="-" src="images/ligature.jpg" />
271
153
  <div class="caption">Ligature</div>
272
154
  </div>
273
155
  }.gsub(/\n|\t/, '')
274
156
  Glyph.lite_mode = true
275
157
  Dir.chdir Glyph::PROJECT
276
- interpret "fig[images/ligature.jpg|Ligature]"
158
+ interpret "figure[images/ligature.jpg|Ligature]"
277
159
  @p.document.output.gsub(/\t|\n/, '').should == result
278
- interpret "fig[#{Glyph::PROJECT}/images/ligature.jpg|Ligature]"
160
+ interpret "figure[#{Glyph::PROJECT}/images/ligature.jpg|Ligature]"
279
161
  @p.document.output.gsub(/\t|\n/, '').gsub(Glyph::PROJECT.to_s+'/', '').should == result
280
162
  end
281
163
 
@@ -295,42 +177,4 @@ describe "Macro:" do
295
177
  Glyph['document.draft'] = false
296
178
  end
297
179
 
298
- it "highlight" do
299
- cr = false
300
- uv = false
301
- begin
302
- require 'coderay'
303
- cr = true
304
- rescue Exception
305
- end
306
- begin
307
- require 'uv'
308
- uv = true
309
- rescue Exception
310
- end
311
- code = %{def test_method(a, b)
312
- puts a+b
313
- end}
314
- cr_result = %{<div class=\"CodeRay\"> <div class=\"code\"><pre> <span class=\"r\">def</span>
315
- <span class=\"fu\">test_method</span>(a, b) puts a+b <span class=\"r\">end</span></pre></div> </div>}
316
- uv_result = %{<pre class=\"iplastic\"> <span class=\"Keyword\">def</span>
317
- <span class=\"FunctionName\">test_method</span>(<span class=\"Arguments\">a<span class=\"Arguments\">,</span> b</span>)
318
- puts a<span class=\"Keyword\">+</span>b <span class=\"Keyword\">end</span> </pre>}
319
- Glyph['highlighters.ultraviolet.theme'] = 'iplastic'
320
- check = lambda do |hl, result|
321
- Glyph["highlighters.current"] = hl
322
- Glyph.debug_mode = true
323
- interpret("highlight[=ruby|\n#{code}=]")
324
- @p.document.output.gsub(/\s+/, ' ').strip.should == result.gsub(/\s+/, ' ').strip
325
- end
326
- check.call 'ultraviolet', uv_result if uv
327
- check.call 'coderay', cr_result if cr
328
- end
329
-
330
- it "macro:" do
331
- interpret '%:[e_macro|
332
- "Test: #@value"]e_macro[OK!]'
333
- @p.document.output.should == "Test: OK!"
334
- end
335
-
336
180
  end