class Mdoc::Pipeline
Attributes
processors[R]
writer[RW]
Public Class Methods
new(ary = [])
click to toggle source
# File lib/mdoc/pipeline.rb, line 6 def initialize(ary = []) @processors = [] append ary end
Public Instance Methods
append(prc)
click to toggle source
# File lib/mdoc/pipeline.rb, line 37 def append(prc) prc = get_prc(prc) prc.each { |p| @processors << p } end
apply!(document)
click to toggle source
recursively apply processors to document
# File lib/mdoc/pipeline.rb, line 53 def apply!(document) @processors.each do |pn| prc = Mdoc.get_processor(pn) prc.new.pre_processors.each { |p| document.apply!(p) } document.apply!(prc) prc.new.post_processors.each { |p| document.apply!(p) } end writer.new.process!(document) end
enabled?(prc)
click to toggle source
# File lib/mdoc/pipeline.rb, line 47 def enabled?(prc) prc = get_prc(prc) @processors.include(prc) end
get_offset(opts)
click to toggle source
from :before, :after, calculate insert offset
# File lib/mdoc/pipeline.rb, line 27 def get_offset(opts) phash = Hash[@processors.map.with_index.to_a] if opts[:before] offset = phash[Mdoc.get_processor(opts[:before])] elsif opts[:after] offset = phash[Mdoc.get_processor(opts[:after])] + 1 end offset end
get_prc(prc)
click to toggle source
get processor class in name
# File lib/mdoc/pipeline.rb, line 12 def get_prc(prc) prc = [prc] unless prc.is_a?(Array) prc.map { |pn| Mdoc.get_processor(pn) } end
insert(prc, opts = {})
click to toggle source
# File lib/mdoc/pipeline.rb, line 17 def insert(prc, opts = {}) prc = get_prc(prc) raise 'can not set before with after' if opts[:before] && opts[:after] ankor = opts[:before] || opts[:after] offset = get_offset(opts) if ankor ankor ? @processors.insert(offset, *prc) : @processors = prc.concat(@processors) end
remove(prc)
click to toggle source
# File lib/mdoc/pipeline.rb, line 42 def remove(prc) prc = get_prc(prc) prc.map { |pn| @processors.delete(pn) } end