class Gibier::Renderer
Public Class Methods
create(name)
click to toggle source
# File lib/gibier/renderer.rb, line 27 def self.create(name) Class.new(Renderer) do def self.page_name @page_name end def self.page_name=(name) @page_name = name end def page_name self.class.page_name end end.tap{|c| c.page_name = name } end
new()
click to toggle source
Calls superclass method
# File lib/gibier/renderer.rb, line 43 def initialize super @enter_title_page = false @enter_page = false @page_count = 0 clear_list_state end
page_name()
click to toggle source
# File lib/gibier/renderer.rb, line 29 def self.page_name @page_name end
page_name=(name)
click to toggle source
# File lib/gibier/renderer.rb, line 33 def self.page_name=(name) @page_name = name end
Public Instance Methods
autolink(url, type)
click to toggle source
# File lib/gibier/renderer.rb, line 180 def autolink(url, type) "<a {href:#{url.escape}, target:\"_brank\"}>#{url}</a>" end
block_code(code, language)
click to toggle source
# File lib/gibier/renderer.rb, line 189 def block_code(code, language) clear_list_state formatter = Rouge::Formatters::HTML.new(css_class: 'highlight', line_numbers: true) lexer = case language when 'ruby' Rouge::Lexers::Ruby.new when 'javascript' Rouge::Lexers::Javascript.new else Rouge::Lexers::PlainText.new end highlight = formatter.format(lexer.lex(code)) " children << code({ dangerouslySetInnerHTML: { __html: %q{#{highlight}} } })\n" end
block_html(html)
click to toggle source
# File lib/gibier/renderer.rb, line 205 def block_html(html) clear_list_state " children << code({ dangerouslySetInnerHTML: { __html: %q{#{html}} } })\n" end
clear_list_state()
click to toggle source
# File lib/gibier/renderer.rb, line 51 def clear_list_state @enter_list = false @list_depth = 0 end
codespan(code)
click to toggle source
# File lib/gibier/renderer.rb, line 226 def codespan(code) "<code>#{code}</code>" end
double_emphasis(text)
click to toggle source
# File lib/gibier/renderer.rb, line 218 def double_emphasis(text) "<strong>#{text}</strong>" end
emphasis(text)
click to toggle source
# File lib/gibier/renderer.rb, line 214 def emphasis(text) "<i>#{text}</i>" end
header(text, header_level)
click to toggle source
# File lib/gibier/renderer.rb, line 101 def header(text, header_level) clear_list_state if header_level > 3 return " children << h#{header_level}(nil, #{text.expand_tag})\n" end "".tap do |result| if @enter_title_page || @enter_page result << <<EOD end end end EOD @enter_title_page = @enter_page = false end if header_level == 1 @enter_title_page = true @title = text.escape else @enter_page = true end result << <<EOD class Gibier::Page#{@page_count} < Gibier::PageBase def header h#{header_level}(nil, #{text.expand_tag}) end def content [].tap do |children| EOD @page_count += 1 end end
hrule()
click to toggle source
# File lib/gibier/renderer.rb, line 76 def hrule clear_list_state "".tap do |result| if @enter_title_page || @enter_page result << <<EOD end end end EOD @enter_title_page = @enter_page = false end result << <<EOD class Gibier::Page#{@page_count} < Gibier::PageBase def content [].tap do |children| EOD @enter_page = true @page_count += 1 end end
image(link, title, alt_text)
click to toggle source
# File lib/gibier/renderer.rb, line 184 def image(link, title, alt_text) href = "\#{Gibier.assets_path}/images/#{link}" "<p {class:\"#{alt_text}\"}><img {src:#{href.escape}}></img></p>" end
link(link, title, content)
click to toggle source
# File lib/gibier/renderer.rb, line 175 def link(link, title, content) link or return "<a {href:#{link.escape}, target:\"_blank\"}>#{content}</a>" end
list(text, ordered)
click to toggle source
# File lib/gibier/renderer.rb, line 166 def list(text, ordered) "".tap do |result| result << " children << ul(nil,\n" result << text.sub(/,\n\z/, "\n") result << " )\n" @enter_list = false end end
list_item(item, orderd)
click to toggle source
# File lib/gibier/renderer.rb, line 154 def list_item(item, orderd) "".tap do |result| if item =~ /.*\n +children << / result << item.sub(/(.*)\n +children << /) { " li(nil, #{$1.strip.expand_tag}),\n " }.rstrip result << ",\n" @enter_list = false else result << " li(nil, #{item.strip.expand_tag}),\n" end end end
normal_text(text)
click to toggle source
# File lib/gibier/renderer.rb, line 230 def normal_text(text) text end
page_name()
click to toggle source
# File lib/gibier/renderer.rb, line 37 def page_name self.class.page_name end
paragraph(text)
click to toggle source
# File lib/gibier/renderer.rb, line 234 def paragraph(text) lines = text.split(/ $/) if text =~ /\A%\w+:/ class_name = text[1...text.index(':')] lines[0] = lines.first[(lines.first.index(':') + 1)...lines.first.length].lstrip " children << p({className:\"#{class_name}\"}, #{lines.map{|l| l.expand_tag}.join(',Hyalite.create_element(\'br\'),')})\n" else " children << p(nil, #{lines.map{|l| l.expand_tag}.join(',Hyalite.create_element(\'br\'),')})\n" end end
raw_html(html)
click to toggle source
# File lib/gibier/renderer.rb, line 210 def raw_html(html) html end
stikethrough(text)
click to toggle source
# File lib/gibier/renderer.rb, line 222 def stikethrough(text) "<s>#{text}</s>" end
table(header, body)
click to toggle source
# File lib/gibier/renderer.rb, line 245 def table(header, body) code = <<-CODE children << table(nil, tr(nil, *[ #{header.split("\t").map{|c| "th(nil, #{c.expand_tag})"}.join(",\n")} ] ), *[ #{body.split("\n").map{|row| "tr(nil, [#{row.split("\t").map{|c| "td(nil, #{c.expand_tag})"}.join(", ")}])" }.join(",\n")} ] ) CODE code end
table_cell(content, alignment)
click to toggle source
# File lib/gibier/renderer.rb, line 265 def table_cell(content, alignment) content + "\t" end
table_row(content)
click to toggle source
# File lib/gibier/renderer.rb, line 261 def table_row(content) content + "\n" end