Sha256: c3db67b97ab711d8824ae05b4a9943d0f326021508cd05ba29aa1e0593cbc38a

Contents?: true

Size: 1.09 KB

Versions: 10

Compression:

Stored size: 1.09 KB

Contents

class Boolean
  # to have a boolean type for attributes
end

module Arrest

  CONVERTER = {}

  def add_converter key, converter
    CONVERTER[key] = converter
  end

  class Converter
    class << self
      attr_reader :clazz

      def convert value
        if value.is_a?(self.clazz)
          value
        else
          self.parse value
        end
      end

      def mk_json obj
        obj
      end

      def target clazz
        @clazz = clazz
        CONVERTER[clazz] = self
      end
    end
  end

  class IdentConv < Converter
    def self.convert value
      value
    end
  end

  class StringConv < IdentConv
    target String
  end

  class BooleanConv < IdentConv
    target Boolean
  end

  class IntegerConv < IdentConv
    target Integer
  end

  class ArrayConv < IdentConv
    target Array

    def self.mk_json value
      if value == nil || value == ""
        return nil
      end
      value
    end
  end

  class TimeConv < Converter
    target Time

    def self.parse value
      Time.parse(value)
    end

    def self.mk_json time
      time.strftime "%FT%T%z"
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
arrest-0.0.66 lib/arrest/attributes/converter.rb
arrest-0.0.65 lib/arrest/attributes/converter.rb
arrest-0.0.64 lib/arrest/attributes/converter.rb
arrest-0.0.63 lib/arrest/attributes/converter.rb
arrest-0.0.62 lib/arrest/attributes/converter.rb
arrest-0.0.61 lib/arrest/attributes/converter.rb
arrest-0.0.60 lib/arrest/attributes/converter.rb
arrest-0.0.59 lib/arrest/attributes/converter.rb
arrest-0.0.58 lib/arrest/attributes/converter.rb
arrest-0.0.57 lib/arrest/attributes/converter.rb