Sha256: bce3bdb2897afd95059c1cb2715fad09d18516adbbe329c4ded01d56838bf3bb

Contents?: true

Size: 1.12 KB

Versions: 20

Compression:

Stored size: 1.12 KB

Contents

class RestModel
  module Serialization
    class Boolean
      MAPPINGS  = {
        true    => true,
        "true"  => true,
        "TRUE"  => true,
        "1"     => true,
        1       => true,
        1.0     => true,
        "x"     => true,
        "X"     => true,
        "t"     => true,
        "T"     => true,
        false   => false,
        "false" => false,
        "FALSE" => false,
        "0"     => false,
        0       => false,
        0.0     => false,
        ""      => false,
        " "     => false,
        "f"     => false,
        "F"     => false,
        nil     => false
      }.freeze

      def self.serialize(value)
        MAPPINGS[value].tap do |bool|
          fail SerializationError, "value '#{value}' is not boolean" if bool.nil?
        end
      end

      def self.desserialize(value)
        fail SerializationError, "value '#{value}' is not boolean" unless boolean?(value)

        value ? RestModel::Configuration.true_value
              : RestModel::Configuration.false_value
      end

      private

      def self.boolean?(value)
        !!value == value
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rest_model-0.2.1 lib/rest_model/serialization/boolean.rb
rest_model-0.2.0 lib/rest_model/serialization/boolean.rb
rest_model-0.1.24 lib/rest_model/serialization/boolean.rb
rest_model-0.1.23 lib/rest_model/serialization/boolean.rb
rest_model-0.1.22 lib/rest_model/serialization/boolean.rb
rest_model-0.1.21 lib/rest_model/serialization/boolean.rb
rest_model-0.1.20 lib/rest_model/serialization/boolean.rb
rest_model-0.1.19 lib/rest_model/serialization/boolean.rb
rest_model-0.1.18 lib/rest_model/serialization/boolean.rb
rest_model-0.1.17 lib/rest_model/serialization/boolean.rb
rest_model-0.1.16 lib/rest_model/serialization/boolean.rb
rest_model-0.1.15 lib/rest_model/serialization/boolean.rb
rest_model-0.1.14 lib/rest_model/serialization/boolean.rb
rest_model-0.1.13 lib/rest_model/serialization/boolean.rb
rest_model-0.1.12 lib/rest_model/serialization/boolean.rb
rest_model-0.1.11 lib/rest_model/serialization/boolean.rb
rest_model-0.1.10 lib/rest_model/serialization/boolean.rb
rest_model-0.1.9 lib/rest_model/serialization/boolean.rb
rest_model-0.1.8 lib/rest_model/serialization/boolean.rb
rest_model-0.1.7 lib/rest_model/serialization/boolean.rb