Class: Bmg::Operator::Rename
- Inherits:
-
Object
- Object
- Bmg::Operator::Rename
- Includes:
- Unary
- Defined in:
- lib/bmg/operator/rename.rb
Overview
Rename operator.
Rename some attribute of input tuples, according to a renaming Hash.
Example:
[{ a: 1, b: 2 }] rename {:b => :c} => [{ a: 1, c: 2 }]
Keys of the renaming Hash SHOULD be existing attributes of the input tuples. Values of the renaming Hash SHOULD NOT be existing attributes of the input tuples.
Instance Attribute Summary
Attributes included from Bmg::Operator
Instance Method Summary collapse
- #delete ⇒ Object
- #each ⇒ Object
-
#initialize(type, operand, renaming) ⇒ Rename
constructor
A new instance of Rename.
- #insert(arg) ⇒ Object
- #to_ast ⇒ Object
- #update(arg) ⇒ Object
Methods included from Unary
Methods included from Bmg::Operator
Methods included from Relation
#bind, #debug, empty, #empty?, new, #one, #one_or_nil, #to_csv, #to_json, #visit, #with_typecheck, #without_typecheck, #y_by_x, #ys_by_x
Methods included from Algebra
#allbut, #autosummarize, #autowrap, #constants, #extend, #group, #image, #join, #left_join, #matching, #materialize, #not_matching, #page, #project, #restrict, #spied, #summarize, #transform, #union, #unspied
Methods included from Algebra::Shortcuts
#image, #join, #left_join, #matching, #not_matching, #prefix, #rxmatch, #suffix
Constructor Details
#initialize(type, operand, renaming) ⇒ Rename
Returns a new instance of Rename.
19 20 21 22 23 |
# File 'lib/bmg/operator/rename.rb', line 19 def initialize(type, operand, renaming) @type = type @operand = operand @renaming = renaming end |
Instance Method Details
#delete ⇒ Object
55 56 57 |
# File 'lib/bmg/operator/rename.rb', line 55 def delete operand.delete end |
#each ⇒ Object
31 32 33 34 35 |
# File 'lib/bmg/operator/rename.rb', line 31 def each @operand.each do |tuple| yield rename(tuple, renaming) end end |
#insert(arg) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/bmg/operator/rename.rb', line 37 def insert(arg) case arg when Hash then operand.insert(rename(arg, reverse_renaming)) when Relation then operand.insert(arg.rename(reverse_renaming)) when Enumerable then operand.insert(arg.map{|t| rename(t, reverse_renaming) }) else super end end |
#to_ast ⇒ Object
59 60 61 |
# File 'lib/bmg/operator/rename.rb', line 59 def to_ast [ :rename, operand.to_ast, renaming.dup ] end |
#update(arg) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/bmg/operator/rename.rb', line 47 def update(arg) case arg when Hash then operand.update(rename(arg, reverse_renaming)) else super end end |