# File lib/asciidoctor/block.rb, line 50 def initialize parent, context, opts = {} super @content_model = opts[:content_model] || DEFAULT_CONTENT_MODEL[context] if opts.key? :subs # FIXME feels funky; we have to be defensive to get lock_in_subs to honor override # FIXME does not resolve substitution groups inside Array (e.g., [:normal]) if (subs = opts[:subs]) # e.g., :subs => :defult # subs attribute is honored; falls back to opts[:default_subs], then built-in defaults based on context if subs == :default @default_subs = opts[:default_subs] # e.g., :subs => [:quotes] # subs attribute is not honored elsif ::Array === subs @default_subs = subs.dup @attributes.delete 'subs' # e.g., :subs => :normal or :subs => 'normal' # subs attribute is not honored else @default_subs = nil # interpolation is the fastest way to dup subs as a string @attributes['subs'] = %(#{subs}) end # resolve the subs eagerly only if subs option is specified lock_in_subs # e.g., :subs => nil else @subs = [] # prevent subs from being resolved @default_subs = [] @attributes.delete 'subs' end # defer subs resolution; subs attribute is honored else @subs = [] # QUESTION should we honor :default_subs option (i.e., @default_subs = opts[:default_subs])? @default_subs = nil end if (raw_source = opts[:source]).nil_or_empty? @lines = [] elsif ::String === raw_source @lines = Helpers.normalize_lines_from_string raw_source else @lines = raw_source.dup end end