Sha256: 98faccf107292bd274f563f00e3e51419c396646a8bfb030fe043a82e7843d30

Contents?: true

Size: 478 Bytes

Versions: 4

Compression:

Stored size: 478 Bytes

Contents

module Trailblazer::Operation::Representer
  def self.included(base)
    base.extend Uber::InheritableAttr
    base.inheritable_attr :representer_class
    # TODO: allow representer without contract?!
    base.extend ClassMethods
  end

  module ClassMethods
    def representer(&block)
      build_representer_class.class_eval(&block)
    end

    def build_representer_class
      representer_class || self.representer_class= Class.new(contract_class.schema)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
trailblazer-0.2.2 lib/trailblazer/operation/representer.rb
trailblazer-0.2.1 lib/trailblazer/operation/representer.rb
trailblazer-0.2.0 lib/trailblazer/operation/representer.rb
trailblazer-0.1.2 lib/trailblazer/operation/representer.rb