Sha256: dcd80a70e272fcaf7d7d7b6cb5709353bf90456c017a69fe3f83ec4da16a05c8

Contents?: true

Size: 1.23 KB

Versions: 6

Compression:

Stored size: 1.23 KB

Contents

module Killbill
  module Plugin

    module Enum

      class NameValuePair
        attr_reader :label, :value

        def initialize(label, value)
          @label = label
          @value = value
        end

        def first
          @label
        end

        def last
          @value
        end
      end

      def const_missing(key)
        @enum_hash[key]
      end

      def add_enum(key, value)
        @enum_hash ||= {}
        @enum_hash[key] = NameValuePair.new(value, key.to_s)
      end

      def each
        @enum_hash.values.sort { |v1, v2| v1.label <=> v2.label }.each do |k|
          yield(k)
        end
      end

      def collect
        @enum_hash.values.sort { |v1, v2| v1.label <=> v2.label }.collect do |k|
          yield(k)
        end
      end

      def each_with_index
        @enum_hash.values.sort { |v1, v2| v1.label <=> v2.label }.each_with_index do |k, i|
          yield(k, i)
        end
      end

      def enums
        @enum_hash.keys
      end

      def enum_values
        @enum_hash.values
      end

      def get_enum_hash
        @enum_hash
      end

      def find_by_key(key)
        @enum_hash[key.upcase.to_sym]
      end

      def size
        @enum_hash.keys.size
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
killbill-1.1.2 lib/killbill/enum.rb
killbill-1.1.1 lib/killbill/enum.rb
killbill-1.0.19 lib/killbill/enum.rb
killbill-1.0.18 lib/killbill/enum.rb
killbill-1.0.17 lib/killbill/enum.rb
killbill-1.0.16 lib/killbill/enum.rb