Sha256: fd0103b2127dcf1596362aade5b3f0d434aff1808e592fb6df42ab287fae06e7
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
require "pandoc_object_filters" module PandocObjectFilters module V1_16 module Element class Attr < PandocObjectFilters::V1_16::Element::Base module Behavior def self.included(other) other.contents_attr :identifier, 0 other.contents_attr :classes, 1 other.contents_attr :key_values, 2 other.extend ClassMethods end module ClassMethods def build(options = {}) id = options.fetch(:identifier, "") classes = options.fetch(:classes, []) key_values = options.fetch(:key_values, []) key_values = key_values.to_a if key_values.is_a?(Hash) new([id, classes, key_values]) end end def [](key) # NOTE: While this pseudo Hash implementations are inefficient, they # guarantee any changes to key_values will be honored, which would be # difficult if the key_values were cached in a Hash result = key_values.find { |pair| pair.first == key } || [] result[1] end def []=(key, value) found = key_values.find { |pair| pair.first == key } if found found[1] = value else key_values << [key, value] end end def include?(key) !!key_values.find { |pair| pair.first == key } end end include Behavior end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pandoc_object_filters-0.2.0 | lib/pandoc_object_filters/v1_16/element/attr.rb |