Class: Elisp2any::HTMLRenderer
- Inherits:
-
Object
- Object
- Elisp2any::HTMLRenderer
- Extended by:
- Forwardable
- Defined in:
- lib/elisp2any/html_renderer.rb
Instance Method Summary collapse
-
#initialize(file, css: nil, mode:) ⇒ HTMLRenderer
constructor
A new instance of HTMLRenderer.
-
#render(node = nil) ⇒ Object
Write gradually?.
Constructor Details
#initialize(file, css: nil, mode:) ⇒ HTMLRenderer
Returns a new instance of HTMLRenderer.
11 12 13 14 15 |
# File 'lib/elisp2any/html_renderer.rb', line 11 def initialize(file, css: nil, mode:) @file = file @css = css || "https://unpkg.com/mvp.css" @mode = mode end |
Instance Method Details
#render(node = nil) ⇒ Object
Write gradually?
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/elisp2any/html_renderer.rb', line 18 def render(node = nil) if node case node in Paragraph par = node.sum(+"") { |line| render(line) } "<p>#{par}</p>" in Line begin node.sum(+"") { |chunk| render(chunk) } rescue => e warn node.inspect raise e end in String h(node) in [] # huh? nop. in Section result = render(node.heading) node.blocks.each { |blo| result << render(blo) } node.sections.each { |sec| result << render(sec) } result in Heading[level:, content:] lev = level + 2 "<h#{lev}>#{render(content)}</h#{lev}>" in Codeblock "<pre><code>#{h(node.source.chomp)}</code></pre>" in { code: } "<code>#{h(code)}</code>" in Hash result = node.sum(+"<dl>") do |key, value| "<dt>#{render(key)}</dt><dd>#{render(value)}</dd>" end "#{result}</dl>" in Expression "<code>#{h(node.source)}</code>" in Text node.sum(+"") { |ele| render(ele) } else raise Error, node.inspect end else case @mode in :old erb_render('index.html.erb') in :new source = ::File.read(::File.join(__dir__, 'html_renderer.erb')) ERB.new(source).result(binding) end end end |