Sha256: 56a7ee9ca9301f09182e234eb9890633d4b0482cfee3084bcd02daf4ff23f61a

Contents?: true

Size: 873 Bytes

Versions: 2

Compression:

Stored size: 873 Bytes

Contents

require 'arel/visitors/visitor'
module Arel
  module Visitors
    class Visitor
      # We are adding our visitors to the main visitor for the time being until the right spot is found to monkey patch
      private
      def visit_Arel_Nodes_ContainedWithin o
        "#{visit o.left} << #{visit o.right}"
      end

      def visit_Arel_Nodes_ArrayOverlap o
        if Array === o.right 
          right = "{#{o.right.map{|v| change_string(visit(v))}.join(',')}}"
          "#{visit o.left} && '#{right}'"
        else
          "#{visit o.left} && #{visit o.right}"
        end
      end

      def visit_IPAddr value
        "'#{value.to_s}/#{value.instance_variable_get(:@mask_addr).to_s(2).count('1')}'"
      end

      def change_string value
        return value unless value.is_a?(String)
        value.gsub(/^\'/, '"').gsub(/\'$/, '"')
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
postgres_ext-0.1.0 lib/postgres_ext/arel/visitors/visitor.rb
postgres_ext-0.0.10 lib/postgres_ext/arel/visitors/visitor.rb