redcloth-formatters-docbook 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in redcloth-formatters-docbook.gemspec
4
+ gemspec
data/README.textile ADDED
@@ -0,0 +1,22 @@
1
+ The gem extends "RedCloth":http://www.redcloth.org with a DocBook formatter.
2
+
3
+ It might be used in conjunction with "Booky":http://www.https://github.com/southdesign/booky to create fully blown PDFs out of textiles.
4
+
5
+ h2. Install
6
+
7
+ Simply run @gem install redcloth-formatters-docbook@
8
+
9
+ h2. Usage
10
+
11
+ bc.. require 'rubygems'
12
+ require 'RedCloth'
13
+ require 'redcloth-formatters-docbook'
14
+
15
+ textile = File.open("your.textile", 'rb') { |f| f.read }
16
+ docbook = RedCloth.new(textile).to_docbook
17
+ puts docbook
18
+ => "
19
+ <?xml version="1.0" encoding="utf-8"?>
20
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
21
+ <para>Hello</para>
22
+ </book>"
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,4 @@
1
+ require 'RedCloth'
2
+
3
+ require 'redcloth-formatters-docbook/formatters/docbook'
4
+ require 'redcloth-formatters-docbook/textile_doc'
@@ -0,0 +1,358 @@
1
+ module RedCloth::Formatters::Docbook
2
+
3
+ @@stack = []
4
+ @@footnotes = {}
5
+
6
+ # cover
7
+ def title(opts)
8
+ options = parse_css(opts[:style])
9
+ reference_id = ""
10
+ reference_id = " xml:id=\"#{options[:id]}\"" if options[:id]
11
+ out = ""
12
+ out += close_level("section4")
13
+ out += close_level("section3")
14
+ out += close_level("section2")
15
+ out += close_level("chapter")
16
+ out += close_level("preface")
17
+ out += close_level("title")
18
+ out += "\n#{"\t" * @@stack.size}<info#{reference_id}>\n"
19
+ out += "#{"\t" * @@stack.size}\t<title>#{opts[:text]}</title>\n"
20
+ open_level("title", "#{"\t" * @@stack.size}</info>\n\n")
21
+ out
22
+ end
23
+
24
+ def subtitle(opts)
25
+ "#{"\t" * @@stack.size}<subtitle>#{opts[:text]}</subtitle>\n"
26
+ end
27
+
28
+ def author(opts)
29
+ first, last = opts[:text].split(" ")
30
+ "#{"\t" * @@stack.size}<author><firstname>#{first}</firstname><surname>#{last}</surname></author>\n"
31
+ end
32
+
33
+ def copyright(opts)
34
+ split = opts[:text].split(",")
35
+ year = split.first
36
+ holder = split.slice(1, split.length - 1).join(",").strip
37
+ "#{"\t" * @@stack.size}<copyright><year>#{year}</year><holder>#{holder}</holder></copyright>\n"
38
+ end
39
+
40
+ # preface
41
+ def h0(opts)
42
+ options = parse_css(opts[:style])
43
+ reference_id = ""
44
+ reference_id = " xml:id=\"#{options[:id]}\"" if options[:id]
45
+ out = ""
46
+ out += close_level("section4")
47
+ out += close_level("section3")
48
+ out += close_level("section2")
49
+ out += close_level("chapter")
50
+ out += close_level("preface")
51
+ out += close_level("title")
52
+ out += "#{"\t" * @@stack.size}<preface#{reference_id}>\n\n"
53
+ out += "#{"\t" * @@stack.size}\t<title>#{opts[:text]}</title>\n"
54
+ open_level("preface", "#{"\t" * @@stack.size}</preface>\n\n")
55
+ out
56
+ end
57
+
58
+ # chapter
59
+ def h1(opts)
60
+ options = parse_css(opts[:style])
61
+ reference_id = ""
62
+ reference_id = " xml:id=\"#{options[:id]}\"" if options[:id]
63
+ out = ""
64
+ out += close_level("section4")
65
+ out += close_level("section3")
66
+ out += close_level("section2")
67
+ out += close_level("chapter")
68
+ out += close_level("preface")
69
+ out += close_level("title")
70
+ out += "#{"\t" * @@stack.size}<chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'#{reference_id}>\n\n"
71
+ out += "#{"\t" * @@stack.size}\t<title>#{opts[:text]}</title>\n"
72
+ open_level("chapter", "#{"\t" * @@stack.size}</chapter>\n\n")
73
+ out
74
+ end
75
+
76
+ # section 1
77
+ def h2(opts)
78
+ options = parse_css(opts[:style])
79
+ reference_id = ""
80
+ reference_id = " xml:id=\"#{options[:id]}\"" if options[:id]
81
+ out = ""
82
+ out += close_level("section4")
83
+ out += close_level("section3")
84
+ out += close_level("section2")
85
+ out += "\n"
86
+ out += "#{"\t" * @@stack.size}<section#{reference_id}>\n"
87
+ out += "#{"\t" * @@stack.size}\t<title>#{opts[:text]}</title>\n"
88
+ open_level("section2", "#{"\t" * @@stack.size}</section>\n")
89
+ out
90
+ end
91
+
92
+ # section 2
93
+ def h3(opts)
94
+ options = parse_css(opts[:style])
95
+ reference_id = ""
96
+ reference_id = " xml:id=\"#{options[:id]}\"" if options[:id]
97
+ out = ""
98
+ out += close_level("section4")
99
+ out += close_level("section3")
100
+ out += "\n"
101
+ out += "#{"\t" * @@stack.size}<section#{reference_id}>\n"
102
+ out += "#{"\t" * @@stack.size}\t<title>#{opts[:text]}</title>\n"
103
+ open_level("section3", "#{"\t" * @@stack.size}</section>\n")
104
+ out
105
+ end
106
+
107
+ # section 3
108
+ def h4(opts)
109
+ options = parse_css(opts[:style])
110
+ reference_id = ""
111
+ reference_id = " xml:id=\"#{options[:id]}\"" if options[:id]
112
+ out = ""
113
+ out += close_level("section4")
114
+ out += "\n"
115
+ out += "#{"\t" * @@stack.size}<section#{reference_id}>\n"
116
+ out += "#{"\t" * @@stack.size}\t<title>#{opts[:text]}</title>\n"
117
+ open_level("section4", "#{"\t" * @@stack.size}</section>\n")
118
+ out
119
+ end
120
+
121
+ # para
122
+ def p(opts)
123
+ "#{"\t" * @@stack.size}<para>#{opts[:text]}</para>\n"
124
+ end
125
+
126
+ # lists
127
+ def ul_open(opt)
128
+ "\n#{"\t" * @@stack.size}<itemizedlist>\n"
129
+ end
130
+
131
+ def ul_close(opt)
132
+ "#{"\t" * @@stack.size}</itemizedlist>\n"
133
+ end
134
+
135
+ def ol_open(opt)
136
+ "\n#{"\t" * @@stack.size}<orderedlist>\n"
137
+ end
138
+
139
+ def ol_close(opt)
140
+ "#{"\t" * @@stack.size}</orderedlist>\n"
141
+ end
142
+
143
+ def li_open(opts)
144
+ "#{"\t" * @@stack.size}\t<listitem><para>#{opts[:text]}"
145
+ end
146
+
147
+ def li_close(opts=nil)
148
+ "</para></listitem>#{opts[:text]}\n"
149
+ end
150
+
151
+ @@table_headers = nil
152
+
153
+ # tables
154
+ def table_open(opts)
155
+ options = parse_css(opts[:style])
156
+ options[:align] ||= 'left'
157
+ @@table_headers = options[:cols].to_i
158
+ out = "\n"
159
+ out += "#{"\t" * @@stack.size}<table frame='all'>\n"
160
+ out += "#{"\t" * @@stack.size}\t<title>#{options[:name]}</title>\n\n"
161
+ out += "#{"\t" * @@stack.size}\t<tgroup cols='#{options[:cols]}' align='#{options[:align]}' colsep='1' rowsep='1'>\n"
162
+ out += "#{"\t" * @@stack.size}\t\t<thead>\n"
163
+ out
164
+ end
165
+
166
+ def table_close(opts)
167
+ "#{"\t" * @@stack.size}\t\t</tbody>\n#{"\t" * @@stack.size}\t</tgroup>\n</table>\n"
168
+ end
169
+
170
+ def th(opts)
171
+ "\t<tr#{pba(opts)}>\n"
172
+ end
173
+
174
+ def tr_open(opts)
175
+ "#{"\t" * @@stack.size}\t\t\t<row>\n"
176
+ end
177
+
178
+ def tr_close(opts)
179
+ out = "#{"\t" * @@stack.size}\t\t\t</row>\n"
180
+
181
+ if @@table_headers == 0
182
+ out += "#{"\t" * @@stack.size}\t\t</thead>\n#{"\t" * @@stack.size}\t\t<tbody>\n"
183
+ @@table_headers = nil
184
+ end
185
+
186
+ out
187
+ end
188
+
189
+ def td(opts)
190
+ @@table_headers -= 1 if opts[:th]
191
+ "#{"\t" * @@stack.size}\t\t\t\t<entry>#{opts[:text].strip}</entry>\n"
192
+ end
193
+
194
+
195
+ # footnotes
196
+ def footno(opts)
197
+ opts[:id] ||= opts[:text]
198
+ "<footnote><para>#{@@footnotes[opts[:id]]}</para></footnote>"
199
+ end
200
+
201
+ def fn(opts)
202
+ @@footnotes[opts[:id]] = opts[:text]
203
+ ""
204
+ end
205
+
206
+ # phrase
207
+ def i(opts)
208
+ "<emphasis>#{opts[:text]}</emphasis>"
209
+ end
210
+ alias :em :i
211
+
212
+ def b(opts)
213
+ "<emphasis role=\"bold\">#{opts[:text]}</emphasis>"
214
+ end
215
+ alias :strong :b
216
+
217
+ def br(opts)
218
+ ""
219
+ end
220
+
221
+ def cite(opts)
222
+ "<citation xl:href=\"##{opts[:text]}\">#{opts[:text]}</citation>"
223
+ end
224
+
225
+ def code(opts)
226
+ return opts[:text] if opts[:block]
227
+ "<code>#{opts[:text]}</code>"
228
+ end
229
+
230
+ def link(opts)
231
+ "<link xl:href=\"#{opts[:href]}\">#{opts[:name]}</link>"
232
+ end
233
+
234
+ def image(opts)
235
+ title = opts[:title]
236
+ id = title.split(" ").join(".")
237
+
238
+ out = "\n"
239
+ out += "<figure xml:id=\"#{id}\">\n"
240
+ out += "<title>#{title}</title>\n"
241
+ out += "<mediaobject>\n"
242
+ out += "\t<imageobject><imagedata fileref=\"#{opts[:src]}\" format=\"PNG\" /></imageobject>\n"
243
+ out += "</mediaobject>\n"
244
+ out += "</figure>\n"
245
+ out
246
+ end
247
+
248
+ def bq_open(opts)
249
+ opts[:block] = true
250
+ options = parse_css(opts[:style])
251
+ out = "<blockquote>\n"
252
+ out += "\t<attribution>#{options[:by]}</attribution>\n" if options[:by]
253
+ out
254
+ end
255
+
256
+ def bq_close(opts)
257
+ "</blockquote>\n"
258
+ end
259
+
260
+ # source
261
+ def bc_open(opts)
262
+ opts[:block] = true
263
+ options = parse_css(opts[:style])
264
+ id = options[:name].split(" ").join(".")
265
+ out = "<para>\n"
266
+ out += "\t<example xml:id=\"#{id}\">\n"
267
+ out += "\t<title>#{options[:name]}</title>\n"
268
+ out += "\t<programlisting width=\"100%\">\n"
269
+ out
270
+ end
271
+
272
+ def bc_close(opts)
273
+ out = "</programlisting>\n"
274
+ out += "\t</example>\n"
275
+ out += "</para>\n"
276
+ out
277
+ end
278
+
279
+ def self.close_all_levels text = ""
280
+ return "" if @@stack.empty?
281
+ begin
282
+ entry = @@stack.pop
283
+ text += "\n#{entry[:tag]}"
284
+ end while !@@stack.empty?
285
+ text
286
+ end
287
+
288
+ def self.open_book
289
+ out = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
290
+ out += "<book xmlns=\"http://docbook.org/ns/docbook\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xl=\"http://www.w3.org/1999/xlink\" version=\"5.0\">\n"
291
+ out
292
+ end
293
+
294
+ def self.close_book
295
+ self.close_all_levels + "\n</book>"
296
+ end
297
+
298
+ private
299
+
300
+ def parse_css css
301
+ options = {}
302
+ begin
303
+ css = css.split ";"
304
+ css.each do |css|
305
+ key, value = css.split ":"
306
+ options[key.strip.to_sym] = value.strip
307
+ end
308
+ rescue
309
+ end
310
+ options
311
+ end
312
+
313
+ def close_level(type)
314
+ last = @@stack.last
315
+ return "" if last.nil?
316
+ if last[:type] == type
317
+ return @@stack.pop[:tag]
318
+ end
319
+ ""
320
+ end
321
+
322
+ def open_level(type, tag)
323
+ @@stack << { :type => type, :tag => tag }
324
+ end
325
+
326
+ # escapement for regular HTML (not in PRE tag)
327
+ def escape(text)
328
+ html_esc(text)
329
+ end
330
+
331
+ # escapement for HTML in a PRE tag
332
+ def escape_pre(text)
333
+ html_esc(text, :html_escape_preformatted)
334
+ end
335
+
336
+ # escaping for HTML attributes
337
+ def escape_attribute(text)
338
+ html_esc(text, :html_escape_attributes)
339
+ end
340
+
341
+ def after_transform(text)
342
+ text.chomp!
343
+ end
344
+
345
+
346
+ def before_transform(text)
347
+
348
+ end
349
+
350
+ def method_missing(method, opts)
351
+ opts[:text] || ""
352
+ end
353
+
354
+ def formatter_methods
355
+ singleton_methods.map! {|method| method.to_sym }
356
+ end
357
+
358
+ end
@@ -0,0 +1,19 @@
1
+ module RedCloth
2
+ class TextileDoc
3
+
4
+ #
5
+ # Generates DocBook from the Textile contents.
6
+ #
7
+ # RedCloth.new( "And then? She *fell*!" ).to_docbook
8
+ # #=> "<para>And then? She fell!</para>"
9
+ #
10
+ def to_docbook( *rules )
11
+ apply_rules(rules)
12
+
13
+ docbook = RedCloth::Formatters::Docbook.open_book
14
+ docbook += to(RedCloth::Formatters::Docbook)
15
+ docbook += RedCloth::Formatters::Docbook.close_book
16
+ docbook
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module Redcloth
2
+ module Formatters
3
+ module Docbook
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "redcloth-formatters-docbook/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "redcloth-formatters-docbook"
7
+ s.version = Redcloth::Formatters::Docbook::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Thomas Fankhauser"]
10
+ s.email = ["tommylefunk@googlemail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{RedCloth DocBook Formatter}
13
+ s.description = %q{Allows RedCloth to convert .textiles to Docbook XMLs}
14
+
15
+ s.rubyforge_project = "redcloth-formatters-docbook"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency "RedCloth", "~> 4.2.8"
23
+ s.add_development_dependency "rspec", "~> 2.6"
24
+ end
@@ -0,0 +1,61 @@
1
+ require 'RedCloth'
2
+ require 'redcloth-formatters-docbook'
3
+ require 'spec/helpers'
4
+
5
+ describe Redcloth::Formatters::Docbook do
6
+
7
+ it "basic command available" do
8
+ textile = File.open("spec/fixtures/hello.textile", 'rb') { |f| f.read }
9
+ docbook = File.open("spec/fixtures/hello.xml", 'rb') { |f| f.read }
10
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
11
+ end
12
+
13
+ it "chapters with sections" do
14
+ textile = File.open("spec/fixtures/chapters.textile", 'rb') { |f| f.read }
15
+ docbook = File.open("spec/fixtures/chapters.xml", 'rb') { |f| f.read }
16
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
17
+ end
18
+
19
+ it "lists" do
20
+ textile = File.open("spec/fixtures/lists.textile", 'rb') { |f| f.read }
21
+ docbook = File.open("spec/fixtures/lists.xml", 'rb') { |f| f.read }
22
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
23
+ end
24
+
25
+ it "tables" do
26
+ textile = File.open("spec/fixtures/tables.textile", 'rb') { |f| f.read }
27
+ docbook = File.open("spec/fixtures/tables.xml", 'rb') { |f| f.read }
28
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
29
+ end
30
+
31
+ it "footnotes" do
32
+ textile = File.open("spec/fixtures/footnotes.textile", 'rb') { |f| f.read }
33
+ docbook = File.open("spec/fixtures/footnotes.xml", 'rb') { |f| f.read }
34
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
35
+ end
36
+
37
+ it "phrase" do
38
+ textile = File.open("spec/fixtures/phrase.textile", 'rb') { |f| f.read }
39
+ docbook = File.open("spec/fixtures/phrase.xml", 'rb') { |f| f.read }
40
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
41
+ end
42
+
43
+ it "source" do
44
+ textile = File.open("spec/fixtures/source.textile", 'rb') { |f| f.read }
45
+ docbook = File.open("spec/fixtures/source.xml", 'rb') { |f| f.read }
46
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
47
+ end
48
+
49
+ it "bibliography" do
50
+ textile = File.open("spec/fixtures/bibliography.textile", 'rb') { |f| f.read }
51
+ docbook = File.open("spec/fixtures/bibliography.xml", 'rb') { |f| f.read }
52
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
53
+ end
54
+
55
+ it "cover" do
56
+ textile = File.open("spec/fixtures/cover.textile", 'rb') { |f| f.read }
57
+ docbook = File.open("spec/fixtures/cover.xml", 'rb') { |f| f.read }
58
+ RedCloth.new(textile).to_docbook.docbook_strip.should eql(docbook.docbook_strip)
59
+ end
60
+
61
+ end
@@ -0,0 +1,23 @@
1
+ h1. Bibliography
2
+
3
+ h2. Referencing
4
+
5
+ Look at ??BernersLee?? for more information.
6
+
7
+ Look at ??Coleman?? for more information.
8
+
9
+ h2. Bibliography
10
+
11
+ h3{id:BernersLee}. Tim Berners Lee: The Web Reinvented
12
+
13
+ Addison Wesley 2003
14
+
15
+ Page 20-40
16
+
17
+ h3{id:Coleman}. Jones Coleman: Cummulated Chaos
18
+
19
+ Wembley 2003
20
+
21
+ Page 20-40
22
+
23
+
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
5
+ <title>Bibliography</title>
6
+ <section>
7
+ <title>Referencing</title>
8
+ <para>Look at <citation xl:href="#BernersLee">BernersLee</citation> for more information.</para>
9
+ <para>Look at <citation xl:href="#Coleman">Coleman</citation> for more information.</para>
10
+ </section>
11
+
12
+ <section>
13
+ <title>Bibliography</title>
14
+
15
+ <section xml:id="BernersLee">
16
+ <title>Tim Berners Lee: The Web Reinvented</title>
17
+ <para>Addison Wesley 2003</para>
18
+ <para>Page 20-40</para>
19
+ </section>
20
+
21
+ <section xml:id="Coleman">
22
+ <title>Jones Coleman: Cummulated Chaos</title>
23
+ <para>Wembley 2003</para>
24
+ <para>Page 20-40</para>
25
+ </section>
26
+
27
+ </section>
28
+ </chapter>
29
+
30
+ </book>
@@ -0,0 +1,25 @@
1
+ h1. Chapter 1
2
+
3
+ Some chapter text
4
+
5
+ h2. Sub Heading 1
6
+
7
+ Some sub text
8
+
9
+ h3. SubSub Heading 1
10
+
11
+ Some text
12
+
13
+ h4. SubSubSub Heading 1
14
+
15
+ Some more text
16
+
17
+ h2. Sub Heading 2
18
+
19
+ Some more sub text sub text
20
+
21
+ Even Some more sub text sub text
22
+
23
+ h1. Chapter 2
24
+
25
+ A little text
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
5
+
6
+ <title>Chapter 1</title>
7
+ <para>Some chapter text</para>
8
+
9
+ <section>
10
+ <title>Sub Heading 1</title>
11
+ <para>Some sub text</para>
12
+
13
+ <section>
14
+ <title>SubSub Heading 1</title>
15
+ <para>Some text</para>
16
+
17
+ <section>
18
+ <title>SubSubSub Heading 1</title>
19
+ <para>Some more text</para>
20
+ </section>
21
+
22
+ </section>
23
+ </section>
24
+
25
+ <section>
26
+ <title>Sub Heading 2</title>
27
+ <para>Some more sub text sub text</para>
28
+ <para>Even Some more sub text sub text</para>
29
+ </section>
30
+
31
+ </chapter>
32
+
33
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
34
+ <title>Chapter 2</title>
35
+ <para>A little text</para>
36
+ </chapter>
37
+
38
+ </book>
@@ -0,0 +1,13 @@
1
+ title. Super Social Everybody
2
+
3
+ subtitle. How to Survive in the Social Web
4
+
5
+ author. Thomas Fankhauser
6
+
7
+ copyright. 2010, Norman Walsh, All rights reserved.
8
+
9
+
10
+ h0. Foreword
11
+
12
+ This is the place for the foreword
13
+
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <info>
5
+ <title>Super Social Everybody</title>
6
+ <subtitle>How to Survive in the Social Web</subtitle>
7
+ <author><firstname>Thomas</firstname><surname>Fankhauser</surname></author>
8
+ <copyright>
9
+ <year>2010</year>
10
+ <holder>Norman Walsh, All rights reserved.</holder>
11
+ </copyright>
12
+ </info>
13
+
14
+ <preface>
15
+ <title>Foreword</title>
16
+ <para>This is the place for the foreword</para>
17
+ </preface>
18
+
19
+ </book>
@@ -0,0 +1,10 @@
1
+ h1. Footnotes
2
+
3
+ h2. Basic
4
+
5
+ fn1. Sentence is a collection of words
6
+
7
+ fn2. A note at the food of the page
8
+
9
+ This sentence[1] needs a footnote[2].
10
+
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
4
+
5
+ <title>Footnotes</title>
6
+
7
+ <section>
8
+ <title>Basic</title>
9
+ <para>This sentence<footnote><para>Sentence is a collection of words</para></footnote> needs a footnote<footnote><para>A note at the food of the page</para></footnote>.</para>
10
+ </section>
11
+ </chapter>
12
+ </book>
@@ -0,0 +1,5 @@
1
+ h1. Hello
2
+
3
+ h2. Basic
4
+
5
+ Hello
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
5
+ <title>Hello</title>
6
+ <section>
7
+ <title>Basic</title>
8
+ <para>Hello</para>
9
+ </section>
10
+ </chapter>
11
+ </book>
@@ -0,0 +1,11 @@
1
+ h1. Lists
2
+
3
+ h2. Basic
4
+
5
+ * A bullet list 1
6
+ * A bullet list 2
7
+ * A bullet list 3
8
+
9
+ # A numbered list 1
10
+ # A numbered list 2
11
+ # A numbered list 3
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
5
+ <title>Lists</title>
6
+ <section>
7
+ <title>Basic</title>
8
+
9
+ <itemizedlist>
10
+ <listitem><para>A bullet list 1</para></listitem>
11
+ <listitem><para>A bullet list 2</para></listitem>
12
+ <listitem><para>A bullet list 3</para></listitem>
13
+ </itemizedlist>
14
+
15
+ <orderedlist>
16
+ <listitem><para>A numbered list 1</para></listitem>
17
+ <listitem><para>A numbered list 2</para></listitem>
18
+ <listitem><para>A numbered list 3</para></listitem>
19
+ </orderedlist>
20
+
21
+ </section>
22
+ </chapter>
23
+ </book>
@@ -0,0 +1,21 @@
1
+ h1. Phrases
2
+
3
+ h2. Basic
4
+
5
+ I _believe_ every word.
6
+
7
+ I __believe__ every word.
8
+
9
+ This is a *bold* sentence.
10
+
11
+ This is a **bold** sentence.
12
+
13
+ ??LKing?? was said by Martin Luther King.
14
+
15
+ Simply run @rake db:migrate@ to install everything.
16
+
17
+ Simply got to "Google":http://www.google.com and search.
18
+
19
+ !../images/image.png(A great image)!
20
+
21
+ bq{by: Martin Luther King}. I have a dream. The dream is great. It will come true!
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
5
+ <title>Phrases</title>
6
+ <section>
7
+ <title>Basic</title>
8
+
9
+ <para>I <emphasis>believe</emphasis> every word.</para>
10
+
11
+ <para>I <emphasis>believe</emphasis> every word.</para>
12
+
13
+ <para>This is a <emphasis role="bold">bold</emphasis> sentence.</para>
14
+
15
+ <para>This is a <emphasis role="bold">bold</emphasis> sentence.</para>
16
+
17
+ <para><citation xl:href="#LKing">LKing</citation> was said by Martin Luther King.</para>
18
+
19
+ <para>Simply run <code>rake db:migrate</code> to install everything.</para>
20
+
21
+ <para>Simply got to <link xl:href="http://www.google.com">Google</link> and search.</para>
22
+
23
+ <para>
24
+ <figure xml:id="A.great.image">
25
+ <title>A great image</title>
26
+ <mediaobject>
27
+ <imageobject><imagedata fileref="../images/image.png" format="PNG" /></imageobject>
28
+ </mediaobject>
29
+ </figure>
30
+ </para>
31
+
32
+ <blockquote>
33
+ <attribution>Martin Luther King</attribution>
34
+ <para>I have a dream. The dream is great. It will come true!</para>
35
+ </blockquote>
36
+
37
+ </section>
38
+ </chapter>
39
+ </book>
@@ -0,0 +1,17 @@
1
+ h1. Source Code
2
+
3
+ h2. Basic
4
+
5
+ some text
6
+
7
+ bc{name: Ruby Car Class;}.. class Car
8
+
9
+ def start_engine
10
+ end
11
+
12
+ def stop_engine
13
+ end
14
+
15
+ end
16
+
17
+ p. Another paragraph
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
5
+ <title>Source Code</title>
6
+ <section>
7
+ <title>Basic</title>
8
+
9
+ <para>some text</para>
10
+
11
+ <para>
12
+ <example xml:id="Ruby.Car.Class">
13
+ <title>Ruby Car Class</title>
14
+ <programlisting width="100%">
15
+ class Car
16
+
17
+ def start_engine
18
+ end
19
+
20
+ def stop_engine
21
+ end
22
+
23
+ end</programlisting>
24
+ </example>
25
+ </para>
26
+
27
+ <para>Another paragraph</para>
28
+
29
+ </section>
30
+ </chapter>
31
+
32
+ </book>
@@ -0,0 +1,9 @@
1
+ h1. Tables
2
+
3
+ h2. Basic
4
+
5
+ table{name:Attendees; cols:3; align: left;}.
6
+ |_. Name |_. Age |_. Sex |
7
+ | Joan | 24 | F |
8
+ | Archie | 29 | M |
9
+ | Bello | 45 | F |
@@ -0,0 +1,46 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
3
+
4
+ <chapter xmlns='http://docbook.org/ns/docbook' xmlns:xi='http://www.w3.org/2001/XInclude' version='5.0'>
5
+
6
+ <title>Tables</title>
7
+
8
+ <section>
9
+ <title>Basic</title>
10
+
11
+ <table frame='all'>
12
+ <title>Attendees</title>
13
+
14
+ <tgroup cols='3' align='left' colsep='1' rowsep='1'>
15
+ <thead>
16
+ <row>
17
+ <entry>Name</entry>
18
+ <entry>Age</entry>
19
+ <entry>Sex</entry>
20
+ </row>
21
+ </thead>
22
+ <tbody>
23
+ <row>
24
+ <entry>Joan</entry>
25
+ <entry>24</entry>
26
+ <entry>F</entry>
27
+ </row>
28
+ <row>
29
+ <entry>Archie</entry>
30
+ <entry>29</entry>
31
+ <entry>M</entry>
32
+ </row>
33
+ <row>
34
+ <entry>Bello</entry>
35
+ <entry>45</entry>
36
+ <entry>F</entry>
37
+ </row>
38
+ </tbody>
39
+ </tgroup>
40
+ </table>
41
+ </section>
42
+
43
+ </chapter>
44
+
45
+
46
+ </book>
data/spec/helpers.rb ADDED
@@ -0,0 +1,9 @@
1
+ class String
2
+ def docbook_strip
3
+ self.strip!
4
+ self.gsub! "\n", ""
5
+ self.gsub! "\\n", ""
6
+ self.gsub! "\\t", ""
7
+ self.gsub! />\s*</, "><"
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redcloth-formatters-docbook
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Thomas Fankhauser
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-10-17 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: RedCloth
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 39
30
+ segments:
31
+ - 4
32
+ - 2
33
+ - 8
34
+ version: 4.2.8
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 15
46
+ segments:
47
+ - 2
48
+ - 6
49
+ version: "2.6"
50
+ type: :development
51
+ version_requirements: *id002
52
+ description: Allows RedCloth to convert .textiles to Docbook XMLs
53
+ email:
54
+ - tommylefunk@googlemail.com
55
+ executables: []
56
+
57
+ extensions: []
58
+
59
+ extra_rdoc_files: []
60
+
61
+ files:
62
+ - .gitignore
63
+ - Gemfile
64
+ - README.textile
65
+ - Rakefile
66
+ - lib/redcloth-formatters-docbook.rb
67
+ - lib/redcloth-formatters-docbook/formatters/docbook.rb
68
+ - lib/redcloth-formatters-docbook/textile_doc.rb
69
+ - lib/redcloth-formatters-docbook/version.rb
70
+ - redcloth-formatters-docbook.gemspec
71
+ - spec/docbook_spec.rb
72
+ - spec/fixtures/bibliography.textile
73
+ - spec/fixtures/bibliography.xml
74
+ - spec/fixtures/chapters.textile
75
+ - spec/fixtures/chapters.xml
76
+ - spec/fixtures/cover.textile
77
+ - spec/fixtures/cover.xml
78
+ - spec/fixtures/footnotes.textile
79
+ - spec/fixtures/footnotes.xml
80
+ - spec/fixtures/hello.textile
81
+ - spec/fixtures/hello.xml
82
+ - spec/fixtures/lists.textile
83
+ - spec/fixtures/lists.xml
84
+ - spec/fixtures/phrase.textile
85
+ - spec/fixtures/phrase.xml
86
+ - spec/fixtures/source.textile
87
+ - spec/fixtures/source.xml
88
+ - spec/fixtures/tables.textile
89
+ - spec/fixtures/tables.xml
90
+ - spec/helpers.rb
91
+ has_rdoc: true
92
+ homepage: ""
93
+ licenses: []
94
+
95
+ post_install_message:
96
+ rdoc_options: []
97
+
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ hash: 3
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
117
+ version: "0"
118
+ requirements: []
119
+
120
+ rubyforge_project: redcloth-formatters-docbook
121
+ rubygems_version: 1.4.2
122
+ signing_key:
123
+ specification_version: 3
124
+ summary: RedCloth DocBook Formatter
125
+ test_files:
126
+ - spec/docbook_spec.rb
127
+ - spec/fixtures/bibliography.textile
128
+ - spec/fixtures/bibliography.xml
129
+ - spec/fixtures/chapters.textile
130
+ - spec/fixtures/chapters.xml
131
+ - spec/fixtures/cover.textile
132
+ - spec/fixtures/cover.xml
133
+ - spec/fixtures/footnotes.textile
134
+ - spec/fixtures/footnotes.xml
135
+ - spec/fixtures/hello.textile
136
+ - spec/fixtures/hello.xml
137
+ - spec/fixtures/lists.textile
138
+ - spec/fixtures/lists.xml
139
+ - spec/fixtures/phrase.textile
140
+ - spec/fixtures/phrase.xml
141
+ - spec/fixtures/source.textile
142
+ - spec/fixtures/source.xml
143
+ - spec/fixtures/tables.textile
144
+ - spec/fixtures/tables.xml
145
+ - spec/helpers.rb