bluecloth 2.0.7-x86-mswin32 → 2.0.11pre158-x86-mswin32
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.
- data.tar.gz.sig +0 -0
- data/.gemtest +0 -0
- data/History.md +4 -0
- data/LICENSE +1 -1
- data/Manifest.txt +103 -0
- data/README.md +103 -0
- data/Rakefile +95 -301
- data/ext/VERSION +1 -1
- data/ext/bluecloth.c +69 -23
- data/ext/bluecloth.h +13 -2
- data/ext/config.h +13 -2
- data/ext/css.c +14 -5
- data/ext/cstring.h +4 -2
- data/ext/docheader.c +13 -7
- data/ext/emmatch.c +188 -0
- data/ext/extconf.rb +7 -9
- data/ext/generate.c +333 -293
- data/ext/html5.c +24 -0
- data/ext/markdown.c +326 -185
- data/ext/markdown.h +52 -29
- data/ext/mkdio.c +82 -41
- data/ext/mkdio.h +44 -23
- data/ext/resource.c +4 -2
- data/ext/setup.c +47 -0
- data/ext/tags.c +123 -0
- data/ext/tags.h +19 -0
- data/lib/1.8/bluecloth_ext.so +0 -0
- data/lib/1.9/bluecloth_ext.so +0 -0
- data/lib/bluecloth.rb +77 -42
- data/spec/bluecloth/101_changes_spec.rb +18 -21
- data/spec/bluecloth/TEMPLATE +36 -0
- data/spec/bluecloth/autolinks_spec.rb +4 -7
- data/spec/bluecloth/blockquotes_spec.rb +20 -23
- data/spec/bluecloth/code_spans_spec.rb +2 -5
- data/spec/bluecloth/emphasis_spec.rb +2 -5
- data/spec/bluecloth/entities_spec.rb +2 -5
- data/spec/bluecloth/hrules_spec.rb +2 -5
- data/spec/bluecloth/images_spec.rb +2 -5
- data/spec/bluecloth/inline_html_spec.rb +26 -66
- data/spec/bluecloth/links_spec.rb +1 -5
- data/spec/bluecloth/lists_spec.rb +2 -5
- data/spec/bluecloth/paragraphs_spec.rb +2 -5
- data/spec/bluecloth/titles_spec.rb +2 -5
- data/spec/bluecloth_spec.rb +36 -22
- data/spec/bugfix_spec.rb +90 -10
- data/spec/contributions_spec.rb +2 -3
- data/spec/discount_spec.rb +50 -10
- data/spec/lib/helpers.rb +18 -117
- data/spec/lib/matchers.rb +7 -18
- data/spec/markdowntest_spec.rb +3 -39
- metadata +257 -143
- metadata.gz.sig +0 -0
- data/ChangeLog +0 -387
- data/README +0 -81
- data/Rakefile.local +0 -41
- data/rake/191_compat.rb +0 -26
- data/rake/dependencies.rb +0 -76
- data/rake/helpers.rb +0 -435
- data/rake/hg.rb +0 -273
- data/rake/manual.rb +0 -782
- data/rake/packaging.rb +0 -123
- data/rake/publishing.rb +0 -274
- data/rake/rdoc.rb +0 -30
- data/rake/style.rb +0 -62
- data/rake/svn.rb +0 -668
- data/rake/testing.rb +0 -187
- data/rake/verifytask.rb +0 -64
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
BEGIN {
|
5
|
+
require 'pathname'
|
6
|
+
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
7
|
+
|
8
|
+
libdir = basedir + 'lib'
|
9
|
+
extdir = basedir + 'ext'
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
12
|
+
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
13
|
+
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
14
|
+
}
|
15
|
+
|
16
|
+
require 'rspec'
|
17
|
+
require 'bluecloth'
|
18
|
+
|
19
|
+
require 'spec/lib/helpers'
|
20
|
+
|
21
|
+
|
22
|
+
#####################################################################
|
23
|
+
### C O N T E X T S
|
24
|
+
#####################################################################
|
25
|
+
|
26
|
+
describe BlueCloth, "" do
|
27
|
+
|
28
|
+
it "does something cool" do
|
29
|
+
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
30
|
+
---
|
31
|
+
---
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
@@ -4,20 +4,19 @@
|
|
4
4
|
BEGIN {
|
5
5
|
require 'pathname'
|
6
6
|
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
7
|
-
|
7
|
+
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
|
-
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "auto-links" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
it "supports HTTP auto-links" do
|
32
29
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
@@ -4,20 +4,19 @@
|
|
4
4
|
BEGIN {
|
5
5
|
require 'pathname'
|
6
6
|
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
7
|
-
|
7
|
+
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
|
-
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "blockquotes" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
### [Blockquotes]
|
32
29
|
|
@@ -71,14 +68,14 @@ describe BlueCloth, "blockquotes" do
|
|
71
68
|
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
|
72
69
|
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
|
73
70
|
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
|
74
|
-
|
71
|
+
|
75
72
|
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
|
76
73
|
id sem consectetuer libero luctus adipiscing.
|
77
74
|
---
|
78
75
|
<blockquote><p>This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
|
79
76
|
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
|
80
77
|
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p>
|
81
|
-
|
78
|
+
|
82
79
|
<p>Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
|
83
80
|
id sem consectetuer libero luctus adipiscing.</p></blockquote>
|
84
81
|
---
|
@@ -89,30 +86,30 @@ describe BlueCloth, "blockquotes" do
|
|
89
86
|
it "supports other Markdown elements in blockquote sections" do
|
90
87
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
91
88
|
> ## This is a header.
|
92
|
-
>
|
89
|
+
>
|
93
90
|
> 1. This is the first list item.
|
94
91
|
> 2. This is the second list item.
|
95
|
-
>
|
92
|
+
>
|
96
93
|
> Here's some example code:
|
97
|
-
>
|
94
|
+
>
|
98
95
|
> return shell_exec("echo $input | $markdown_script");
|
99
96
|
---
|
100
97
|
<blockquote><h2>This is a header.</h2>
|
101
|
-
|
98
|
+
|
102
99
|
<ol>
|
103
|
-
<li>This is the first list item.</li>
|
104
|
-
<li>This is the second list item.</li>
|
100
|
+
<li> This is the first list item.</li>
|
101
|
+
<li> This is the second list item.</li>
|
105
102
|
</ol>
|
106
|
-
|
103
|
+
|
107
104
|
<p>Here's some example code:</p>
|
108
|
-
|
105
|
+
|
109
106
|
<pre><code>return shell_exec("echo $input | $markdown_script");
|
110
107
|
</code></pre></blockquote>
|
111
108
|
---
|
112
109
|
end
|
113
110
|
|
114
111
|
# Blockquotes with a <pre> section
|
115
|
-
it "supports block-level HTML inside of blockquotes" do
|
112
|
+
it "supports block-level HTML inside of blockquotes", :pedantic => true do
|
116
113
|
pending "a fix in Discount" do
|
117
114
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
118
115
|
> The best approximation of the problem is the following code:
|
@@ -120,19 +117,19 @@ describe BlueCloth, "blockquotes" do
|
|
120
117
|
> <pre>
|
121
118
|
> foo + bar; foo.factorize; foo.display
|
122
119
|
> </pre>
|
123
|
-
>
|
120
|
+
>
|
124
121
|
> This should result in an error on any little-endian platform.
|
125
|
-
>
|
122
|
+
>
|
126
123
|
> <div>- Garrick Mettronne</div>
|
127
124
|
---
|
128
125
|
<blockquote><p>The best approximation of the problem is the following code:</p>
|
129
|
-
|
126
|
+
|
130
127
|
<pre>
|
131
128
|
foo + bar; foo.factorize; foo.display
|
132
129
|
</pre>
|
133
|
-
|
130
|
+
|
134
131
|
<p>This should result in an error on any little-endian platform.</p>
|
135
|
-
|
132
|
+
|
136
133
|
<div>- Garrick Mettronne</div>
|
137
134
|
</blockquote>
|
138
135
|
---
|
@@ -8,16 +8,15 @@ BEGIN {
|
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
10
|
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "that contains code blocks or spans" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
it "wraps CODE tags around backticked spans" do
|
32
29
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
@@ -8,16 +8,15 @@ BEGIN {
|
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
10
|
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "emphasis" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
it "treats single asterisks as indicators of emphasis" do
|
32
29
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
@@ -8,16 +8,15 @@ BEGIN {
|
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
10
|
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "document with entities" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
it "escapes special characters" do
|
32
29
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
@@ -8,16 +8,15 @@ BEGIN {
|
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
10
|
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "horizontal rules" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
# Hrule -- three asterisks
|
32
29
|
it "produces a horizontal rule tag from three asterisks on a line by themselves" do
|
@@ -8,16 +8,15 @@ BEGIN {
|
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
10
|
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "images" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
### [Images]
|
32
29
|
|
@@ -8,16 +8,15 @@ BEGIN {
|
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
10
|
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
|
|
25
24
|
#####################################################################
|
26
25
|
|
27
26
|
describe BlueCloth, "document with inline HTML" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
30
27
|
|
31
28
|
it "preserves TABLE block" do
|
32
29
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
@@ -123,67 +120,6 @@ describe BlueCloth, "document with inline HTML" do
|
|
123
120
|
end
|
124
121
|
|
125
122
|
|
126
|
-
it "preserves MathML block" do
|
127
|
-
pending "discount doesn't support this, it explicitly matches block-level HTML elements only"
|
128
|
-
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
129
|
-
Examples
|
130
|
-
--------
|
131
|
-
|
132
|
-
Now that we have met some of the key players, it is time to see what we can
|
133
|
-
do. Here are some examples and comments which illustrate the use of the basic
|
134
|
-
layout and token elements. Consider the expression x2 + 4x + 4 = 0. A basic
|
135
|
-
MathML presentation encoding for this would be:
|
136
|
-
|
137
|
-
<math>
|
138
|
-
<mrow>
|
139
|
-
<msup>
|
140
|
-
<mi>x</mi>
|
141
|
-
<mn>2</mn>
|
142
|
-
</msup>
|
143
|
-
<mo>+</mo>
|
144
|
-
<mn>4</mn>
|
145
|
-
<mi>x</mi>
|
146
|
-
<mo>+</mo>
|
147
|
-
<mn>4</mn>
|
148
|
-
<mo>=</mo>
|
149
|
-
<mn>0</mn>
|
150
|
-
</mrow>
|
151
|
-
</math>
|
152
|
-
|
153
|
-
This encoding will display as you would expect. However, if we were interested
|
154
|
-
in reusing this expression in unknown situations, we would likely want to spend
|
155
|
-
a little more effort analyzing and encoding the logical expression structure.
|
156
|
-
---
|
157
|
-
<h2>Examples</h2>
|
158
|
-
|
159
|
-
<p>Now that we have met some of the key players, it is time to see what we can
|
160
|
-
do. Here are some examples and comments which illustrate the use of the basic
|
161
|
-
layout and token elements. Consider the expression x2 + 4x + 4 = 0. A basic
|
162
|
-
MathML presentation encoding for this would be:</p>
|
163
|
-
|
164
|
-
<math>
|
165
|
-
<mrow>
|
166
|
-
<msup>
|
167
|
-
<mi>x</mi>
|
168
|
-
<mn>2</mn>
|
169
|
-
</msup>
|
170
|
-
<mo>+</mo>
|
171
|
-
<mn>4</mn>
|
172
|
-
<mi>x</mi>
|
173
|
-
<mo>+</mo>
|
174
|
-
<mn>4</mn>
|
175
|
-
<mo>=</mo>
|
176
|
-
<mn>0</mn>
|
177
|
-
</mrow>
|
178
|
-
</math>
|
179
|
-
|
180
|
-
<p>This encoding will display as you would expect. However, if we were interested
|
181
|
-
in reusing this expression in unknown situations, we would likely want to spend
|
182
|
-
a little more effort analyzing and encoding the logical expression structure.</p>
|
183
|
-
---
|
184
|
-
end
|
185
|
-
|
186
|
-
|
187
123
|
it "preserves span-level HTML" do
|
188
124
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
189
125
|
This is some stuff with a <span class="foo">spanned bit of text</span> in
|
@@ -232,6 +168,30 @@ describe BlueCloth, "document with inline HTML" do
|
|
232
168
|
---
|
233
169
|
end
|
234
170
|
|
171
|
+
it "preserves HTML5 tags" do
|
172
|
+
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
173
|
+
<aside>
|
174
|
+
<p>This is a sidebar that explains some stuff.</p>
|
175
|
+
</aside>
|
176
|
+
|
177
|
+
The main content.
|
178
|
+
|
179
|
+
<footer>
|
180
|
+
<p>Copyright © 2010 by J. Random Hacker.</p>
|
181
|
+
</footer>
|
182
|
+
---
|
183
|
+
<aside>
|
184
|
+
<p>This is a sidebar that explains some stuff.</p>
|
185
|
+
</aside>
|
186
|
+
|
187
|
+
<p>The main content.</p>
|
188
|
+
|
189
|
+
<footer>
|
190
|
+
<p>Copyright © 2010 by J. Random Hacker.</p>
|
191
|
+
</footer>
|
192
|
+
---
|
193
|
+
end
|
194
|
+
|
235
195
|
|
236
196
|
end
|
237
197
|
|