Sha256: 72341b16f655e317e1a08a125c3a96ee0054df56f16ce42a24ba86d286c23f5a
Contents?: true
Size: 1.92 KB
Versions: 3
Compression:
Stored size: 1.92 KB
Contents
module Sequel class Dataset # --------------------- # :section: Mutation methods # These methods modify the receiving dataset and should be used with care. # --------------------- # All methods that should have a ! method added that modifies the receiver. MUTATION_METHODS = QUERY_METHODS # Setup mutation (e.g. filter!) methods. These operate the same as the # non-! methods, but replace the options of the current dataset with the # options of the resulting dataset. def self.def_mutation_method(*meths) meths.each do |meth| class_eval("def #{meth}!(*args, &block); mutation_method(:#{meth}, *args, &block) end", __FILE__, __LINE__) end end # Add the mutation methods via metaprogramming def_mutation_method(*MUTATION_METHODS) # Set the method to call on identifiers going into the database for this dataset attr_accessor :identifier_input_method # Set the method to call on identifiers coming the database for this dataset attr_accessor :identifier_output_method # Whether to quote identifiers for this dataset attr_writer :quote_identifiers # The row_proc for this database, should be a Proc that takes # a single hash argument and returns the object you want # each to return. attr_accessor :row_proc # Add a mutation method to this dataset instance. def def_mutation_method(*meths) meths.each do |meth| instance_eval("def #{meth}!(*args, &block); mutation_method(:#{meth}, *args, &block) end", __FILE__, __LINE__) end end private # Modify the receiver with the results of sending the meth, args, and block # to the receiver and merging the options of the resulting dataset into # the receiver's options. def mutation_method(meth, *args, &block) copy = send(meth, *args, &block) @opts.merge!(copy.opts) self end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
sequel-3.13.0 | lib/sequel/dataset/mutation.rb |
sequel-3.12.1 | lib/sequel/dataset/mutation.rb |
sequel-3.12.0 | lib/sequel/dataset/mutation.rb |