Sha256: aad8f4675c820f135757982342ee34c9bf26c51ecf28af4cb4aa284e3e62a818

Contents?: true

Size: 1.19 KB

Versions: 5

Compression:

Stored size: 1.19 KB

Contents

module DataMapper
  module Parse

    module Conditions
      class Comparison
        def initialize(value)
          @value = value
        end

        def as_json
          { key_name => @value }
        end

        def key_name
          "$#{self.class.to_s.demodulize.downcase}"
        end
      end

      class Eql < Comparison
        def as_json
          @value
        end
      end

      class Ne < Comparison
      end

      class Lt < Comparison
      end

      class Lte < Comparison
      end

      class Gt < Comparison
      end

      class Gte < Comparison
      end

      class InComparison < Comparison
        def initialize(value)
          @value = value.is_a?(Hash) ? [value] : value.to_a
        end
      end

      class In < InComparison
      end

      class Nin < InComparison
      end

      class Regex < Comparison
        def options
          options = @value.options
          result = []
          result << "i" if options[0] == 1
          result << "m" if options[2] == 1
          result.join
        end

        def as_json
          { key_name => @value.source }.tap { |value| value["$options"] = options if options.present? }
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dm-parse-0.3.20 lib/adapters/parse/query.rb
dm-parse-0.3.19 lib/adapters/parse/query.rb
dm-parse-0.3.18 lib/adapters/parse/query.rb
dm-parse-0.3.17 lib/adapters/parse/query.rb
dm-parse-0.3.16 lib/adapters/parse/query.rb