]> pere.pagekite.me Git - text-madewithcc.git/commitdiff
Revert "Fixed fixup-docbook.rb, as changes in Nokogiri rendered it useless",
authorPetter Reinholdtsen <pere@hungry.com>
Fri, 7 Sep 2018 06:17:00 +0000 (06:17 +0000)
committerPetter Reinholdtsen <pere@hungry.com>
Fri, 7 Sep 2018 06:17:00 +0000 (06:17 +0000)
The real problem was that pandoc suddenly started generating docbook 5
files by default.  We need docbook 4.

This reverts commit 9053be44ba67f2816ea16ea85b5251bf1172c144.

fixup-docbook.rb

index d568f216e8f40af8db2d53a688c5d1233f2b65e1..7ed81df2f024c7ffe6494a9d5fcbdc8748b9f1a7 100755 (executable)
@@ -21,16 +21,15 @@ def log(level,what)
 end
 
 def partreplace(xml, partid, tag)
-  xml.css('part').select {|p| p.attributes['id'].value == partid}.each do |part|
+  xml.css('part[id=' + partid + ']').each do |part|
     part.name = tag
   end
 end
 
 
 log 0, 'replace article* with book*'
-xml.children[0].name = 'book'
-xml.children[1].name = 'book'
-xml.css('info').each do |node|
+xml.css('articleinfo').each do |node|
+  node.name = 'bookinfo'
   node.last_element_child.after(<<'XML')
 <copyright>
     <year>2017</year>
@@ -58,16 +57,13 @@ partreplace(xml, 'bibliography', 'chapter')
 partreplace(xml, 'acknowledgments', 'chapter')
 
 log 0, 'place part introduction into <partintro>'
-s = xml.search('part title').select {|tit| tit.content =~ /The Case Studies/}[0]
-
+s = xml.xpath("//part/title[text()='The Case Studies']")[0]
 if s
   s.after('<partintro>')
   p = xml.css('part partintro')[0]
-  s.parent.children.select{|c| c.name == 'para'}.each do |node|
+  s.parent.xpath("//part/para").each do |node|
     node.parent = p
   end
-else
-  log 0, 'Adding <partintro> failed!'
 end
 
 
@@ -77,7 +73,7 @@ log 0, 'remove empty notes/web links sections'
   'Web links',
   'Web link',
 ].each do |title|
-  xml.search('title').select  {|t| t.content == title}.each do |node|
+  xml.xpath("//title[text()='%s']" % title).each do |node|
     p = node.parent
     node.remove
     if p.content =~ /^\s*$/
@@ -92,8 +88,8 @@ log 0, 'remove title from dedication'
 xml.css('dedication title')[0].content = ""
 
 log 0, 'move legal notice to bookinfo'
-xml.css('book info')[0].last_element_child.after('<legalnotice>')
-ln = xml.css('book info legalnotice')[0]
+xml.css('book bookinfo')[0].last_element_child.after('<legalnotice>')
+ln = xml.css('book bookinfo legalnotice')[0]
 xml.css('para').each do |para|
   if para.content =~ /This book is published under a/
     log 0, 'found legal'
@@ -103,8 +99,8 @@ xml.css('para').each do |para|
 end
 
 log 0, 'replace colophon page with one for this edition'
- xml.search('colophon para').map {|p| p.remove}
-s = xml.search('colophon')[0]
+ xml.xpath('//colophon/para').remove
+s = xml.xpath('//colophon')[0]
 s.first_element_child.after(<<'XML')
 <para>Made with Creative Commons</para>
 
@@ -210,5 +206,7 @@ XML
 end
 end
 
-log 0, 'Writing processed file (%s)' % dstfile
-File.open(dstfile, 'w') {|f| f.write(xml.to_xml())}
+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)}