Module: Alongslide

Defined in:
lib/alongslide/syntax_error.rb,
lib/alongslide.rb,
lib/alongslide/engine.rb,
lib/alongslide/templates.rb

Overview

Custom exception class for caller to rescue.

Copyright 2013 Canopy Canopy Canopy, Inc. Author Adam Florin

Defined Under Namespace

Modules: Templates Classes: Engine, SyntaxError

Constant Summary collapse

@@parser =
nil

Class Method Summary collapse

Class Method Details

.configure(&block) ⇒ Object

Accept configuration from initializer.



23
24
25
# File 'lib/alongslide.rb', line 23

def configure(&block)
  Templates.configure &block
end

.parserObject

Get Treetop parser, init’ing if necessary.



59
60
61
# File 'lib/alongslide.rb', line 59

def parser
  @@parser ||= Grammar::RootParser.new
end

.plain_rendererObject

Plain vanilla renderer for the Markdown blocks extracted by the first renderer. (Can’t call render() on a renderer in the middle of rendering, or you’ll get Abort Traps.)



53
54
55
# File 'lib/alongslide.rb', line 53

def plain_renderer
  Redcarpet::Markdown.new Redcarpet::Render::HTML
end

.render(markdown, options = {}) ⇒ Object

Render HTML from Markdown.

Parameters:

  • locals (Hash)

    a customizable set of options

  • plain (Hash)

    a customizable set of options



33
34
35
36
37
38
39
40
41
# File 'lib/alongslide.rb', line 33

def render(markdown, options={})
  unless options[:locals].nil?
    Templates.configure do |config|
      config.locals = options[:locals]
    end
  end

  (options[:plain] ? plain_renderer : renderer).render markdown
end

.render_block(markdown) ⇒ Object

Given an indented block of Alongslide-flavored Markdown, parse and return rendered HTML including appropriate templates.

Parameters:

  • markdown

    raw Markdown containing directives and raw text.

Returns:

  • HTML for display



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/alongslide.rb', line 70

def render_block(markdown)
  rootNode = parser.parse(markdown)
  if rootNode
    return rootNode.render
  else
    error_line = markdown.split("\n")[parser.failure_line-1]
    raise SyntaxError.new "Alongslide syntax error around: \"#{error_line}\""
  end
rescue
  raise SyntaxError.new "Unknown Alongslide syntax error"
end

.rendererObject

Get Redcarpet renderer, init’ing if necessary.



45
46
47
# File 'lib/alongslide.rb', line 45

def renderer
  Redcarpet::Markdown.new(Redcarpet::Render::Alongslide, :footnotes => true)
end