class Awestruct::Tilt::AsciidoctorTemplate

Public Class Methods

engine_initialized?() click to toggle source
# File lib/awestruct/handlers/template/asciidoc.rb, line 9
def self.engine_initialized?
  defined? ::Asciidoctor::Document
end

Public Instance Methods

allows_script?() click to toggle source
# File lib/awestruct/handlers/template/asciidoc.rb, line 28
def allows_script?
  false
end
evaluate(scope, locals, &block) click to toggle source
# File lib/awestruct/handlers/template/asciidoc.rb, line 21
def evaluate(scope, locals, &block)
  if scope.class == ::Awestruct::Context
    scope[:document] = ::Asciidoctor.load(data, options) unless scope.key? :document
    @output ||= scope[:document].convert
  end
end
initialize_engine() click to toggle source
# File lib/awestruct/handlers/template/asciidoc.rb, line 13
def initialize_engine
  require_template_library 'asciidoctor'
end
parse_headers(content, filter = /.*/) click to toggle source
# File lib/awestruct/handlers/template/asciidoc.rb, line 32
def parse_headers(content, filter = /.*/)
  doc = ::Asciidoctor.load(content, {:parse_header_only => true})
  filtered = doc.attributes.select{|k,v| k =~ filter}.inject({}) do |hash, (k,v)|
    hash[k.gsub(filter, '')] = v
    hash
  end

  filtered['title'] = filtered['doctitle'] = doc.doctitle
  filtered['date'] ||= doc.attributes['revdate'] unless doc.attributes['revdate'].nil?
  if (cnt = doc.attributes['authorcount'].to_i) > 1
    authors = []
    (1..cnt).each do |idx|
      author = {}
      author[:name] = doc.attributes["author_#{idx}"]
      if doc.attributes.has_key? "email_#{idx}"
        author[:email] = doc.attributes["email_#{idx}"]
      end
      authors << author
    end
    filtered['author'] = authors.first[:name]
    filtered['email'] = authors.first[:email] if authors.first.has_key? :email
    filtered['authors'] = authors.to_yaml
  elsif !doc.attributes['author'].nil?
    author = {}
    author[:name] = doc.attributes['author']
    if doc.attributes.has_key? 'email'
      author[:email] = doc.attributes['email']
    end
    filtered['author'] = author[:name]
    filtered['authors'] = [author].to_yaml
  end

  filtered
end
prepare() click to toggle source
# File lib/awestruct/handlers/template/asciidoc.rb, line 17
def prepare
  options[:header_footer] = false if options[:header_footer].nil?
end