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
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