class Wunderbar::XmlMarkup

Public Instance Methods

system(*args) click to toggle source
Calls superclass method
# File lib/whimsy/asf/wunderbar_updates.rb, line 4
def system(*args)
  opts = {}
  opts = args.pop if Hash === args.last

  tag = opts[:tag] || 'pre'
  merge_lines = tag == 'pre' # merge lines of the same type
  output_class = opts[:class] || {}
  output_class[:stdin]  ||= '_stdin'
  output_class[:stdout] ||= '_stdout'
  output_class[:stderr] ||= '_stderr'
  output_class[:hilite] ||= '_stdout _hilite'

  out = []
  okind = nil
  rc = super(*args, opts) do |kind, line|
    if merge_lines
      if okind && kind != okind && !out.empty? # change of kind
        tag! tag, out.join("\n"), class: output_class[okind]
        out = []
      end
      out << line
    else # normal; no accumulation of lines
      tag! tag, line, class: output_class[kind]
    end
    okind = kind
  end
  # Output last line(s)
  unless out.empty?
    tag! tag, out.join("\n"), class: output_class[okind]
  end
  return rc
end