module Grokdown::Creating
Public Class Methods
extended(base)
click to toggle source
# File lib/grokdown/creating.rb, line 6 def self.extended(base) base.send(:include,InstanceMethods) end
Public Instance Methods
build(node)
click to toggle source
# File lib/grokdown/creating.rb, line 18 def build(node) if @create args = begin @create.call(node) rescue NoMethodError => e raise Error, "cannot find #{e.name} from #{node.to_commonmark.inspect} at #{node.sourcepos[:start_line]} in #{self} create block" rescue CommonMarker::NodeError => e raise Error, "could not get string content from #{node.to_commonmark.inspect} at #{node.sourcepos[:start_line]} in #{self} create block" end _build(args) {|i| i.node=node } else new.tap do |i| i.node=node end end end
create(many: false, &block)
click to toggle source
# File lib/grokdown/creating.rb, line 13 def create(many: false, &block) @create = block @create_many = many end
Private Instance Methods
_build(args,recurse=true,&block)
click to toggle source
# File lib/grokdown/creating.rb, line 34 def _build(args,recurse=true,&block) case args when Hash if self < Hash new.merge!(args).tap(&block) else new(**args).tap(&block) end when Array if @create_many && recurse args.map {|i| _build(i,false,&block) } else if self < Array new(args).tap(&block) else new(*args).tap(&block) end end else new(*args).tap(&block) end end