class Kitchen::ElementFactory
Builds Elements from Nokogiri
Nodes
Constants
- ELEMENT_CLASSES
Public Class Methods
build_from_node(node:, document:, element_class: nil, default_short_type: nil, detect_element_class: false)
click to toggle source
Builds a new concrete subclass of ElementBase
for the provided node.
@param node [Nokogiri::XML::Node] the node to wrap in an element @param document [Document] the document @param element_class [ElementBase] actually a subclass of ElementBase
to
use when wrapping the node.
@param default_short_type [Symbol, String] if we are making an instance
of an element class where we know the short_type we'll use that; otherwise we'll make an Element instance and use this argument as the short_type.
@param detect_element_class [Boolean] if true and element_class
is not given,
attempts to detect the element class from the node
@return [ElementBase] actually a subclass of ElementBase
# File lib/kitchen/element_factory.rb, line 23 def self.build_from_node(node:, document:, element_class: nil, default_short_type: nil, detect_element_class: false) element_class ||= detect_element_class ? find_element_class(node, document.config) : Element if element_class == Element element_class.new(node: node, document: document, short_type: default_short_type) else element_class.new(node: node, document: document) end end
find_element_class(node, config)
click to toggle source
# File lib/kitchen/element_factory.rb, line 40 def self.find_element_class(node, config) ELEMENT_CLASSES.find do |klass| klass.is_the_element_class_for?(node, config: config) end || Element end