X-Git-Url: https://pere.pagekite.me/gitweb/text-madewithcc.git/blobdiff_plain/b91fe53d00bbeb29561b5c00566c81cac6407ddd..0d3fc6baf65fcdb84bb6c71cb4b3ecbd13d705ef:/fixup-docbook.rb diff --git a/fixup-docbook.rb b/fixup-docbook.rb index 9981339..329d599 100755 --- a/fixup-docbook.rb +++ b/fixup-docbook.rb @@ -30,17 +30,17 @@ 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') + node.last_element_child.after(<<'XML') 2017 Creative Commons +XML + node.last_element_child.after(<<'XML') + + Instituto de Investigaciones Económicas +
Universidad Nacional Autónoma de México
+
XML end xml.css('article').each do |node| @@ -85,10 +85,51 @@ log 0, 'remove empty notes/web links sections' end log 0, 'remove title from dedication' -xml.css('dedication title')[0].content = "" +if ! xml.css('dedication title').empty? + xml.css('dedication title')[0].content = "" +end + +log 0, 're-styling dedication, preface and introduction authors' +xml.css('dedication').each do |ded| +# Take content out of the quote marks, and into the blockquote + quote = ded.css('quote').first + auth = ded.css('itemizedlist').first + quote_c = quote.content + auth_c = auth.content + # Styling the attribution (including the introducing hyphen) should + # be left to the following layers + auth_c.gsub!(/\s+/, ' ') + c = ded.css('quote').first.content + quote.parent.remove # remove the '' containing the quote + auth.remove + ded.last_element_child.after('
%s%s
' % + [quote_c, auth_c]) +end + +%w(preface#foreword preface#introduction).each do |spec| + sect = xml.css(spec)[0] + paras = sect.css('para emphasis') + auth = '
' + auth += paras.map{|p| p.content}.join('') + auth += '
' + sect.last_element_child.after(auth) + paras.each {|i| i.parent.remove} # Remove both the 'emphasis' and its parent 'para' +end + +auth = xml.css('chapter')[0].css('para')[0] +auth.content =~ /^\s*Paul Stacey\s*$/ or + raise RuntimeError, 'Error finding author name in chapter 1 -- ' + auth.content +auth.before('
Paul Stacey
') +auth.remove + +auth = xml.css('chapter')[1].css('para')[0] +auth.content =~ /^\s*Sarah Hinchliff Pearson.*$/ or + raise RuntimeError, 'Error finding author name in chapter 2 -- ' + auth.content +auth.before('
Sarah Hinchliff Pearson
') +auth.remove log 0, 'move legal notice to bookinfo' -xml.css('book bookinfo')[0].first_element_child.before('') +xml.css('book bookinfo')[0].last_element_child.after('') ln = xml.css('book bookinfo legalnotice')[0] xml.css('para').each do |para| if para.content =~ /This book is published under a/ @@ -102,7 +143,7 @@ log 0, 'replace colophon page with one for this edition' xml.xpath('//colophon/para').remove s = xml.xpath('//colophon')[0] s.first_element_child.after(<<'XML') -Made With Creative Commons +Made with Creative Commons by Paul Stacey & Sarah Hinchliff Pearson @@ -114,15 +155,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,6 +180,36 @@ 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 or Weblate. + + +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' @@ -154,6 +228,34 @@ xml.css('figure').each do |fig| seq = seq + 1 end +log 0, 'Set epigraph line in each case study' +xml.css('blockquote para').select {|p| p.inner_text =~ /Profile written by/}.each do |epi| + p = epi.parent + by = epi.inner_text + epi.remove + p.last_element_child.after('%s' % by) +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' # Unable to figure out API way to replace DOCTYPE data = xml.to_xml().gsub!(/DOCTYPE article/, 'DOCTYPE book')