class IDL::AST::Annotation
def [](fieldid)
def [](fieldid) @fields[(fieldid || '').to_sym] end
def each(&block)
def each(&block) @fields.each(&block) end
def initialize(id, fields = {})
def initialize(id, fields = {}) @id = id.to_sym # copy field map transforming all keys to symbols and # detecting nested annotation objects @fields = fields.inject({}) do |m, (k, v)| m[k.to_sym] = case v when Array v.collect { |ve| Hash === ve ? Annotation.new(*ve.to_a.first) : ve } when Hash Annotation.new(*v.to_a.first) else v end m end end
def is_marker?
def is_marker? @fields.empty? end