]> pere.pagekite.me Git - text-madewithcc.git/blobdiff - fixup-docbook.rb
Termino de corregir "procomĂșn" por "bienes comunes"
[text-madewithcc.git] / fixup-docbook.rb
index 0d3b5ccba597519c1f2305ba1386527f38ecc32a..d568f216e8f40af8db2d53a688c5d1233f2b65e1 100755 (executable)
@@ -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')
-<publisher>
-    <publishername>Gunnar Wolf</publishername>
-    <address><city>Mexico City</city></address>
-</publisher>
-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')
 <copyright>
     <year>2017</year>
     <holder>Creative Commons</holder>
 </copyright>
+XML
+  node.last_element_child.after(<<'XML')
+<publisher>
+    <publishername>Gunnar Wolf</publishername>
+    <address><city>Mexico City</city></address>
+</publisher>
 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 <partintro>'
-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('<partintro>')
   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 <partintro> 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('<legalnotice>')
-ln = xml.css('book bookinfo legalnotice')[0]
+xml.css('book info')[0].last_element_child.after('<legalnotice>')
+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')
-<para>Made With Creative Commons</para>
+<para>Made with Creative Commons</para>
 
 <para>by Paul Stacey & Sarah Hinchliff Pearson</para>
 
@@ -114,15 +118,18 @@ license (CC BY-SA), version 4.0.</para>
 <para>ISBN: YET-TO-BE-DECIDED (PDF), YET-TO-BE-DECIDED (ePub),
 YET-TO-BE-DECIDED (Paperback) </para>
 
-<para>Illustrations by Bryan Mathers, <ulink url="https://bryanmathers.com/"/></para>
+<para>Illustrations by Bryan Mathers,
+<ulink url="https://bryanmmathers.com/"/>.</para>
 
 <para>Publisher: Gunnar Wolf.</para>
 
-<!-- space for information about translators -->
-<para>&nbsp;</para>
+<para>
+<!--space for information about translators-->
+&nbsp;
+</para>
 
 <para>Downloadable e-book available at
-<ulink url="https://madewith.cc/"/></para>
+<ulink url="https://madewith.cc/"/>.</para>
 
 <para>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 +143,36 @@ contributions under the same license as the original. License details:
 Creative Commons and backers of our crowdfunding-campaign on the
 Kickstarter.com platform.</para>
 
+<para>This edition of the book is maintained on
+<ulink url="https://gitlab.com/gunnarwolf/madewithcc-es/"/>, and the
+translations are maintained on
+<ulink url="https://hosted.weblate.org/projects/madewithcc/"/>.  If
+you find any error in the book, please let us know via gitlab.</para>
+
+<para>
+Classifications:
+</para>
+
+<para>
+(Dewey) 346.048, 347.78
+</para>
+
+<para>
+(UDK) ?
+</para>
+
+<para>
+(US Library of Congress) Z286 O63 S73 2017
+</para>
+
+<para>
+(Melvil) 025.523
+</para>
+
+<para>
+(ACM CRCS) ?
+</para>
+
 XML
 
 log 0, 'remove title from colophon'
@@ -147,7 +184,31 @@ xml.css('figure mediaobject imageobject imagedata[width="40.0%"]').each do |id|
   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 <URL: https://bugs.debian.org/891183 >.
+if false
+log 0, 'migrate chapter author into <chapterinfo> 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])
+      <chapterinfo>
+       <author>
+         <firstname>%s</firstname><surname>%s</surname>
+       </author>
+      </chapterinfo>
+XML
+    para.remove
+  end
+end
+end
+
+log 0, 'Writing processed file (%s)' % dstfile
+File.open(dstfile, 'w') {|f| f.write(xml.to_xml())}