Sha256: d30b3c162a0084a3b850b730da911f7a5aeb8c66ba352dd8b27634fb6951a265

Contents?: true

Size: 861 Bytes

Versions: 16

Compression:

Stored size: 861 Bytes

Contents

module Bmg
  module Sql
    class Processor
      class Extend < Processor

        def initialize(extension, builder)
          super(builder)
          @extension = extension
        end
        attr_reader :extension

        def on_set_operator(sexpr)
          apply(builder.from_self(sexpr))
        end
        alias :on_union     :on_set_operator
        alias :on_except    :on_set_operator
        alias :on_intersect :on_set_operator

        def on_select_star(sexpr)
          raise NotImplementedError, "Extend on * is not supported"
        end

        def on_select_list(sexpr)
          sexpr + extension.each_pair.map{|(k,v)|
            desaliased = sexpr.desaliaser[v]
            [:select_item, desaliased, [:column_name, k] ]
          }
        end

      end # class Extend
    end # class Processor
  end # module Sql
end # module Bmg

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
bmg-0.23.3 lib/bmg/sql/processor/extend.rb
bmg-0.23.2 lib/bmg/sql/processor/extend.rb
bmg-0.23.1 lib/bmg/sql/processor/extend.rb
bmg-0.23.0 lib/bmg/sql/processor/extend.rb
bmg-0.21.5 lib/bmg/sql/processor/extend.rb
bmg-0.21.4 lib/bmg/sql/processor/extend.rb
bmg-0.20.5 lib/bmg/sql/processor/extend.rb
bmg-0.19.3 lib/bmg/sql/processor/extend.rb
bmg-0.21.3 lib/bmg/sql/processor/extend.rb
bmg-0.21.2 lib/bmg/sql/processor/extend.rb
bmg-0.21.0 lib/bmg/sql/processor/extend.rb
bmg-0.20.4 lib/bmg/sql/processor/extend.rb
bmg-0.20.2 lib/bmg/sql/processor/extend.rb
bmg-0.20.1 lib/bmg/sql/processor/extend.rb
bmg-0.20.0 lib/bmg/sql/processor/extend.rb
bmg-0.19.2 lib/bmg/sql/processor/extend.rb