class Hermes::Message::Headers
Public Class Methods
new(list)
click to toggle source
# File lib/hermes/message.rb, line 375 def initialize list @list = list end
Public Instance Methods
[](name, type = nil)
click to toggle source
# File lib/hermes/message.rb, line 409 def [] name, type = nil case name when Integer then raise "Not a field name: #{name}" else field name, type end end
add(name, *contents)
click to toggle source
# File lib/hermes/message.rb, line 424 def add name, *contents e = build_entry name, *contents add_entry e self end
create()
click to toggle source
# File lib/hermes/message.rb, line 370 def create new [] end
each() { |name, c| ... }
click to toggle source
# File lib/hermes/message.rb, line 388 def each @list.each { |e| type = Headers.find_type e c = e.contents type yield e.name, c } self end
field(name, type = nil)
click to toggle source
# File lib/hermes/message.rb, line 402 def field name, type = nil e = find_entry name if e then type ||= Headers.find_type e e.contents type end end
find_type(entry)
click to toggle source
# File lib/hermes/message.rb, line 355 def find_type entry @types.each { |k,v| return v if entry.name_is? k } nil end
inspect()
click to toggle source
# File lib/hermes/message.rb, line 454 def inspect r = "" r << "#<#{cls}:" r << "0x%x" % (object_id<<1) r << " (#{length})" r << ">" end
length()
click to toggle source
# File lib/hermes/message.rb, line 379 def length @list.length end
Also aliased as: size
method_missing(sym, *args)
click to toggle source
Calls superclass method
# File lib/hermes/message.rb, line 416 def method_missing sym, *args if args.empty? and not sym =~ /[!?=]\z/ then field sym, *args else super end end
parse(*list)
click to toggle source
# File lib/hermes/message.rb, line 365 def parse *list list.flatten! list.map! { |h| Entry.parse h } new list end
raw(name)
click to toggle source
# File lib/hermes/message.rb, line 397 def raw name e = find_entry name e.data if e end
recode(name, type = nil)
click to toggle source
# File lib/hermes/message.rb, line 444 def recode name, type = nil n = Entry.build_name name @list.each { |e| next unless e.name_is? n type ||= Headers.find_type e e.reset type } self end
remove(name)
click to toggle source
# File lib/hermes/message.rb, line 437 def remove name e = Entry.create name remove_entries e self end
Also aliased as: delete
replace(name, *contents)
click to toggle source
# File lib/hermes/message.rb, line 430 def replace name, *contents e = build_entry name, *contents remove_entries e add_entry e self end
set_field_type(name, type)
click to toggle source
# File lib/hermes/message.rb, line 347 def set_field_type name, type e = Entry.create name if type then @types[ e.name] = type else @types.delete e.name end end
to_s()
click to toggle source
# File lib/hermes/message.rb, line 384 def to_s @list.map { |e| "#{e}#$/" }.join end
Private Instance Methods
add_entry(entry)
click to toggle source
# File lib/hermes/message.rb, line 482 def add_entry entry @list.unshift entry end
build_entry(name, *contents)
click to toggle source
# File lib/hermes/message.rb, line 469 def build_entry name, *contents e = Entry.create name type, = *contents case type when Class then e.set *contents else type = Headers.find_type e e.set type, *contents end e end
find_entry(name)
click to toggle source
# File lib/hermes/message.rb, line 464 def find_entry name e = Entry.build_name name @list.find { |x| x.name_is? e } end
remove_entries(entry)
click to toggle source
# File lib/hermes/message.rb, line 486 def remove_entries entry @list.reject! { |e| e.name_is? entry.name } end