Sha256: 754398cd1a0fd630db96ccd8dabffc668be045c6babc7a7046fcd3377d2f4cb6

Contents?: true

Size: 1.93 KB

Versions: 17

Compression:

Stored size: 1.93 KB

Contents

require 'tilt'
require 'asciidoctor'

module Awestruct
  module Tilt
    class AsciidoctorTemplate < ::Tilt::Template
      self.default_mime_type = 'text/html'

      def self.engine_initialized?
        defined? ::Asciidoctor::Document
      end

      def initialize_engine
        require_template_library 'asciidoctor'
      end

      def prepare
        options[:header_footer] = false if options[:header_footer].nil?
      end

      def evaluate(scope, locals, &block)
        @output ||= ::Asciidoctor.render(data, options, &block)
      end

      def allows_script?
        false
      end

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

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
awestruct-0.5.7 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.7.RC2 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.7.RC1 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta9 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta8 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta7 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta6 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta5 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta4 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta3 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta2 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.6.beta lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.5 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.4.2 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.4.1 lib/awestruct/handlers/template/asciidoc.rb
awestruct-0.5.4 lib/awestruct/handlers/template/asciidoc.rb