Sha256: 491095b3b701f5bedd03fc6f51fa7cda353be0620764fdec11738ffbde53409e

Contents?: true

Size: 1.16 KB

Versions: 6

Compression:

Stored size: 1.16 KB

Contents

require 'active_record/connection_adapters/abstract/quoting'

module Ambition
  class Processor < SexpProcessor 
    include ActiveRecord::ConnectionAdapters::Quoting

    attr_reader :key, :join_string, :prefix

    def initialize
      super()
      @strict          = false
      @expected        = String
      @auto_shift_type = true
      @warn_on_default = false
      @default_method  = :process_error
    end

    ##
    # Processing methods
    def process_error(exp)
      raise "Missing process method for sexp: #{exp.inspect}"
    end

    def process_proc(exp)
      receiver, body = process(exp.shift), exp.shift
      return process(body)
    end

    def process_dasgn_curr(exp)
      @receiver = exp.shift
      return @receiver.to_s
    end

    def process_array(exp)
      arrayed = exp.map { |m| process(m) }
      exp.clear
      return arrayed.join(', ')
    end

    ##
    # Helper methods
    def to_s
      process(@block.to_sexp).squeeze(' ')
    end

    def sanitize(value)
      case value.to_s
      when 'true'  then '1'
      when 'false' then '0'
      else ActiveRecord::Base.connection.quote(value) rescue quote(value)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
cheat-1.3.3 lib/ambition/lib/ambition/processor.rb
cheat-1.3.2 lib/ambition/lib/ambition/processor.rb
cheat-1.3.1 lib/ambition/lib/ambition/processor.rb
cheat-1.3.0 lib/ambition/lib/ambition/processor.rb
ambition-0.1.0 ./lib/ambition/processor.rb
ambition-0.1.1 ./lib/ambition/processor.rb