class Hyaslide::Renderer
Public Class Methods
create(name)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 23 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/hyaslide/render_hyaslide.rb, line 39 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/hyaslide/render_hyaslide.rb, line 25 def self.page_name @page_name end
page_name=(name)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 29 def self.page_name=(name) @page_name = name end
Public Instance Methods
block_code(code, language)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 181 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/hyaslide/render_hyaslide.rb, line 197 def block_html(html) clear_list_state " children << code({ dangerouslySetInnerHTML: { __html: %q{#{html}} } })\n" end
clear_list_state()
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 47 def clear_list_state @enter_list = false @list_depth = 0 end
double_emphasis(*args)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 206 def double_emphasis(*args) "<strong>#{args.first}</strong>" end
emphasis(*args)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 202 def emphasis(*args) "# #{args}" end
header(text, header_level)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 98 def header(text, header_level) clear_list_state if header_level > 3 return " children << h#{header_level}(nil, #{text.escape})\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 Hyaslide::Page#{@page_count} < Hyaslide::PageBase def header h#{header_level}(nil, #{text.escape}) end def content [].tap do |children| EOD @page_count += 1 end end
hrule()
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 73 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 Hyaslide::Page#{@page_count} < Hyaslide::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/hyaslide/render_hyaslide.rb, line 176 def image(link, title, alt_text) href = "assets/#{page_name}/images/#{link}" "<img>{className: \"#{alt_text}\", src: #{href.escape}}</img>" end
link(link, title, content)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 172 def link(link, title, content) "<a>{href: #{link.escape}, target: \"_blank\"}, #{content.escape}</a>" end
list(text, ordered)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 163 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/hyaslide/render_hyaslide.rb, line 151 def list_item(item, orderd) "".tap do |result| if item =~ /.*\n +children << / result << item.sub(/(.*)\n +children << /) { " li(nil, #{$1.strip.escape}),\n " }.rstrip result << ",\n" @enter_list = false else result << " li(nil, #{item.strip.escape}),\n" end end end
page_name()
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 33 def page_name self.class.page_name end
paragraph(text)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 210 def paragraph(text) lines = text.split(/ $/) if text[0] == '%' 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.escape}.join(',Hyalite.create_element(\'br\'),')})\n" else " children << p(nil, #{lines.map{|l| l.escape}.join(',Hyalite.create_element(\'br\'),')})\n" end end
table(header, body)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 221 def table(header, body) "#{header}#{body}" end
table_cell(content, alignment)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 229 def table_cell(content, alignment) content + "\t" end
table_row(content)
click to toggle source
# File lib/hyaslide/render_hyaslide.rb, line 225 def table_row(content) content + "\n" end