Class: Jekyll::Converters::AsciiDocConverter
- Inherits:
-
Converter
- Object
- Converter
- Jekyll::Converters::AsciiDocConverter
- Defined in:
- lib/jekyll-asciidoc.rb
Constant Summary collapse
- IMPLICIT_ATTRIBUTES =
%W( env=site env-site site-gen=jekyll site-gen-jekyll builder=jekyll builder-jekyll jekyll-version=#{Jekyll::VERSION} )
Instance Method Summary collapse
- #convert(content) ⇒ Object
-
#initialize(config) ⇒ AsciiDocConverter
constructor
A new instance of AsciiDocConverter.
- #load_header(content) ⇒ Object
- #matches(ext) ⇒ Object
- #output_ext(ext) ⇒ Object
- #setup ⇒ Object
Constructor Details
#initialize(config) ⇒ AsciiDocConverter
Returns a new instance of AsciiDocConverter.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/jekyll-asciidoc.rb', line 15 def initialize(config) @config = config config['asciidoc'] ||= 'asciidoctor' asciidoc_ext = (config['asciidoc_ext'] ||= 'asciidoc,adoc,ad') config['asciidoc_ext_re'] = Regexp.new("\.(#{asciidoc_ext.tr ',', '|'})$", Regexp::IGNORECASE) config['asciidoc_page_attribute_prefix'] ||= 'page' unless (asciidoctor_config = (config['asciidoctor'] ||= {})).frozen? # NOTE convert keys to symbols asciidoctor_config.keys.each do |key| asciidoctor_config[key.to_sym] = asciidoctor_config.delete(key) end asciidoctor_config[:safe] ||= 'safe' (asciidoctor_config[:attributes] ||= []).tap do |attributes| attributes.unshift('notitle', 'hardbreaks', 'idprefix', 'idseparator=-', 'linkattrs') attributes.concat(IMPLICIT_ATTRIBUTES) end asciidoctor_config.freeze end end |
Instance Method Details
#convert(content) ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/jekyll-asciidoc.rb', line 62 def convert(content) setup case @config['asciidoc'] when 'asciidoctor' Asciidoctor.convert(content, @config['asciidoctor']) else warn 'Unknown AsciiDoc converter. Passing through raw content.' content end end |
#load_header(content) ⇒ Object
73 74 75 76 77 78 79 80 81 82 |
# File 'lib/jekyll-asciidoc.rb', line 73 def load_header(content) setup case @config['asciidoc'] when 'asciidoctor' Asciidoctor.load(content, parse_header_only: true) else warn 'Unknown AsciiDoc converter. Cannot load document header.' nil end end |
#matches(ext) ⇒ Object
54 55 56 |
# File 'lib/jekyll-asciidoc.rb', line 54 def matches(ext) ext =~ @config['asciidoc_ext_re'] end |
#output_ext(ext) ⇒ Object
58 59 60 |
# File 'lib/jekyll-asciidoc.rb', line 58 def output_ext(ext) '.html' end |
#setup ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/jekyll-asciidoc.rb', line 35 def setup return if @setup @setup = true case @config['asciidoc'] when 'asciidoctor' begin require 'asciidoctor' unless defined? ::Asciidoctor rescue LoadError STDERR.puts 'You are missing a library required to convert AsciiDoc files. Please run:' STDERR.puts ' $ [sudo] gem install asciidoctor' raise FatalException.new('Missing dependency: asciidoctor') end else STDERR.puts "Invalid AsciiDoc processor: #{@config['asciidoc']}" STDERR.puts ' Valid options are [ asciidoctor ]' raise FatalException.new("Invalid AsciiDoc processor: #{@config['asciidoc']}") end end |