X-Git-Url: http://pere.pagekite.me/gitweb/text-madewithcc.git/blobdiff_plain/cad86ab2fddbd46996c61e27cd2563e81f3ba8c3..48056e8e736fcd8d140cd3713993f4b7e074bea9:/fixup-docbook.rb
diff --git a/fixup-docbook.rb b/fixup-docbook.rb
index 5de33e7..d568f21 100755
--- a/fixup-docbook.rb
+++ b/fixup-docbook.rb
@@ -21,26 +21,27 @@ def log(level,what)
end
def partreplace(xml, partid, tag)
- xml.css('part[id=' + partid + ']').each do |part|
+ xml.css('part').select {|p| p.attributes['id'].value == partid}.each do |part|
part.name = tag
end
end
log 0, 'replace article* with book*'
-xml.css('articleinfo').each do |node|
- node.name = 'bookinfo'
- node.first_element_child.before(<<'XML')
-
- Gunnar Wolf
- Mexico City
-
-XML
- node.first_element_child.before(<<'XML')
+xml.children[0].name = 'book'
+xml.children[1].name = 'book'
+xml.css('info').each do |node|
+ node.last_element_child.after(<<'XML')
2017
Creative Commons
+XML
+ node.last_element_child.after(<<'XML')
+
+ Gunnar Wolf
+ Mexico City
+
XML
end
xml.css('article').each do |node|
@@ -57,13 +58,16 @@ partreplace(xml, 'bibliography', 'chapter')
partreplace(xml, 'acknowledgments', 'chapter')
log 0, 'place part introduction into '
-s = xml.xpath("//part/title[text()='The Case Studies']")[0]
+s = xml.search('part title').select {|tit| tit.content =~ /The Case Studies/}[0]
+
if s
s.after('')
p = xml.css('part partintro')[0]
- s.parent.xpath("//part/para").each do |node|
+ s.parent.children.select{|c| c.name == 'para'}.each do |node|
node.parent = p
end
+else
+ log 0, 'Adding failed!'
end
@@ -73,7 +77,7 @@ log 0, 'remove empty notes/web links sections'
'Web links',
'Web link',
].each do |title|
- xml.xpath("//title[text()='%s']" % title).each do |node|
+ xml.search('title').select {|t| t.content == title}.each do |node|
p = node.parent
node.remove
if p.content =~ /^\s*$/
@@ -88,8 +92,8 @@ log 0, 'remove title from dedication'
xml.css('dedication title')[0].content = ""
log 0, 'move legal notice to bookinfo'
-xml.css('book bookinfo')[0].first_element_child.before('')
-ln = xml.css('book bookinfo legalnotice')[0]
+xml.css('book info')[0].last_element_child.after('')
+ln = xml.css('book info legalnotice')[0]
xml.css('para').each do |para|
if para.content =~ /This book is published under a/
log 0, 'found legal'
@@ -99,10 +103,10 @@ xml.css('para').each do |para|
end
log 0, 'replace colophon page with one for this edition'
- xml.xpath('//colophon/para').remove
-s = xml.xpath('//colophon')[0]
+ xml.search('colophon para').map {|p| p.remove}
+s = xml.search('colophon')[0]
s.first_element_child.after(<<'XML')
-Made With Creative Commons
+Made with Creative Commons
by Paul Stacey & Sarah Hinchliff Pearson
@@ -114,15 +118,18 @@ license (CC BY-SA), version 4.0.
ISBN: YET-TO-BE-DECIDED (PDF), YET-TO-BE-DECIDED (ePub),
YET-TO-BE-DECIDED (Paperback)
-Illustrations by Bryan Mathers,
+Illustrations by Bryan Mathers,
+.
Publisher: Gunnar Wolf.
-
-
+
+
+
+
Downloadable e-book available at
-
+.
This book is published under a CC BY-SA license, which means that you
can copy, redistribute, remix, transform, and build upon the content for
@@ -136,15 +143,72 @@ contributions under the same license as the original. License details:
Creative Commons and backers of our crowdfunding-campaign on the
Kickstarter.com platform.
+This edition of the book is maintained on
+, and the
+translations are maintained on
+. If
+you find any error in the book, please let us know via gitlab.
+
+
+Classifications:
+
+
+
+(Dewey) 346.048, 347.78
+
+
+
+(UDK) ?
+
+
+
+(US Library of Congress) Z286 O63 S73 2017
+
+
+
+(Melvil) 025.523
+
+
+
+(ACM CRCS) ?
+
+
XML
+log 0, 'remove title from colophon'
+xml.css('colophon title')[0].content = ""
+
log 0, 'change CC logo images to informalfigure'
xml.css('figure mediaobject imageobject imagedata[width="40.0%"]').each do |id|
f = id.parent.parent.parent
f.name = 'informalfigure'
end
-log 0, 'Writing processed file'
-# Unable to figure out API way to replace DOCTYPE
-data = xml.to_xml().gsub!(/DOCTYPE article/, 'DOCTYPE book')
-File.open(dstfile, 'w') {|f| f.write(data)}
+log 0, 'assigning IDs to formal figures'
+seq = 1
+xml.css('figure').each do |fig|
+ fig['id'] = 'fig-%d' % seq
+ seq = seq + 1
+end
+
+# Disabled as dblatex do not understand chapter/chapterinfo/author,
+# see .
+if false
+log 0, 'migrate chapter author into where relevant'
+xml.css('chapter para').each do |para|
+ if para.content =~ /^\s*((Paul|Sarah Hinchliff) (Stacey|Pearson))\s*$/
+ log 1, 'migrated %s %s' % [$2, $3]
+ para.parent.css('title')[0].before(<<'XML' % [$2, $3])
+
+
+ %s%s
+
+
+XML
+ para.remove
+ end
+end
+end
+
+log 0, 'Writing processed file (%s)' % dstfile
+File.open(dstfile, 'w') {|f| f.write(xml.to_xml())}