Sha256: 90595a482b92e205f4fedd5b2db788062fa35fe6df569f4f79d780da2ef36fd3

Contents?: true

Size: 969 Bytes

Versions: 3

Compression:

Stored size: 969 Bytes

Contents

module RecordFilter
  module DSL
    class DSL < ConjunctionDSL

      SUBCLASSES = Hash.new do |h, k|
        h[k] = Class.new(DSL)
      end

      class << self
        def create(clazz)
          subclass(clazz).new
        end

        def subclass(clazz)
          SUBCLASSES[clazz.name.to_sym]
        end
      end

      # This method can take two forms:
      # limit(offset, limit), or
      # limit(limit)
      def limit(offset_or_limit, limit=nil)
        if limit
          @conjunction.add_limit(limit, offset_or_limit)
        else
          @conjunction.add_limit(offset_or_limit, nil)
        end
        nil
      end

      # This method can take two forms, as shown below.
      # order :permalink
      # order :permalink, :desc
      # order :photo => :path, :desc
      # order :photo => { :comment => :id }, :asc
      def order(column, direction=:asc)
        @conjunction.add_order(column, direction)
        nil
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
aub-record_filter-0.1.0 lib/record_filter/dsl/dsl.rb
aub-record_filter-0.1.1 lib/record_filter/dsl/dsl.rb
outoftime-record_filter-0.1.0 lib/record_filter/dsl/dsl.rb