Sha256: eb84ac81144e8fff2ca6b1a63a5f8f19d653294e7db28e50ebc57f1e061d2c3a
Contents?: true
Size: 1.31 KB
Versions: 8
Compression:
Stored size: 1.31 KB
Contents
require 'transproc/registry' require 'transproc/transformer' module ROM class Changeset # Transproc Registry useful for pipe # # @api private module PipeRegistry extend Transproc::Registry import Transproc::HashTransformations def self.add_timestamps(data) now = Time.now data.merge(created_at: now, updated_at: now) end def self.touch(data) data.merge(updated_at: Time.now) end end # Composable data transformation pipe used by default in changesets # # @api private class Pipe < Transproc::Transformer[PipeRegistry] attr_reader :processor def initialize(processor = self.class.transproc) @processor = processor end def self.[](name) container[name] end def [](name) self.class[name] end def bind(context) if processor.is_a?(Proc) self.class.new(Pipe[-> *args { context.instance_exec(*args, &processor) }]) else self end end def >>(other) if processor Pipe.new(processor >> other) else Pipe.new(other) end end def call(data) if processor processor.call(data) else data end end end end end
Version data entries
8 entries across 8 versions & 1 rubygems