class KramdownRFC::ParameterSet
Attributes
av[R]
f[R]
Public Class Methods
new(y)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 7 def initialize(y) raise "*** invalid parameter set #{y.inspect}" unless Hash === y @f = y @av = {} end
Public Instance Methods
[](pn)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 13 def [](pn) @f.delete(pn.to_s) end
[]=(pn, val)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 16 def []=(pn, val) @f[pn.to_s] = val end
arr(an, converthash=true, must_have_one=false, &block)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 82 def arr(an, converthash=true, must_have_one=false, &block) arr = self[an] || [] arr = [arr] if Hash === arr && converthash arr << { } if must_have_one && arr.empty? Array(arr).each(&block) end
attr(pn)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 40 def attr(pn) val, an = van(pn) @av[an.intern] = val %{#{an}="#{escattr(val)}"} if val # see attrtf below end
attrs(*pns)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 45 def attrs(*pns) pns.map{ |pn| attr(pn) if pn }.compact.join(" ") end
attrstf(*pns)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 53 def attrstf(*pns) pns.map{ |pn| attrtf(pn) if pn }.compact.join(" ") end
attrtf(pn)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 48 def attrtf(pn) # can do an overriding false value val, an = van(pn) @av[an.intern] = val %{#{an}="#{escattr(val)}"} unless val.nil? end
default(pn, &block)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 19 def default(pn, &block) @f.fetch(pn.to_s, &block) end
default!(pn, value)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 22 def default!(pn, value) default(pn) { @f[pn.to_s] = value } end
ele(pn, attr=nil, defcontent=nil, markdown=false)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 56 def ele(pn, attr=nil, defcontent=nil, markdown=false) val, an = van(pn) val ||= defcontent val = [val] if Hash === val Array(val).map do |val1| a = Array(attr).dup if Hash === val1 val1.each do |k, v| if k == ":" val1 = v else k = Kramdown::Element.attrmangle(k) || k a.unshift(%{#{k}="#{escattr(v)}"}) end end end v = val1.to_s.strip contents = if markdown ::Kramdown::Converter::Rfc2629::process_markdown(v) else escape_html(v) end %{<#{[an, *a.map(&:to_s)].join(" ").strip}>#{contents}</#{an}>} end.join(" ") end
escattr(str)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 33 def escattr(str) escape_html(str.to_s, :attribute) end
has(pn)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 27 def has(pn) @f[pn.to_s] end
has?(pn)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 30 def has?(pn) @f.key?(pn.to_s) end
rest()
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 88 def rest @f end
van(pn)
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 36 def van(pn) # pn is a parameter name, possibly with =aliases names = pn.to_s.split("=") [self[names.reverse.find{|nm| has?(nm)}], names.first] end
warn_if_leftovers()
click to toggle source
# File lib/kramdown-rfc/parameterset.rb, line 91 def warn_if_leftovers if !@f.empty? warn "*** attributes left #{@f.inspect}!" end end