bluefeather 0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile.rb +168 -0
- data/bin/bluefeather +4 -0
- data/doc/author-and-license.bfdoc +16 -0
- data/doc/base.css +135 -0
- data/doc/basic-usage.bfdoc +265 -0
- data/doc/black.css +130 -0
- data/doc/class-reference.bfdoc +105 -0
- data/doc/difference.bfdoc +63 -0
- data/doc/en/author-and-license.bfdoc +20 -0
- data/doc/en/base.css +136 -0
- data/doc/en/basic-usage.bfdoc +266 -0
- data/doc/en/black.css +130 -0
- data/doc/en/class-reference.bfdoc +6 -0
- data/doc/en/difference.bfdoc +72 -0
- data/doc/en/format-extension.bfdoc +324 -0
- data/doc/en/index.bfdoc +41 -0
- data/doc/en/metadata-reference.bfdoc +7 -0
- data/doc/format-extension.bfdoc +325 -0
- data/doc/index.bfdoc +36 -0
- data/doc/metadata-reference.bfdoc +86 -0
- data/lib/bluefeather.rb +1872 -0
- data/lib/bluefeather/cui.rb +207 -0
- data/license/gpl-2.0.txt +339 -0
- data/license/gpl.ja.txt +416 -0
- data/original-tests/00_Class.tests.rb +42 -0
- data/original-tests/05_Markdown.tests.rb +1530 -0
- data/original-tests/10_Bug.tests.rb +44 -0
- data/original-tests/15_Contrib.tests.rb +130 -0
- data/original-tests/bftestcase.rb +278 -0
- data/original-tests/data/antsugar.txt +34 -0
- data/original-tests/data/ml-announce.txt +17 -0
- data/original-tests/data/re-overflow.txt +67 -0
- data/original-tests/data/re-overflow2.txt +281 -0
- data/readme_en.txt +37 -0
- data/readme_ja.txt +33 -0
- data/spec/auto-link.rb +100 -0
- data/spec/code-block.rb +91 -0
- data/spec/dl.rb +182 -0
- data/spec/escape-char.rb +18 -0
- data/spec/footnote.rb +34 -0
- data/spec/header-id.rb +38 -0
- data/spec/lib/common.rb +103 -0
- data/spec/table.rb +70 -0
- data/spec/toc.rb +64 -0
- data/spec/warning.rb +61 -0
- metadata +99 -0
@@ -0,0 +1,266 @@
|
|
1
|
+
Title: Installing and Basic Usage - BlueFeather Manual
|
2
|
+
CSS: black.css
|
3
|
+
|
4
|
+
<div class="back"><a href="index.html">BlueFeather Manual</a></div>
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
Installing and Basic Usage
|
9
|
+
====
|
10
|
+
|
11
|
+
This document describes only usage of the software. If you want to know about
|
12
|
+
syntax, see [Markdown Syntax Extension](format-extension.html).
|
13
|
+
|
14
|
+
{toc}
|
15
|
+
|
16
|
+
|
17
|
+
Install
|
18
|
+
----
|
19
|
+
Run setup.rb. Then required files will be copied and installing will be complete.
|
20
|
+
|
21
|
+
% ruby setup.rb
|
22
|
+
|
23
|
+
Or use RubyGems.
|
24
|
+
|
25
|
+
% gem install bluefeather
|
26
|
+
|
27
|
+
|
28
|
+
Use by Command-line
|
29
|
+
----
|
30
|
+
|
31
|
+
### Basic
|
32
|
+
|
33
|
+
If installing is correctly completed, you can use `bluefeather` command. This
|
34
|
+
command convert Markdown text to html.
|
35
|
+
|
36
|
+
bluefeather [options] file1 [file2] [file3] ...
|
37
|
+
|
38
|
+
~
|
39
|
+
|
40
|
+
% bluefeather *.bftext
|
41
|
+
example1.bftext => example1.html (4240 byte)
|
42
|
+
example2.bftext => example2.html (5613 byte)
|
43
|
+
example3.bftext => example3.html (10499 byte)
|
44
|
+
%
|
45
|
+
|
46
|
+
If you know better about options, see the section of [Command-line Option](#commandline-options).
|
47
|
+
|
48
|
+
### Extname Switch
|
49
|
+
|
50
|
+
`bluefeather` command switches by extname of an input file how generate a html file.
|
51
|
+
|
52
|
+
`.md`, `.bfdoc`
|
53
|
+
:generate html document
|
54
|
+
|
55
|
+
others
|
56
|
+
:generate html part
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
For example, see the text.
|
61
|
+
|
62
|
+
test paragraph.
|
63
|
+
|
64
|
+
If this text is named '`test1.bftext`', `bluefeather` generates `test1.html` such as this.
|
65
|
+
|
66
|
+
<p>test paragraph.</p>
|
67
|
+
|
68
|
+
But this text is named '`test1.bfdoc`', generated html is changed.
|
69
|
+
|
70
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
71
|
+
<html>
|
72
|
+
<head>
|
73
|
+
<title>no title (Generated by BlueFeather)</title>
|
74
|
+
</head>
|
75
|
+
<body>
|
76
|
+
|
77
|
+
<p>test paragraph.</p>
|
78
|
+
|
79
|
+
</body>
|
80
|
+
</html>
|
81
|
+
|
82
|
+
If the converted document is include h1 element, BlueFeather use it's content for title of html document.
|
83
|
+
|
84
|
+
test2.bfdoc
|
85
|
+
|
86
|
+
:
|
87
|
+
|
88
|
+
Test Document
|
89
|
+
=============
|
90
|
+
|
91
|
+
test paragraph.
|
92
|
+
|
93
|
+
test2.html (output)
|
94
|
+
|
95
|
+
:
|
96
|
+
|
97
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
98
|
+
<html>
|
99
|
+
<head>
|
100
|
+
<title>Test Document</title>
|
101
|
+
</head>
|
102
|
+
<body>
|
103
|
+
|
104
|
+
<h1 id="bfheader-a5decd745d43af4aa8cf62eef5be43ac">Test Document</h1>
|
105
|
+
|
106
|
+
<p>test paragraph.</p>
|
107
|
+
|
108
|
+
</body>
|
109
|
+
</html>
|
110
|
+
|
111
|
+
|
112
|
+
### Document Metadata
|
113
|
+
|
114
|
+
You can add *document metadata* to files which have extname `.bfdoc` or `.md`
|
115
|
+
|
116
|
+
|
117
|
+
test3.bfdoc
|
118
|
+
|
119
|
+
:
|
120
|
+
|
121
|
+
Title: Test Document
|
122
|
+
CSS: style.css
|
123
|
+
|
124
|
+
Test paragraph.
|
125
|
+
|
126
|
+
test3.html
|
127
|
+
|
128
|
+
:
|
129
|
+
|
130
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
131
|
+
<html>
|
132
|
+
<head>
|
133
|
+
<title>Test Document</title>
|
134
|
+
<link rel="stylesheet" type="text/css" href="style.css" />
|
135
|
+
</head>
|
136
|
+
<body>
|
137
|
+
|
138
|
+
<p>Test paragraph.</p>
|
139
|
+
|
140
|
+
</body>
|
141
|
+
</html>
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
If you know better about metadata, see the section of [Metadata Reference](metadata-reference.html).
|
146
|
+
|
147
|
+
### stdin-mode
|
148
|
+
|
149
|
+
If you use stdin and stdout, specify a parameter only `-`. This mode is useful for pipe-line.
|
150
|
+
|
151
|
+
% bluefeather -
|
152
|
+
|
153
|
+
|
154
|
+
### Command-line Options {#commandline-options}
|
155
|
+
|
156
|
+
% bluefeather --help
|
157
|
+
bluefeather - Extended Markdown Converter
|
158
|
+
|
159
|
+
Usage: bluefeather [options] file1 [file2 file3 ..]
|
160
|
+
|
161
|
+
Options:
|
162
|
+
-e, --encoding NAME parse input files as encoding of NAME.
|
163
|
+
(s[hift-jis] / e[uc-jp] / u[tf-8] / n[one]. default: 'utf-8')
|
164
|
+
-f, --format TYPE specify format.
|
165
|
+
(t[ext] => text mode
|
166
|
+
d[ocument] => document mode)
|
167
|
+
-h, --help show this help.
|
168
|
+
-o, --output DIR output files to DIR. (default: same as input file)
|
169
|
+
-q, --quiet no output to stderr.
|
170
|
+
--suffix .SUF specify suffix of output files. (default: '.html')
|
171
|
+
-v, --verbose verbose mode - output detail of operation.
|
172
|
+
--version show BlueFeather version.
|
173
|
+
|
174
|
+
Advanced Usage:
|
175
|
+
* If specify files only '-', bluefeather read from stdin and write to stdout.
|
176
|
+
|
177
|
+
|
178
|
+
Example:
|
179
|
+
bluefeather *.bftext *.bfdoc
|
180
|
+
bluefeather -v --sufix .xhtml -o ../ sample.markdown
|
181
|
+
bluefeather -
|
182
|
+
|
183
|
+
More info:
|
184
|
+
see <http://ruby.morphball.net/bluefeather/>
|
185
|
+
%
|
186
|
+
|
187
|
+
Use in Ruby Script
|
188
|
+
----
|
189
|
+
|
190
|
+
### Basic
|
191
|
+
|
192
|
+
Most basic method is `BlueFeather.parse`.
|
193
|
+
|
194
|
+
require 'bluefeather'
|
195
|
+
|
196
|
+
str = "most basic example."
|
197
|
+
puts BlueFeather.parse(str) #=> "<p>most basic example.</p>"
|
198
|
+
|
199
|
+
And you can use `BlueFeather.parse_file`.
|
200
|
+
|
201
|
+
BlueFeather.parse_file('test1.txt')
|
202
|
+
BlueFeather.parse_file('test2.markdown')
|
203
|
+
BlueFeather.parse_file('test3.bftext')
|
204
|
+
|
205
|
+
|
206
|
+
### Generate HTML Document ###
|
207
|
+
|
208
|
+
If you want a html document not html fragment, you may use `parse_document` or `parse_document_file`.
|
209
|
+
|
210
|
+
test.bfdoc
|
211
|
+
|
212
|
+
: The sentence is expected as HTML.
|
213
|
+
|
214
|
+
test.rb
|
215
|
+
|
216
|
+
:
|
217
|
+
|
218
|
+
require 'bluefeather'
|
219
|
+
|
220
|
+
puts '-- parse_file --'
|
221
|
+
puts BlueFeather.parse_file('test.bfdoc')
|
222
|
+
|
223
|
+
puts '-- parse_document_file --'
|
224
|
+
puts BlueFeather.parse_document_file('test.bfdoc')
|
225
|
+
|
226
|
+
Result
|
227
|
+
|
228
|
+
:
|
229
|
+
|
230
|
+
-- parse_file --
|
231
|
+
<p>The sentence is expected as HTML.</p>
|
232
|
+
|
233
|
+
-- parse_document_file --
|
234
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
235
|
+
<html>
|
236
|
+
<head>
|
237
|
+
<title>no title (Generated by BlueFeather)</title>
|
238
|
+
</head>
|
239
|
+
<body>
|
240
|
+
|
241
|
+
<p>The sentence is expected as HTML.</p>
|
242
|
+
|
243
|
+
</body>
|
244
|
+
</html>
|
245
|
+
|
246
|
+
### Get document metadata ###
|
247
|
+
|
248
|
+
If you want to get directly metadata of document, instead of BlueFeather module method, you should use `BlueFeather::Document` class.
|
249
|
+
|
250
|
+
doc = BlueFeather::Document.parse(<<EOS)
|
251
|
+
Title: test document
|
252
|
+
CSS: style.css
|
253
|
+
|
254
|
+
test paragraph.
|
255
|
+
EOS
|
256
|
+
|
257
|
+
p doc['title'] # => "test document"
|
258
|
+
p doc['css'] # => "style.css"
|
259
|
+
p doc[:css] # => "style.css"
|
260
|
+
p doc['undefined'] # => nil
|
261
|
+
|
262
|
+
p doc.body # => "test paragraph."
|
263
|
+
|
264
|
+
`to_html` parses the text and generates an html document actually.
|
265
|
+
|
266
|
+
doc.to_html
|
data/doc/en/black.css
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
@import "base.css";
|
2
|
+
|
3
|
+
body {
|
4
|
+
color : #c0c0e0;
|
5
|
+
background : #000000;
|
6
|
+
scrollbar-3d-light-color : black;
|
7
|
+
scrollbar-arrow-color : white;
|
8
|
+
scrollbar-base-color : black;
|
9
|
+
scrollbar-dark-shadow-color : black;
|
10
|
+
scrollbar-face-color : black;
|
11
|
+
scrollbar-highlight-color : #666666;
|
12
|
+
scrollbar-shadow-color : gray;
|
13
|
+
|
14
|
+
}
|
15
|
+
|
16
|
+
strong{
|
17
|
+
color:#ffff00;
|
18
|
+
}
|
19
|
+
|
20
|
+
h2,h3{
|
21
|
+
border : thin outset #202070;
|
22
|
+
}
|
23
|
+
|
24
|
+
h2{
|
25
|
+
background : #202070;
|
26
|
+
}
|
27
|
+
|
28
|
+
h3{
|
29
|
+
margin-left: 0.5em;
|
30
|
+
background : #101050;
|
31
|
+
}
|
32
|
+
|
33
|
+
h2, h3, h4{
|
34
|
+
color : #ffffff;
|
35
|
+
padding : 0.2em;
|
36
|
+
}
|
37
|
+
|
38
|
+
h4{
|
39
|
+
margin-left: 1.0em;
|
40
|
+
}
|
41
|
+
|
42
|
+
pre{
|
43
|
+
border: solid thin #202070;
|
44
|
+
background-color: #000000;
|
45
|
+
overflow:auto;
|
46
|
+
font-size: smaller;
|
47
|
+
}
|
48
|
+
|
49
|
+
|
50
|
+
table {
|
51
|
+
border : none;
|
52
|
+
}
|
53
|
+
|
54
|
+
th,td {
|
55
|
+
padding : 0.2em;
|
56
|
+
}
|
57
|
+
|
58
|
+
th {
|
59
|
+
background : #303060;
|
60
|
+
border : outset 1px #303060;
|
61
|
+
}
|
62
|
+
|
63
|
+
td{
|
64
|
+
background : #000000;
|
65
|
+
border : solid 1px #404080;
|
66
|
+
}
|
67
|
+
|
68
|
+
th.empty,td.empty{
|
69
|
+
background : transparent;
|
70
|
+
}
|
71
|
+
|
72
|
+
table.clear,
|
73
|
+
table.clear th,
|
74
|
+
table.clear td {
|
75
|
+
border : none;
|
76
|
+
background : transparent;
|
77
|
+
}
|
78
|
+
|
79
|
+
blockquote{
|
80
|
+
color: #9999cc;
|
81
|
+
border: solid 1px #669999;
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
hr{
|
86
|
+
border-width: 0 0;
|
87
|
+
border-color: #669999;
|
88
|
+
padding: 0;
|
89
|
+
height: 1px;
|
90
|
+
color: #669999;
|
91
|
+
background-color: #669999;
|
92
|
+
width: 90%;
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
em{
|
97
|
+
font-style: italic;
|
98
|
+
}
|
99
|
+
|
100
|
+
a {
|
101
|
+
|
102
|
+
}
|
103
|
+
|
104
|
+
a:link {
|
105
|
+
color : #00ff00;
|
106
|
+
}
|
107
|
+
a:visited{
|
108
|
+
color : #00c800;
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
a:link:hover {
|
113
|
+
background : green;
|
114
|
+
text-decoration: none;
|
115
|
+
}
|
116
|
+
|
117
|
+
a:visited:hover {
|
118
|
+
background : green;
|
119
|
+
text-decoration: none;
|
120
|
+
}
|
121
|
+
|
122
|
+
input, textarea{
|
123
|
+
color : #c0c0e0;
|
124
|
+
background-color : black;
|
125
|
+
}
|
126
|
+
BUTTON{
|
127
|
+
color: #ffffff;
|
128
|
+
border : thin outset #f8f8ff;
|
129
|
+
background-color : #a9a9a9;
|
130
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Title: Difference from BlueCloth - BlueFeather Manual
|
2
|
+
CSS: black.css
|
3
|
+
|
4
|
+
<div class="back"><a href="index.html">BlueFeather Manual</a></div>
|
5
|
+
|
6
|
+
Difference from BlueCloth
|
7
|
+
====
|
8
|
+
|
9
|
+
{toc}
|
10
|
+
|
11
|
+
|
12
|
+
Markdown Syntax Extension
|
13
|
+
----
|
14
|
+
BlueFeather has imported some extension of syntax from [PHP Markdown Extra][]
|
15
|
+
-- definition list, table, and others. And that, BlueFeather has been added
|
16
|
+
original extension -- TOC generation and block separator. See the
|
17
|
+
[Markdown Syntax Extension](format-extension.html).
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
Change of Interface
|
22
|
+
----
|
23
|
+
BlueCloth
|
24
|
+
|
25
|
+
:
|
26
|
+
|
27
|
+
require 'bluecloth'
|
28
|
+
|
29
|
+
puts BlueCloth.new(str).to_html
|
30
|
+
|
31
|
+
BlueFeather
|
32
|
+
|
33
|
+
:
|
34
|
+
|
35
|
+
require 'bluefeather'
|
36
|
+
|
37
|
+
puts BlueFeather.parse(str)
|
38
|
+
|
39
|
+
See the [Installing and Basic Usage](basic-usage.html).
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
Generating Entire HTML Document
|
45
|
+
----
|
46
|
+
Imported by [Maruku][], BlueFeather can generate entire html document not only
|
47
|
+
html fragment. And that, *document metadata* enables to specify title and URL of
|
48
|
+
css-stylesheet.
|
49
|
+
|
50
|
+
See the [Installing and Basic Usage](basic-usage.html) and [Metadata Reference](metadata-reference.html).
|
51
|
+
|
52
|
+
|
53
|
+
Bug Fix to BlueCloth 1.0.0
|
54
|
+
----
|
55
|
+
|
56
|
+
These bugs are fixed on BlueFeather.
|
57
|
+
|
58
|
+
1. Some Regexp is set encoding of Shift-JIS.
|
59
|
+
2. '`<mail+address@example.com>`' is not parsed such as mailto-anchor. (ex: GMail alias charcters)
|
60
|
+
3. Link id definition indented 4-or-more spaces or tab is not parsed such as
|
61
|
+
code block.
|
62
|
+
4. `<hr />` indented 4-or-more spaces or tab is not parsed such as
|
63
|
+
code block.
|
64
|
+
|
65
|
+
Change of EmptyElementSuffix
|
66
|
+
----
|
67
|
+
|
68
|
+
BlueCloth output empty element tags, `<tag/>`. Instead BlueFeather output `<tag />`.
|
69
|
+
|
70
|
+
|
71
|
+
[Maruku]: http://maruku.rubyforge.org/
|
72
|
+
[PHP Markdown Extra]: http://michelf.com/projects/php-markdown/extra/
|