Sha256: 592cb137a74f03647bb06085750a7794d28aa040b43a0ef929f4e9c0f337fe3d

Contents?: true

Size: 507 Bytes

Versions: 1

Compression:

Stored size: 507 Bytes

Contents

module Dossier
  class Query

    attr_reader :string, :report

    def initialize(report)
      @report = report
      @string = report.sql.dup
    end

    def to_s
      compile
    end

    private

    def compile
      string.gsub(/\w*\:[a-z]+/) { |match| escape(report.public_send(match[1..-1])) }
    end

    def escape(value)
      if value.respond_to?(:map)
        "(#{value.map { |v| escape(v) }.join(', ')})"
      else
        report.dossier_client.escape(value)
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dossier-2.5.0 lib/dossier/query.rb