Sha256: 931843375cc99e8d0502b82df40b3f06edc6b41fb56b8e9588acfb1083366004

Contents?: true

Size: 696 Bytes

Versions: 8

Compression:

Stored size: 696 Bytes

Contents

module Karabiner::XmlTree
  attr_reader :parent

  def add_child(*objects)
    objects.each do |object|
      childs << object
    end

    childs.each do |child|
      child.parent = self
    end
  end

  def search_childs(klass)
    childs.select { |c| c.is_a?(klass) }
  end

  def to_xml(distance_between_childs = 0)
    tag_name = self.class.to_s.split("::").last.downcase
    newline_count = distance_between_childs + 1

    [
      "<#{tag_name}>",
      childs.map(&:to_xml).join("\n" * newline_count).gsub(/^/, "  "),
      "</#{tag_name}>",
    ].join("\n")
  end

  protected

  attr_writer :parent

  private

  def childs
    @childs ||= []
  end

  def parent
    @parent
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
karabiner-0.4.0 lib/karabiner/xml_tree.rb
karabiner-0.3.1 lib/karabiner/xml_tree.rb
karabiner-0.3.0 lib/karabiner/xml_tree.rb
karabiner-0.2.1 lib/karabiner/xml_tree.rb
karabiner-0.2.0 lib/karabiner/xml_tree.rb
karabiner-0.1.2 lib/karabiner/xml_tree.rb
karabiner-0.1.1 lib/karabiner/xml_tree.rb
karabiner-0.1.0 lib/karabiner/xml_tree.rb