glyph 0.5.2 → 0.5.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/AUTHORS.textile +1 -0
  3. data/CHANGELOG.textile +104 -59
  4. data/Gemfile.lock +46 -0
  5. data/LICENSE.textile +1 -1
  6. data/README.textile +106 -120
  7. data/book/lib/layouts/bookindex.glyph +6 -106
  8. data/book/lib/layouts/bookpage.glyph +8 -108
  9. data/book/lib/layouts/project.glyph +0 -1
  10. data/book/text/acknowledgements.glyph +1 -0
  11. data/book/text/changelog.glyph +7 -1
  12. data/glyph.gemspec +10 -10
  13. data/lib/glyph.rb +1 -1
  14. data/spec/files/test.scss +1 -1
  15. data/spec/lib/analyzer_spec.rb +60 -61
  16. data/spec/lib/bookmark_spec.rb +21 -21
  17. data/spec/lib/commands_spec.rb +53 -54
  18. data/spec/lib/config_spec.rb +16 -16
  19. data/spec/lib/document_spec.rb +35 -35
  20. data/spec/lib/glyph_spec.rb +32 -32
  21. data/spec/lib/interpreter_spec.rb +8 -8
  22. data/spec/lib/macro_spec.rb +51 -49
  23. data/spec/lib/macro_validators_spec.rb +14 -14
  24. data/spec/lib/node_spec.rb +25 -25
  25. data/spec/lib/parser_spec.rb +26 -26
  26. data/spec/lib/reporter_spec.rb +32 -32
  27. data/spec/lib/syntax_node_spec.rb +33 -33
  28. data/spec/macros/core_spec.rb +95 -95
  29. data/spec/macros/filters_spec.rb +9 -8
  30. data/spec/macros/html5_spec.rb +17 -17
  31. data/spec/macros/macros_spec.rb +33 -33
  32. data/spec/macros/textile_spec.rb +15 -15
  33. data/spec/macros/web5_spec.rb +3 -3
  34. data/spec/macros/web_spec.rb +19 -19
  35. data/spec/macros/xml_spec.rb +15 -15
  36. data/spec/tasks/generate_spec.rb +34 -34
  37. data/spec/tasks/load_spec.rb +15 -15
  38. data/spec/tasks/project_spec.rb +15 -15
  39. data/styles/coderay.css +2 -0
  40. data/styles/coderay.css.map +7 -0
  41. data/styles/default.css +9 -7
  42. data/styles/default.css.map +7 -0
  43. data/styles/pagination.css +18 -23
  44. data/styles/pagination.css.map +7 -0
  45. data/tasks/generate.rake +12 -5
  46. metadata +47 -68
  47. data/glyph-0.5.1.gem +0 -0
@@ -18,16 +18,16 @@ describe "Macro:" do
18
18
  it "anchor" do
19
19
  interpret "this is a #[test|test]."
20
20
  doc = @p.document
21
- doc.output.should == "this is a <a id=\"test\">test</a>."
22
- doc.bookmarks[:test].should == Glyph::Bookmark.new({:file => nil, :title => 'test', :id => :test})
23
- lambda { interpret "this is a #[test|test]. #[test|This won't work!]"; @p.document }.should raise_error
21
+ expect(doc.output).to eq("this is a <a id=\"test\">test</a>.")
22
+ expect(doc.bookmarks[:test]).to eq(Glyph::Bookmark.new({:file => nil, :title => 'test', :id => :test}))
23
+ expect { interpret "this is a #[test|test]. #[test|This won't work!]"; @p.document }.to raise_error
24
24
  end
25
25
 
26
26
  it "section, chapter, header" do
27
27
  text = "chapter[@title[Chapter X] ... section[@title[Section Y]@id[sec-y] ... section[@title[Another section] ...]]]"
28
28
  interpret text
29
29
  doc = @p.document
30
- doc.output.gsub(/\n|\t/, '').should == %{<div class="chapter">
30
+ expect(doc.output.gsub(/\n|\t/, '')).to eq(%{<div class="chapter">
31
31
  <h2 id="h_1" class="toc">Chapter X</h2>...
32
32
  <div class="section">
33
33
  <h3 id="sec-y" class="toc">Section Y</h3>...
@@ -36,8 +36,8 @@ describe "Macro:" do
36
36
  </div>
37
37
  </div>
38
38
  </div>
39
- }.gsub(/\n|\t/, '')
40
- doc.bookmark?(:"sec-y").should == Glyph::Bookmark.new({:id => :"sec-y", :title => "Section Y", :file => nil})
39
+ }.gsub(/\n|\t/, ''))
40
+ expect(doc.bookmark?(:"sec-y")).to eq(Glyph::Bookmark.new({:id => :"sec-y", :title => "Section Y", :file => nil}))
41
41
  end
42
42
 
43
43
  it "document, head, style" do
@@ -52,14 +52,14 @@ describe "Macro:" do
52
52
  <meta name="copyright" content="#{Glyph["document.author"]}" />
53
53
  <meta name="generator" content="Glyph v#{Glyph::VERSION} (http://www.h3rald.com/glyph)" />
54
54
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
55
- <style type=\"text/css\">#main { background-color: blue; margin: 12px; }</style>
55
+ <style type=\"text/css\">#main { background-color: #0000ff; margin: 12px; }</style>
56
56
  </head>
57
57
  </html>
58
58
  }
59
59
  interpret "document[head[style[test.sass]]]"
60
- @p.document.output.gsub(/\n|\t/, '').should == doc.gsub(/\n|\t/, '')
60
+ expect(@p.document.output.gsub(/\n|\t/, '')).to eq(doc.gsub(/\n|\t/, ''))
61
61
  interpret "document[head[style[test.scss]]]"
62
- @p.document.output.gsub(/\n|\t/, '').should == doc.gsub(/\n|\t/, '')
62
+ expect(@p.document.output.gsub(/\n|\t/, '')).to eq(doc.gsub(/\n|\t/, ''))
63
63
  end
64
64
 
65
65
  it "style should link files by absolute or relative path in Lite mode" do
@@ -73,21 +73,21 @@ describe "Macro:" do
73
73
  <meta name="copyright" content="#{Glyph["document.author"]}" />
74
74
  <meta name="generator" content="Glyph v#{Glyph::VERSION} (http://www.h3rald.com/glyph)" />
75
75
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
76
- <style type=\"text/css\">#main { background-color: blue; margin: 12px; }</style>
76
+ <style type=\"text/css\">#main { background-color: #0000ff; margin: 12px; }</style>
77
77
  </head>
78
78
  </html>
79
79
  }.gsub(/\n|\t/, '')
80
80
  Glyph.lite_mode = true
81
81
  Dir.chdir Glyph::PROJECT
82
82
  interpret "document[head[style[styles/test.sass]]]"
83
- @p.document.output.gsub(/\n|\t/, '').should == result
83
+ expect(@p.document.output.gsub(/\n|\t/, '')).to eq(result)
84
84
  end
85
85
 
86
86
  it "style should import and link stylesheets" do
87
87
  Glyph['document.styles'] = 'import'
88
- output_for("head[style[default.css]]").match(/@import url\("styles\/default\.css"\)/).blank?.should == false
88
+ expect(output_for("head[style[default.css]]").match(/@import url\("styles\/default\.css"\)/).blank?).to eq(false)
89
89
  Glyph['document.styles'] = 'link'
90
- output_for("head[style[default.css]]").match(%{<link href="styles/default.css" rel="stylesheet" type="text/css" />}).blank?.should == false
90
+ expect(output_for("head[style[default.css]]").match(%{<link href="styles/default.css" rel="stylesheet" type="text/css" />}).blank?).to eq(false)
91
91
  Glyph['document.styles'] = 'embed'
92
92
  end
93
93
 
@@ -96,7 +96,7 @@ describe "Macro:" do
96
96
  interpret file_load(Glyph::PROJECT/'document.glyph')
97
97
  doc = @p.document
98
98
  doc.output.gsub!(/\n|\t/, '')
99
- doc.output.slice(/(.+?<\/div>)/, 1).should == %{
99
+ expect(doc.output.slice(/(.+?<\/div>)/, 1)).to eq(%{
100
100
  <div class="contents">
101
101
  <h2 class="toc-header" id="toc">Table of Contents</h2>
102
102
  <ol class="toc">
@@ -104,7 +104,7 @@ describe "Macro:" do
104
104
  <li class="section"><a href="#md">Markdown</a></li>
105
105
  </ol>
106
106
  </div>
107
- }.gsub(/\n|\t/, '')
107
+ }.gsub(/\n|\t/, ''))
108
108
  end
109
109
 
110
110
  it "link" do
@@ -115,26 +115,26 @@ describe "Macro:" do
115
115
  #[test_id2|Test #2]
116
116
  }
117
117
  interpret text
118
- @p.document.output.gsub(/\n|\t/, '').should == %{
118
+ expect(@p.document.output.gsub(/\n|\t/, '')).to eq(%{
119
119
  <a href="#test_id">Test #1</a>
120
120
  <a href="#test_id2">Test #2</a>
121
121
  <a id="test_id">Test #1</a>
122
122
  <a id="test_id2">Test #2</a>
123
- }.gsub(/\n|\t/, '')
123
+ }.gsub(/\n|\t/, ''))
124
124
  end
125
125
 
126
126
  it "fmi" do
127
127
  interpret "fmi[this topic|#test] #[test|Test]"
128
- @p.document.output.should == %{<span class="fmi">
128
+ expect(@p.document.output).to eq(%{<span class="fmi">
129
129
  for more information on this topic,
130
- see <a href="#test">Test</a></span> <a id="test">Test</a>}.gsub(/\n|\t/, '')
130
+ see <a href="#test">Test</a></span> <a id="test">Test</a>}.gsub(/\n|\t/, ''))
131
131
  end
132
132
 
133
133
  it "image" do
134
134
  interpret "image[@width[90%]@height[90%]@alt[-]ligature.jpg]"
135
- @p.document.output.gsub(/\t|\n/, '').should == %{
135
+ expect(@p.document.output.gsub(/\t|\n/, '')).to eq(%{
136
136
  <img src="images/ligature.jpg" width="90%" height="90%" alt="-" />
137
- }.gsub(/\n|\t/, '')
137
+ }.gsub(/\n|\t/, ''))
138
138
  end
139
139
 
140
140
  it "image should link files by absolute or relative path in Lite mode" do
@@ -144,18 +144,18 @@ describe "Macro:" do
144
144
  Glyph.lite_mode = true
145
145
  Dir.chdir Glyph::PROJECT
146
146
  interpret "image[@width[90%]@height[90%]images/ligature.jpg]"
147
- @p.document.output.gsub(/\t|\n/, '').should == result
147
+ expect(@p.document.output.gsub(/\t|\n/, '')).to eq(result)
148
148
  interpret "image[@width[90%]@height[90%]#{Glyph::PROJECT}/images/ligature.jpg]"
149
- @p.document.output.gsub(/\t|\n/, '').gsub(Glyph::PROJECT.to_s+'/', '').should == result
149
+ expect(@p.document.output.gsub(/\t|\n/, '').gsub(Glyph::PROJECT.to_s+'/', '')).to eq(result)
150
150
  end
151
151
 
152
152
  it "figure" do
153
153
  interpret "figure[@alt[ligature]ligature.jpg|Ligature]"
154
- @p.document.output.gsub(/\t|\n/, '').should == %{
154
+ expect(@p.document.output.gsub(/\t|\n/, '')).to eq(%{
155
155
  <div class=\"figure\" alt=\"ligature\">
156
156
  <img src=\"images/ligature.jpg\" />
157
157
  <div class=\"caption\">Ligature</div>
158
- </div>}.gsub(/\n|\t/, '')
158
+ </div>}.gsub(/\n|\t/, ''))
159
159
  end
160
160
 
161
161
  it "fig should link files by absolute or relative path in Lite mode" do
@@ -168,24 +168,24 @@ describe "Macro:" do
168
168
  Glyph.lite_mode = true
169
169
  Dir.chdir Glyph::PROJECT
170
170
  interpret "figure[images/ligature.jpg|Ligature]"
171
- @p.document.output.gsub(/\t|\n/, '').should == result
171
+ expect(@p.document.output.gsub(/\t|\n/, '')).to eq(result)
172
172
  interpret "figure[#{Glyph::PROJECT}/images/ligature.jpg|Ligature]"
173
- @p.document.output.gsub(/\t|\n/, '').gsub(Glyph::PROJECT.to_s+'/', '').should == result
173
+ expect(@p.document.output.gsub(/\t|\n/, '').gsub(Glyph::PROJECT.to_s+'/', '')).to eq(result)
174
174
  end
175
175
 
176
176
  it "draftcomment, todo" do
177
177
  text1 = "dc[comment!]"
178
178
  text2 = "![todo!]"
179
179
  interpret text1
180
- @p.document.output.should == ""
180
+ expect(@p.document.output).to eq("")
181
181
  interpret text2
182
- @p.document.output.should == ""
182
+ expect(@p.document.output).to eq("")
183
183
  Glyph['document.draft'] = true
184
184
  interpret text1
185
- @p.document.output.should == %{<span class="comment"><span class="comment-pre"><strong>Comment:</strong> </span>comment!</span>}
185
+ expect(@p.document.output).to eq(%{<span class="comment"><span class="comment-pre"><strong>Comment:</strong> </span>comment!</span>})
186
186
  interpret text2
187
- @p.document.output.should == %{<span class="todo"><span class="todo-pre"><strong>TODO:</strong> </span>todo!</span>}
188
- @p.document.todos.length.should == 1
187
+ expect(@p.document.output).to eq(%{<span class="todo"><span class="todo-pre"><strong>TODO:</strong> </span>todo!</span>})
188
+ expect(@p.document.todos.length).to eq(1)
189
189
  Glyph['document.draft'] = false
190
190
  end
191
191
 
@@ -210,7 +210,7 @@ describe "Macro:" do
210
210
  ]
211
211
  }
212
212
  end
213
- output_for(container.call aliased).should == output_for(container.call normal)
213
+ expect(output_for(container.call aliased)).to eq(output_for(container.call normal))
214
214
  end
215
215
 
216
216
  end
@@ -47,8 +47,8 @@ Testing:
47
47
  <h2 id="h_1" class="toc">Test</h2>
48
48
  #@html
49
49
  </div>}
50
- filter(text1).should == result
51
- filter(text2).gsub(/<\/h2>/, "</h2>").should == result
50
+ expect(filter(text1)).to eq(result)
51
+ expect(filter(text2).gsub(/<\/h2>/, "</h2>")).to eq(result)
52
52
  end
53
53
 
54
54
  ######################################
@@ -70,10 +70,10 @@ Testing:
70
70
  #@textile
71
71
  ]
72
72
  ]}
73
- filter(box1).should == result
74
- filter(box2).should == result
75
- filter(box3).should == result
76
- filter(box4).should == result
73
+ expect(filter(box1)).to eq(result)
74
+ expect(filter(box2)).to eq(result)
75
+ expect(filter(box3)).to eq(result)
76
+ expect(filter(box4)).to eq(result)
77
77
  end
78
78
 
79
79
  ######################################
@@ -93,10 +93,10 @@ Testing:
93
93
  #@textile
94
94
  ]
95
95
  ]}
96
- filter(note1).should == result
97
- filter(note2).should == result
98
- filter(note3).should == result
99
- filter(note4).should == result
96
+ expect(filter(note1)).to eq(result)
97
+ expect(filter(note2)).to eq(result)
98
+ expect(filter(note3)).to eq(result)
99
+ expect(filter(note4)).to eq(result)
100
100
  end
101
101
 
102
102
  ######################################
@@ -149,11 +149,11 @@ Testing:
149
149
  #{code}
150
150
  ]
151
151
  ]]}
152
- filter(text1).should == result
153
- filter(text2).should == result
154
- filter(text3).should == result
155
- filter(text4).should == result
156
- filter(text5).should == result
152
+ expect(filter(text1)).to eq(result)
153
+ expect(filter(text2)).to eq(result)
154
+ expect(filter(text3)).to eq(result)
155
+ expect(filter(text4)).to eq(result)
156
+ expect(filter(text5)).to eq(result)
157
157
  end
158
158
 
159
159
  end
@@ -19,14 +19,14 @@ describe "Macro:" do
19
19
  it "section (topic)" do
20
20
  interpret("section[section[@src[a/web1.glyph]@title[Test]]]")
21
21
  topic = @p.document.topics[0]
22
- topic[:contents].match(/<article>/).blank?.should == false
22
+ expect(topic[:contents].match(/<article>/).blank?).to eq(false)
23
23
  end
24
24
 
25
25
  it "navigation" do
26
26
  Glyph.run! 'generate:web5'
27
27
  web1 = Glyph.file_load(Glyph::PROJECT/'output/web5/a/web1.html').gsub(/\n|\t| /, '')
28
28
  web2 = Glyph.file_load(Glyph::PROJECT/'output/web5/a/b/web2.html').gsub(/\n|\t| /, '')
29
- web1.should match(%{<nav>|<a href="/index.html">Contents</a>|<a href="/a/b/web2.html">&rarr; Topic #2</a></nav>})
30
- web2.should match(%{<nav><a href="/a/web1.html">Topic #1</a>|<a href="/index.html">Contents</a>|</nav>})
29
+ expect(web1).to match(%{<nav>|<a href="/index.html">Contents</a>|<a href="/a/b/web2.html">&rarr; Topic #2</a></nav>})
30
+ expect(web2).to match(%{<nav><a href="/a/web1.html">Topic #1</a>|<a href="/index.html">Contents</a>|</nav>})
31
31
  end
32
32
  end
@@ -16,47 +16,47 @@ describe "Macro:" do
16
16
  end
17
17
 
18
18
  it "section (topic)" do
19
- lambda { output_for("section[@src[test]]") }.should raise_error(Glyph::MacroError, "Macro 'section' requires a 'title' attribute")
19
+ expect { output_for("section[@src[test]]") }.to raise_error(Glyph::MacroError, "Macro 'section' requires a 'title' attribute")
20
20
  interpret("section[@src[a/web1.glyph]@title[Test]]")
21
21
  topic = @p.document.topics[0]
22
- topic.blank?.should == false
23
- topic[:id].should == :t_0
24
- topic[:title].should == "Test"
25
- topic[:src].should == "a/web1.glyph"
26
- topic[:contents].match(/id="w1_3"/).blank?.should == false
22
+ expect(topic.blank?).to eq(false)
23
+ expect(topic[:id]).to eq(:t_0)
24
+ expect(topic[:title]).to eq("Test")
25
+ expect(topic[:src]).to eq("a/web1.glyph")
26
+ expect(topic[:contents].match(/id="w1_3"/).blank?).to eq(false)
27
27
  Glyph['document.output'] = 'html'
28
28
  Glyph.run! 'load:macros'
29
- output_for("contents[section[@src[a/web1.glyph]@title[Test]]]").match(/id="w1_3"/).blank?.should == false
29
+ expect(output_for("contents[section[@src[a/web1.glyph]@title[Test]]]").match(/id="w1_3"/).blank?).to eq(false)
30
30
  end
31
31
 
32
32
  it "navigation" do
33
33
  Glyph.run! 'generate:web'
34
34
  web1 = compact_html Glyph.file_load(Glyph::PROJECT/'output/web/a/web1.html')
35
35
  web2 = compact_html Glyph.file_load(Glyph::PROJECT/'output/web/a/b/web2.html')
36
- web1.match(%{<div class="navigation"> | <a href="/index.html">Contents</a> | <a href="/a/b/web2.html">Topic #2</a></div>}).blank?.should == false
37
- web2.match(%{<div class="navigation"><a href="/a/web1.html">Topic #1</a> | <a href="/index.html">Contents</a> | </div>}).blank?.should == false
36
+ expect(web1.match(%{<div class="navigation"> | <a href="/index.html">Contents</a> | <a href="/a/b/web2.html">Topic #2</a></div>}).blank?).to eq(false)
37
+ expect(web2.match(%{<div class="navigation"><a href="/a/web1.html">Topic #1</a> | <a href="/index.html">Contents</a> | </div>}).blank?).to eq(false)
38
38
  end
39
39
 
40
40
  it "toc should only list topics" do
41
41
  Glyph.run! 'generate:web'
42
42
  index = Glyph.file_load(Glyph::PROJECT/'output/web/index.html')
43
- index.match(%{<li class="section"><a href="#h_1">Web Document</a></li>}).blank?.should == true
44
- index.match(%{href="/a/web1.html#h_3"}).blank?.should == false
45
- index.match(%{href="/a/b/web2.html#h_7"}).blank?.should == false
43
+ expect(index.match(%{<li class="section"><a href="#h_1">Web Document</a></li>}).blank?).to eq(true)
44
+ expect(index.match(%{href="/a/web1.html#h_3"}).blank?).to eq(false)
45
+ expect(index.match(%{href="/a/b/web2.html#h_7"}).blank?).to eq(false)
46
46
  web1 = Glyph.file_load(Glyph::PROJECT/'output/web/a/web1.html')
47
- web1.should match(/<h2 id="t_0" class="toc">Topic #1<\/h2>/) # Headers are reset in each topic
47
+ expect(web1).to match(/<h2 id="t_0" class="toc">Topic #1<\/h2>/) # Headers are reset in each topic
48
48
  delete_project
49
49
  reset_quiet
50
50
  create_web_project
51
51
  Glyph['document.output'] = 'html'
52
52
  Glyph.run! 'generate:html'
53
53
  index = compact_html Glyph.file_load(Glyph::PROJECT/'output/html/test_project.html')
54
- index.should match(%{<li class="section"><a href="#h_3">Topic #1</a></li><li><ol><li class="section"><a href="#h_4">Test #1a</a></li>})
55
- index.match(%{href="a/web1.html#h_3"}).blank?.should == true
56
- index.match(%{href="a/b/web2.html#h_7"}).blank?.should == true
57
- index.match(%{<li class="section"><a href="#h_1">Web Document</a></li>}).blank?.should == false
58
- index.match(%{href="#h_2"}).blank?.should == false
59
- index.match(%{href="#h_8"}).blank?.should == false # Header numbers are different...
54
+ expect(index).to match(%{<li class="section"><a href="#h_3">Topic #1</a></li><li><ol><li class="section"><a href="#h_4">Test #1a</a></li>})
55
+ expect(index.match(%{href="a/web1.html#h_3"}).blank?).to eq(true)
56
+ expect(index.match(%{href="a/b/web2.html#h_7"}).blank?).to eq(true)
57
+ expect(index.match(%{<li class="section"><a href="#h_1">Web Document</a></li>}).blank?).to eq(false)
58
+ expect(index.match(%{href="#h_2"}).blank?).to eq(false)
59
+ expect(index.match(%{href="#h_8"}).blank?).to eq(false) # Header numbers are different...
60
60
  end
61
61
 
62
62
  end
@@ -15,40 +15,40 @@ describe "Glyph Language" do
15
15
 
16
16
  it "should support XML fallback by default" do
17
17
  Glyph.run 'load:all'
18
- output_for(%{
18
+ expect(output_for(%{
19
19
  i[test]
20
20
  code[
21
21
  test
22
22
  ]
23
- }).gsub(/\s+/, '').should == %{
23
+ }).gsub(/\s+/, '')).to eq(%{
24
24
  <i>test</i>
25
25
  <code>
26
26
  test
27
- </code>}.gsub(/\s+/, '')
27
+ </code>}.gsub(/\s+/, ''))
28
28
  end
29
29
 
30
30
  it "should support XML macros" do
31
31
  language('xml')
32
- output_for("pre[code[test]]").should == "<pre>\n<code>test</code>\n</pre>"
32
+ expect(output_for("pre[code[test]]")).to eq("<pre>\n<code>test</code>\n</pre>")
33
33
  end
34
34
 
35
35
  it "should support XML attributes" do
36
36
  language('xml')
37
- output_for("span[@class[test] @style[color:red;] test...]").should == %{
37
+ expect(output_for("span[@class[test] @style[color:red;] test...]")).to eq(%{
38
38
  <span class="test" style="color:red;"> test...</span>
39
- }.strip
39
+ }.strip)
40
40
  end
41
41
 
42
42
  it "should detect invalid characters for XML elements and attributes" do
43
43
  language('xml')
44
- lambda { interpret("!&test[test]").document }.should raise_error
45
- output_for("span[@class[test]@.[test]test]").should == %{<span class="test">test</span>}
44
+ expect { interpret("!&test[test]").document }.to raise_error
45
+ expect(output_for("span[@class[test]@.[test]test]")).to eq(%{<span class="test">test</span>})
46
46
  end
47
47
 
48
48
  it "should notify the user that a macro is not found for invalid elements if xml_fallback is enabled" do
49
49
  # Assuming options.xml_fallback = true
50
50
  language('glyph')
51
- lambda { interpret("*a[test]").document }.should raise_error(Glyph::MacroError, "Invalid XML element '*a'")
51
+ expect { interpret("*a[test]").document }.to raise_error(Glyph::MacroError, "Invalid XML element '*a'")
52
52
  end
53
53
 
54
54
  it "should not render blacklisted tags" do
@@ -71,16 +71,16 @@ describe "Glyph Language" do
71
71
  param[test]
72
72
  title[tesy]
73
73
  }
74
- output_for(text).gsub(/\s/, '').should == "<test>test</test>"
74
+ expect(output_for(text).gsub(/\s/, '')).to eq("<test>test</test>")
75
75
  end
76
76
 
77
77
  it "should work with macro composition" do
78
78
  language('glyph')
79
- output_for("xml/a[@test[...]xyz]").should == "<a test=\"...\">xyz</a>"
80
- output_for("xml/a[@test[...]xml/b[test]]").should == "<a test=\"...\">\n<b>test</b>\n</a>"
81
- output_for("xml/a[xml/b[test]xml/c[test]]").should == "<a>\n<b>test</b><c>test</c>\n</a>"
82
- output_for("xml/a[xml/b[test]xml/c[@test[test_attr]test]]").should == "<a>\n<b>test</b><c test=\"test_attr\">test</c>\n</a>"
83
- output_for("xml/a[xml/b[@test[true]]]").should == "<a>\n<b test=\"true\" />\n</a>"
79
+ expect(output_for("xml/a[@test[...]xyz]")).to eq("<a test=\"...\">xyz</a>")
80
+ expect(output_for("xml/a[@test[...]xml/b[test]]")).to eq("<a test=\"...\">\n<b>test</b>\n</a>")
81
+ expect(output_for("xml/a[xml/b[test]xml/c[test]]")).to eq("<a>\n<b>test</b><c>test</c>\n</a>")
82
+ expect(output_for("xml/a[xml/b[test]xml/c[@test[test_attr]test]]")).to eq("<a>\n<b>test</b><c test=\"test_attr\">test</c>\n</a>")
83
+ expect(output_for("xml/a[xml/b[@test[true]]]")).to eq("<a>\n<b test=\"true\" />\n</a>")
84
84
  end
85
85
 
86
86
  end
@@ -13,64 +13,64 @@ describe "generate" do
13
13
  end
14
14
 
15
15
  it ":document should generate Glyph.document" do
16
- lambda { Glyph.run! 'generate:document'}.should_not raise_error
17
- Glyph.document.structure.children.length.should > 0
16
+ expect { Glyph.run! 'generate:document'}.not_to raise_error
17
+ expect(Glyph.document.structure.children.length).to be > 0
18
18
  end
19
19
 
20
20
  it ":html should generate a standalone html document" do
21
- lambda { Glyph.run! 'generate:html'}.should_not raise_error
22
- (Glyph::PROJECT/'output/html/test_project.html').exist?.should == true
21
+ expect { Glyph.run! 'generate:html'}.not_to raise_error
22
+ expect((Glyph::PROJECT/'output/html/test_project.html').exist?).to eq(true)
23
23
  end
24
24
 
25
25
  it ":html5 should generate a standalone html document" do
26
26
  Glyph['document.output'] = 'html5'
27
- lambda { Glyph.run! 'generate:html5'}.should_not raise_error
28
- (Glyph::PROJECT/'output/html5/test_project.html').exist?.should == true
27
+ expect { Glyph.run! 'generate:html5'}.not_to raise_error
28
+ expect((Glyph::PROJECT/'output/html5/test_project.html').exist?).to eq(true)
29
29
  end
30
30
 
31
31
  it ":pdf_through_html should generate a pdf document through html" do
32
32
  Glyph['document.output'] = 'pdf'
33
- lambda { stdout_for { Glyph.run! 'generate:pdf_through_html'}}.should_not raise_error
34
- (Glyph::PROJECT/'output/tmp/test_project.html').exist?.should == true
35
- (Glyph::PROJECT/'output/pdf/test_project.pdf').exist?.should == true
33
+ expect { stdout_for { Glyph.run! 'generate:pdf_through_html'}}.not_to raise_error
34
+ expect((Glyph::PROJECT/'output/tmp/test_project.html').exist?).to eq(true)
35
+ expect((Glyph::PROJECT/'output/pdf/test_project.pdf').exist?).to eq(true)
36
36
  end
37
37
 
38
38
  it ":pdf_through_html5 should generate a pdf document through html5" do
39
39
  Glyph['document.output'] = 'pdf'
40
- lambda { stdout_for { Glyph.run! 'generate:pdf_through_html5'}}.should_not raise_error
41
- (Glyph::PROJECT/'output/tmp/test_project.html').exist?.should == true
42
- (Glyph::PROJECT/'output/pdf/test_project.pdf').exist?.should == true
40
+ expect { stdout_for { Glyph.run! 'generate:pdf_through_html5'}}.not_to raise_error
41
+ expect((Glyph::PROJECT/'output/tmp/test_project.html').exist?).to eq(true)
42
+ expect((Glyph::PROJECT/'output/pdf/test_project.pdf').exist?).to eq(true)
43
43
  end
44
44
 
45
45
  it ":mobi should generate a mobi document" do
46
46
  Glyph['document.output'] = 'mobi'
47
- lambda { stdout_for { Glyph.run! 'generate:mobi'}}.should_not raise_error
48
- (Glyph::PROJECT/'output/tmp/test_project.html').exist?.should == true
49
- (Glyph::PROJECT/'output/mobi/test_project.mobi').exist?.should == true
47
+ expect { stdout_for { Glyph.run! 'generate:mobi'}}.not_to raise_error
48
+ expect((Glyph::PROJECT/'output/tmp/test_project.html').exist?).to eq(true)
49
+ expect((Glyph::PROJECT/'output/mobi/test_project.mobi').exist?).to eq(true)
50
50
  end
51
51
 
52
52
  it ":epub should generate an epub document" do
53
53
  Glyph['document.output'] = 'epub'
54
54
  #lambda {
55
55
  stdout_for { Glyph.run! 'generate:epub'}#}.should_not raise_error
56
- (Glyph::PROJECT/'output/tmp/test_project.html').exist?.should == true
57
- (Glyph::PROJECT/'output/epub/test_project.epub').exist?.should == true
56
+ expect((Glyph::PROJECT/'output/tmp/test_project.html').exist?).to eq(true)
57
+ expect((Glyph::PROJECT/'output/epub/test_project.epub').exist?).to eq(true)
58
58
  end
59
59
 
60
60
  it "should copy images" do
61
61
  dir = (Glyph::PROJECT/'images/test').mkpath
62
62
  file_copy Glyph::HOME/'spec/files/ligature.jpg', Glyph::PROJECT/'images/test'
63
- lambda { Glyph.run! 'generate:html' }.should_not raise_error
64
- (Glyph::PROJECT/'output/html/images/test/ligature.jpg').exist?.should == true
63
+ expect { Glyph.run! 'generate:html' }.not_to raise_error
64
+ expect((Glyph::PROJECT/'output/html/images/test/ligature.jpg').exist?).to eq(true)
65
65
  end
66
66
 
67
67
  it "should copy styles if necessary" do
68
68
  Glyph['document.styles'] = 'import'
69
69
  require 'sass'
70
70
  file_write Glyph::PROJECT/'document.glyph', "head[style[default.css]\nstyle[test.sass]]"
71
- lambda { Glyph.run! 'generate:html' }.should_not raise_error
72
- (Glyph::PROJECT/'output/html/styles/default.css').exist?.should == true
73
- (Glyph::PROJECT/'output/html/styles/test.css').exist?.should == true
71
+ expect { Glyph.run! 'generate:html' }.not_to raise_error
72
+ expect((Glyph::PROJECT/'output/html/styles/default.css').exist?).to eq(true)
73
+ expect((Glyph::PROJECT/'output/html/styles/test.css').exist?).to eq(true)
74
74
  end
75
75
 
76
76
  it ":web should generate multiple html documents" do
@@ -85,10 +85,10 @@ describe "generate" do
85
85
  # check that the user didn't create a styles or images directory under /text
86
86
  reset_web.call
87
87
  (Glyph::PROJECT/'text/images').mkdir
88
- lambda { Glyph.run! 'generate:web'}.should raise_error(RuntimeError, "You cannot have an 'images' directory under your 'text' directory.")
88
+ expect { Glyph.run! 'generate:web'}.to raise_error(RuntimeError, "You cannot have an 'images' directory under your 'text' directory.")
89
89
  reset_web.call
90
90
  (Glyph::PROJECT/'text/styles').mkdir
91
- lambda { Glyph.run! 'generate:web'}.should raise_error(RuntimeError, "You cannot have a 'styles' directory under your 'text' directory.")
91
+ expect { Glyph.run! 'generate:web'}.to raise_error(RuntimeError, "You cannot have a 'styles' directory under your 'text' directory.")
92
92
  reset_web.call
93
93
  # check that the task can be run without errors
94
94
  reset_web.call
@@ -97,23 +97,23 @@ describe "generate" do
97
97
  Glyph.run! 'generate:web'
98
98
  #}.should_not raise_error
99
99
  # check that images are copied
100
- (Glyph::PROJECT/'output/web/images/ligature.jpg').exist?.should == true
100
+ expect((Glyph::PROJECT/'output/web/images/ligature.jpg').exist?).to eq(true)
101
101
  # check that stylesheets are copied
102
- (Glyph::PROJECT/'output/web/styles/default.css').exist?.should == true
103
- (Glyph::PROJECT/'output/web/styles/test.css').exist?.should == true
102
+ expect((Glyph::PROJECT/'output/web/styles/default.css').exist?).to eq(true)
103
+ expect((Glyph::PROJECT/'output/web/styles/test.css').exist?).to eq(true)
104
104
  # check that index.html is created
105
105
  index = (Glyph::PROJECT/'output/web/index.html')
106
- index.exist?.should == true
107
- compact_html(file_load(index)).should match(/<li class="section"><a href="\/test\/a\/b\/web2.html#h_7">Topic #2<\/a>/)
106
+ expect(index.exist?).to eq(true)
107
+ expect(compact_html(file_load(index))).to match(/<li class="section"><a href="\/test\/a\/b\/web2.html#h_7">Topic #2<\/a>/)
108
108
  # check that topics are copied in the proper directories
109
109
  web1 = (Glyph::PROJECT/'output/web/a/web1.html')
110
- web1.exist?.should == true
110
+ expect(web1.exist?).to eq(true)
111
111
  web2 = (Glyph::PROJECT/'output/web/a/b/web2.html')
112
- web2.exist?.should == true
112
+ expect(web2.exist?).to eq(true)
113
113
  # Check that placeholders are replaced correctly and that links are valid
114
- file_load(web2).match(/<a href="\/test\/a\/web1\.html#w1_3">Test #1b<\/a>/).blank?.should == false
115
- file_load(web1).match(/<a href="\/test\/a\/b\/web2\.html#w2_1">Test #2a<\/a>/).blank?.should == false
116
- file_load(web1).match(/<a href="#w1_3">Test #1b<\/a>/).blank?.should == false
114
+ expect(file_load(web2).match(/<a href="\/test\/a\/web1\.html#w1_3">Test #1b<\/a>/).blank?).to eq(false)
115
+ expect(file_load(web1).match(/<a href="\/test\/a\/b\/web2\.html#w2_1">Test #2a<\/a>/).blank?).to eq(false)
116
+ expect(file_load(web1).match(/<a href="#w1_3">Test #1b<\/a>/).blank?).to eq(false)
117
117
  end
118
118
 
119
119