Sha256: f4f197fc58d8e377a645119d28cb0257855f3074884a673fb8645362e1671faf

Contents?: true

Size: 747 Bytes

Versions: 2

Compression:

Stored size: 747 Bytes

Contents

module Alf
  module Operator::NonRelational
    class Defaults < Alf::Operator()
      include Operator::NonRelational, Operator::Transform
  
      signature do |s|
        s.argument :defaults, TupleComputation, {}
        s.option   :strict,   Boolean, false, "Restrict to default attributes only?"
      end
      
      protected 
  
      # (see Operator::Transform#_tuple2tuple)
      def _tuple2tuple(tuple)
        handle = TupleHandle.new.set(tuple)
        defs = @defaults.evaluate(handle)
        keys = @strict ? defs.keys : (tuple.keys | defs.keys)
        tuple_collect(keys){|k|
          [k, coalesce(tuple[k], defs[k])]
        }
      end
      
    end # class Defaults
  end # module Operator::NonRelational
end # module Alf

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alf-0.10.1 lib/alf/operator/non_relational/defaults.rb
alf-0.10.0 lib/alf/operator/non_relational/defaults.rb