Sha256: f6c5ef119184b7a88a2c07a8c486e59174592c9770bd9e113c8ccfbf60a1405b

Contents?: true

Size: 532 Bytes

Versions: 5

Compression:

Stored size: 532 Bytes

Contents

module Alf
  module Sql
    class Processor
      class Reorder < Processor

        def initialize(attr_list, builder)
          super(builder)
          @indexes = Hash[attr_list.to_a.map(&:to_s).each_with_index.to_a]
        end

        def on_select_list(sexpr)
          reordered = sexpr.sexpr_body.sort{|i1,i2|
            @indexes[i1.as_name] <=> @indexes[i2.as_name]
          }
          reordered.unshift(:select_list)
        end

      end # class Reorder
    end # class Processor
  end # module Sql
end # module Alf

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
alf-sql-0.16.3 lib/alf/sql/processor/reorder.rb
alf-sql-0.16.2 lib/alf/sql/processor/reorder.rb
alf-sql-0.16.1 lib/alf/sql/processor/reorder.rb
alf-sql-0.16.0 lib/alf/sql/processor/reorder.rb
alf-sql-0.15.0 lib/alf/sql/processor/reorder.rb