Sha256: 3e7fc09f8e32b2b889807a0d79f0302de8453a6c5e8064acbd0bf4095460cc23

Contents?: true

Size: 794 Bytes

Versions: 18

Compression:

Stored size: 794 Bytes

Contents

module ResoTransport
  Member = Struct.new(:name, :value, :annotation) do
    def self.from_stream(args)
      new(args["Name"], args["Value"])
    end
  end

  Enum = Struct.new(:name, :type, :is_flags) do
    def self.from_stream(args)
      new("#{args[:schema].namespace}.#{args["Name"]}", args["UnderlyingType"], args["IsFlags"].to_s.downcase == "true")
    end
    
    def members
      @members ||= []
    end

    def parse_value(value)
      mapping.fetch(value, value)
    end

    def encode_value(value)
      "'#{mapping.invert.fetch(value, value)}'"
    end

    def mapping
      @mapping ||= generate_member_map || {}
    end

    def generate_member_map
      members.map {|mem|
        { mem.name => mem.annotation || mem.name }  
      }.reduce(:merge!)
    end

  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
reso_transport-2.0.0 lib/reso_transport/enum.rb
reso_transport-1.5.19 lib/reso_transport/enum.rb
reso_transport-1.5.18 lib/reso_transport/enum.rb
reso_transport-1.5.17 lib/reso_transport/enum.rb
reso_transport-1.5.16 lib/reso_transport/enum.rb
reso_transport-1.5.15 lib/reso_transport/enum.rb
reso_transport-1.5.14 lib/reso_transport/enum.rb
reso_transport-1.5.13 lib/reso_transport/enum.rb
reso_transport-1.5.12 lib/reso_transport/enum.rb
reso_transport-1.5.11 lib/reso_transport/enum.rb
reso_transport-1.5.9 lib/reso_transport/enum.rb
reso_transport-1.5.8 lib/reso_transport/enum.rb
reso_transport-1.5.7 lib/reso_transport/enum.rb
reso_transport-1.5.5 lib/reso_transport/enum.rb
reso_transport-1.5.4 lib/reso_transport/enum.rb
reso_transport-1.5.3 lib/reso_transport/enum.rb
reso_transport-1.5.2 lib/reso_transport/enum.rb
reso_transport-1.5.1 lib/reso_transport/enum.rb