Class: Maven::Model::HashTag

Inherits:
Tag
  • Object
show all
Defined in:
lib/maven/model/utils.rb

Direct Known Subclasses

Configuration, Properties

Instance Method Summary collapse

Methods inherited from Tag

#_name, _tags, #comment, prepend_tags, tags

Constructor Details

#initialize(name, args = {}) ⇒ HashTag

Returns a new instance of HashTag.



327
328
329
330
# File 'lib/maven/model/utils.rb', line 327

def initialize(name, args = {})
  @name = name
  @props = args
end

Instance Method Details

#[](key) ⇒ Object



332
333
334
335
# File 'lib/maven/model/utils.rb', line 332

def [](key)
  @props ||= {}
  @props[key]
end

#[]=(key, value) ⇒ Object



337
338
339
340
# File 'lib/maven/model/utils.rb', line 337

def []=(key, value)
  @props ||= {}
  @props[key] = value
end

#map_to_xml(buf, indent, map) ⇒ Object



349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
# File 'lib/maven/model/utils.rb', line 349

def map_to_xml(buf, indent, map)
  map.each do |k,v|
    case v
    when Hash
      buf << "#{indent}  <#{k}>\n"
      map_to_xml(buf, indent + "  ", v)
      buf << "#{indent}  </#{k}>\n"
    when NamedArray
      buf << "#{indent}  <#{k}>\n"
      v.each do|i|
        buf << "#{indent}    <#{v.name}>\n"
        case i
        when Hash
          map_to_xml(buf, indent + "    ", i)
        end
        buf << "#{indent}    </#{v.name}>\n"
      end
      buf << "#{indent}  </#{k}>\n"
    when Array
      buf << "#{indent}  <#{k}>\n"
      singular = k.to_s.sub(/s$/, '')
      v.each do |i|
        case i
        when Hash
          buf << "#{indent}    <#{singular}>\n"
          map_to_xml(buf, indent + "    ", i)
          buf << "#{indent}    </#{singular}>\n"
        when /^<.*>$/ #allow any kind of xml as is
          buf << "#{indent}    #{i}\n"
        else
          buf << "#{indent}    <#{singular}>#{i}</#{singular}>\n"
        end
      end
      buf << "#{indent}  </#{k}>\n"
    when /\n$/
      buf << "#{indent}  <#{k}>#{v}"
      buf << "#{indent}  </#{k}>\n"
    else
      buf << "#{indent}  <#{k}>#{v}</#{k}>\n"
    end
  end
end

#to_xml(buf = "", indent = "") ⇒ Object



342
343
344
345
346
347
# File 'lib/maven/model/utils.rb', line 342

def to_xml(buf = "", indent = "")
  buf << "#{indent}<#{@name}>\n"
  buf << "#{indent}<!--\n#{indent}#{@comment}\n#{indent}-->\n" if @comment
  map_to_xml(buf, indent, @props)
  buf << "#{indent}</#{@name}>\n"
end