X-Git-Url: http://pere.pagekite.me/gitweb/text-madewithcc.git/blobdiff_plain/e44769359a308ee4f407ad396f0ae4bc3c28a16d..48056e8e736fcd8d140cd3713993f4b7e074bea9:/fixup-docbook.rb diff --git a/fixup-docbook.rb b/fixup-docbook.rb index 1fe55d0..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| @@ -51,27 +52,48 @@ end log 0, 'change parts to colophon, dedication and chapter' partreplace(xml, 'colophon', 'colophon') partreplace(xml, 'dedication', 'dedication') -partreplace(xml, 'foreword', 'chapter') -partreplace(xml, 'introduction', 'chapter') +partreplace(xml, 'foreword', 'preface') +partreplace(xml, 'introduction', 'preface') 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 + + +log 0, 'remove empty notes/web links sections' +[ + 'Notes', + 'Web links', + 'Web link', +].each do |title| + xml.search('title').select {|t| t.content == title}.each do |node| + p = node.parent + node.remove + if p.content =~ /^\s*$/ + p.remove + else + raise RuntimeError, 'Non-empty «%s» found' % title + end + end end 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' @@ -80,7 +102,113 @@ xml.css('para').each do |para| end 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, 'replace colophon page with one for this edition' + xml.search('colophon para').map {|p| p.remove} +s = xml.search('colophon')[0] +s.first_element_child.after(<<'XML') +Made with Creative Commons + +by Paul Stacey & Sarah Hinchliff Pearson + +© 2017 by the Creative Commons Foundation. + +Published under a Creative Commons Attribution-ShareAlike +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, +. + +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 +any purpose, even commercially, as long as you give appropriate credit, +provide a link to the license, and indicate if changes were made. If you +remix, transform, or build upon the material, you must distribute your +contributions under the same license as the original. License details: + + +Made With Creative Commons is published with the kind support of +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, '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())}