lib/undies/node.rb in undies-2.2.0 vs lib/undies/node.rb in undies-2.2.1

- old
+ new

@@ -1,30 +1,81 @@ module Undies class Node - # have as many methods to the class level as possilbe to keep from + # have as many methods to the class level as possible to keep from # polluting the public instance methods and to maximize the effectiveness # of the Element#method_missing logic + def self.start_tag(node) + node.instance_variable_get("@start_tag") || "" + end + + def self.end_tag(node) + node.instance_variable_get("@end_tag") || "" + end + + def self.set_start_tag(node); end + def self.set_end_tag(node); end + + def self.builds(node) + node.instance_variable_get("@builds") || [] + end + + def self.add_build(node, build_block) + node.instance_variable_set("@builds", builds(node) + [build_block]) + end + + def self.children(node) + node.instance_variable_get("@children") + end + + def self.set_children(node, value) + node.instance_variable_set("@children", value) + end + + def self.attrs(element) + element.instance_variable_get("@attrs") + end + + def self.merge_attrs(element, value={}) + attrs(element).merge(value).tap do |a| + element.instance_variable_set("@attrs", a) + end + end + + def self.node_name(node) + node.instance_variable_get("@name") || "" + end + def self.content(node) - node.instance_variable_get("@content") + node.instance_variable_get("@content") || "" end - def self.flush(output, node) - output.pp_use_indent = true if node.force_pp? - output << self.content(node) + def self.mode(node) + node.instance_variable_get("@mode") || :inline end - def initialize(content, opts={}) + def self.prefix(node, meth, level, indent) + "".tap do |value| + if mode(node) != :inline && indent > 0 + if meth == 'start_tag' + value << "#{level > 0 ? "\n": ''}#{' '*level*indent}" + elsif meth == 'end_tag' + value << "\n#{' '*(level > 0 ? level-1 : level)*indent}" + end + end + end + end + + def initialize(content, mode=:inline) @start_tag = nil @end_tag = nil - @force_pp = opts[:force_pp] @content = content - end - - def force_pp? - !!@force_pp + @builds = [] + @attrs = {} + @children = false + @mode = mode end def ==(other_node) self.class.content(self) == other_node.class.content(other_node) && self.instance_variable_get("@start_tag") == other_node.instance_variable_get("@start_tag") &&