Class: Jekyll::Converters::AsciiDocConverter

Inherits:
Converter
  • Object
show all
Defined in:
lib/jekyll-asciidoc.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ AsciiDocConverter

Returns a new instance of AsciiDocConverter.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/jekyll-asciidoc.rb', line 11

def initialize(config)
  @config = config
  @config['asciidoc'] ||= 'asciidoctor'
  @config['asciidoc_ext'] ||= 'asciidoc,adoc,ad'
  @asciidoctor_config = (@config['asciidoctor'] ||= {})
  # convert keys to symbols
  @asciidoctor_config.keys.each do |key|
    @asciidoctor_config[key.to_sym] = @asciidoctor_config.delete(key)
  end
  @asciidoctor_config[:safe] ||= 'safe'
  user_defined_attributes = @asciidoctor_config[:attributes]
  @asciidoctor_config[:attributes] = %w(notitle hardbreaks idprefix= idseparator=- linkattrs)
  unless user_defined_attributes.nil?
    @asciidoctor_config[:attributes].concat(user_defined_attributes)
  end
  @asciidoctor_config[:attributes].push('env-jekyll')
end

Instance Method Details

#convert(content) ⇒ Object



58
59
60
61
62
63
64
65
66
67
# File 'lib/jekyll-asciidoc.rb', line 58

def convert(content)
  setup
  case @config['asciidoc']
  when 'asciidoctor'
    Asciidoctor.render(content, @config['asciidoctor'])
  else
    warn 'Unknown AsciiDoc converter. Passing through raw content.'
    content
  end
end

#load(content) ⇒ Object



69
70
71
72
73
74
75
76
77
78
# File 'lib/jekyll-asciidoc.rb', line 69

def load(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



49
50
51
52
# File 'lib/jekyll-asciidoc.rb', line 49

def matches(ext)
  rgx = "\.(#{@config['asciidoc_ext'].tr ',', '|'})$"
  ext =~ Regexp.new(rgx, Regexp::IGNORECASE)
end

#output_ext(ext) ⇒ Object



54
55
56
# File 'lib/jekyll-asciidoc.rb', line 54

def output_ext(ext)
  '.html'
end

#setupObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/jekyll-asciidoc.rb', line 29

def setup
  return if @setup
  case @config['asciidoc']
    when 'asciidoctor'
      begin
        require 'asciidoctor'
        @setup = true
      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 process: #{@config['asciidoc']}")
  end
  @setup = true
end