lib/hexp/node/children.rb in hexp-0.2.0 vs lib/hexp/node/children.rb in hexp-0.3.0

- old
+ new

@@ -3,39 +3,94 @@ # Node API methods that deal with child_nodes # module Children # Is this node an empty node # - # H[:p, class: 'foo'].empty? #=> true - # H[:p, [H[:span]].empty? #=> false + # @example + # H[:p, class: 'foo'].empty? #=> true + # H[:p, [H[:span]].empty? #=> false # - # @return [Boolean] true if this node has no children - # @api public + # @return [true,false] + # True if this node has no children # + # @api public def empty? children.empty? end + # Add a child node to the end of the list of children + # + # @example + # H[:ul].add_child(H[:li, "chunky"]) #=> H[:ul, [H[:li, "chunky]]] + # + # @param [Hexp::Node] child + # The child node to add + # + # @return [Hexp::Node] + # A new node containing that has the child added to its children + # + # @api public def add_child(child) H[ self.tag, self.attributes, self.children + [child] ] end alias :add :add_child alias :<< :add_child + # All the text in this node and its descendants + # + # Concatenates the contents of all text nodes. + # + # @example + # H[:div, [ + # H[:span, "My name is"], + # " ", + # H[:strong, "@plexus"], + # "." + # ] + # ].text #=> "My name is @plexus." + # + # @return [String] + # + # @api public def text children.map do |node| node.text? ? node : node.text end.join end + # Replace the children of this node with a new list of children + # + # @example + # H[:div, "Hello"].set_children([H[:span, "wicked!"], H[:br]]) + # # => H[:div, [H[:span, "wicked!"], H[:br]]] + # + # @param [Array,Hexp::NodeList] new_children + # + # @return [Hexp::Node] + # + # @api public def set_children(new_children) H[tag, attributes, new_children] end + # Perform an action on each child node, and replace the node with the result + # + # @example + # H[:div, [H[:span, "foo"]]].map_children do |node| + # node.add_class(node.text) + # end + # # => H[:div, [H[:span, {class: "foo"}, "foo"]]] + # + # @yieldparam [Hexp::Node] + # The child node + # + # @return [Hexp::Node] + # + # @api public def map_children(&blk) return to_enum(:map_children) unless block_given? H[tag, attributes, children.map(&blk)] end end