diff --git a/header.html b/header.html index 7cfc283..abb012a 100644 --- a/header.html +++ b/header.html @@ -3,6 +3,6 @@ - + diff --git a/lib/convert.rb b/lib/convert.rb index 8a1676a..e952bda 100644 --- a/lib/convert.rb +++ b/lib/convert.rb @@ -1,11 +1,16 @@ require 'eeepub' require 'nokogiri' +require 'pygments' class Convert def self.run toc # Join the forces! - doc = (['header', 'out', 'footer'].map {|f| File.read(f + '.html')}).join + doc = (['header', 'cache/out', 'footer'].map {|f| File.read(f + '.html')}).join toc = self.parse_toc toc + # doc = self.highlight doc + + File.write('cache/joined.html', doc) + epub = EeePub.make do title 'Vala Tutorial' creator 'Gnome' @@ -14,12 +19,22 @@ def self.run toc identifier 'https://github.com/bliker/vala-tutorial-book', :scheme => 'URL' uid 'https://github.com/bliker/vala-tutorial-book' - files ['cache/out.html', 'css/css/base.css'] + files ['cache/joined.html', 'style.css'] nav toc end epub.save('Vala Tutorial.epub') end + # Not jet implemented + def self.highlight doc + doc = Nokogiri::HTML(doc) + doc.css('pre').each do |pre| + pre.content = Pygments.highlight(pre.text, :lexer => 'vala') + end + + doc.to_html + end + def self.parse_toc doc doc = Nokogiri::HTML(doc) self.mush_ol(doc.css('body > ol')) @@ -28,7 +43,7 @@ def self.parse_toc doc def self.mush_li li data = { :label => li.css('> a').text, - :content => 'out.html' + li.css('a').attr('href') + :content => 'joined.html' + li.css('a').attr('href') } unless li.css('ol').empty? data[:nav] = self.mush_ol(li.css('ol')) diff --git a/style.css b/style.css new file mode 100644 index 0000000..396e1b0 --- /dev/null +++ b/style.css @@ -0,0 +1,62 @@ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, +dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, +sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, +label, legend, table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; } + +/* end reset */ + +@page { + margin: 5px !important; +} + +pre { + white-space: pre-wrap; + font-family: monospace; + margin: 10px 0 10px 20px; + font-size: 85%; + display: block; + -webkit-hyphens: none; + hyphens: none; + adobe-hyphenate: none; +} + +h1 { + font-size: 1.5em; + font-weight: bold; + margin-top: 20px !important; +} + +h2 { + font-size: 1.3em; + font-weight: bold; + color: #333; + margin: 15px 0 8px 0 !important; +} + +h3 { + font-size: 1.1em; + font-weight: bold; + margin: 10px 0 8px 0 !important; +} + +h4 { + font-size: bold; + font-weight: 1em; + color: #555; + margin: 9px 0 !important; +} + +h1, h2, h3, h4, h5 { + -webkit-hyphens: none; + hyphens: none; + font-family: Helvetica, Arial, sans-serif; + adobe-hyphenate: none; +} \ No newline at end of file