module Ranicoma::Util

Public Instance Methods

element(name, opt={}) { || ... } click to toggle source

REXML::Element を作る @param [Object] name タグ名。to_s で文字列にされる。 @param [Hash] opt アトリビュート。key も value も to_s で文字列にされる @yield [] 子要素作るブロック @yieldreturn [REXML::Element, Array<REXML::Element>] 子要素または子要素の配列 @return [REXML::Element] XML Element。

# File lib/ranicoma/util.rb, line 11
def element(name, opt={})
  r=opt.each.with_object(REXML::Element.new(name)) do |(k,v),e|
    e.add_attribute(k.to_s, v.to_s)
  end
  if block_given?
    children = yield
    if children.is_a?(Array)
      children.flatten.each do |ch|
        r.add_element(ch)
      end
    else
      r.add_element(children)
    end
  end
  r
end