Refactoring: Improved folder structure for Mixins.
This commit is contained in:
parent
702b792eb9
commit
90c1a0faef
4 changed files with 40 additions and 38 deletions
36
lib/sequencer/unit/common/mixin/dynamic_attribute.rb
Normal file
36
lib/sequencer/unit/common/mixin/dynamic_attribute.rb
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
class Sequencer
|
||||||
|
class Unit
|
||||||
|
module Common
|
||||||
|
module Mixin
|
||||||
|
module DynamicAttribute
|
||||||
|
|
||||||
|
def self.included(base)
|
||||||
|
|
||||||
|
class << base
|
||||||
|
|
||||||
|
def inherited(base)
|
||||||
|
base.extend(Forwardable)
|
||||||
|
base.instance_delegate [:attribute] => base
|
||||||
|
end
|
||||||
|
|
||||||
|
def attribute
|
||||||
|
@attribute ||= begin
|
||||||
|
if uses.size != 1
|
||||||
|
raise "DynamicAttribute classes can use exactly one attribute. Found #{uses.size}."
|
||||||
|
end
|
||||||
|
uses.first
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def attribute_value
|
||||||
|
@attribute_value ||= state.use(attribute)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,4 +1,4 @@
|
||||||
require 'sequencer/unit/mixin/dynamic_attribute'
|
require 'sequencer/unit/common/mixin/dynamic_attribute'
|
||||||
|
|
||||||
class Sequencer
|
class Sequencer
|
||||||
class Unit
|
class Unit
|
||||||
|
@ -9,7 +9,7 @@ class Sequencer
|
||||||
module Blank
|
module Blank
|
||||||
class Base < Sequencer::Unit::Base
|
class Base < Sequencer::Unit::Base
|
||||||
prepend ::Sequencer::Unit::Import::Common::Model::Mixin::SkipOnProvidedInstanceAction
|
prepend ::Sequencer::Unit::Import::Common::Model::Mixin::SkipOnProvidedInstanceAction
|
||||||
include ::Sequencer::Unit::Mixin::DynamicAttribute
|
include ::Sequencer::Unit::Common::Mixin::DynamicAttribute
|
||||||
|
|
||||||
provides :instance_action
|
provides :instance_action
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
require 'sequencer/unit/mixin/dynamic_attribute'
|
require 'sequencer/unit/common/mixin/dynamic_attribute'
|
||||||
|
|
||||||
class Sequencer
|
class Sequencer
|
||||||
class Unit
|
class Unit
|
||||||
|
@ -9,7 +9,7 @@ class Sequencer
|
||||||
module MissingMandatory
|
module MissingMandatory
|
||||||
class Base < Sequencer::Unit::Base
|
class Base < Sequencer::Unit::Base
|
||||||
prepend ::Sequencer::Unit::Import::Common::Model::Mixin::SkipOnProvidedInstanceAction
|
prepend ::Sequencer::Unit::Import::Common::Model::Mixin::SkipOnProvidedInstanceAction
|
||||||
include ::Sequencer::Unit::Mixin::DynamicAttribute
|
include ::Sequencer::Unit::Common::Mixin::DynamicAttribute
|
||||||
|
|
||||||
provides :instance_action
|
provides :instance_action
|
||||||
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
class Sequencer
|
|
||||||
class Unit
|
|
||||||
module Mixin
|
|
||||||
module DynamicAttribute
|
|
||||||
|
|
||||||
def self.included(base)
|
|
||||||
|
|
||||||
class << base
|
|
||||||
|
|
||||||
def inherited(base)
|
|
||||||
base.extend(Forwardable)
|
|
||||||
base.instance_delegate [:attribute] => base
|
|
||||||
end
|
|
||||||
|
|
||||||
def attribute
|
|
||||||
@attribute ||= begin
|
|
||||||
if uses.size != 1
|
|
||||||
raise "DynamicAttribute classes can use exactly one attribute. Found #{uses.size}."
|
|
||||||
end
|
|
||||||
uses.first
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def attribute_value
|
|
||||||
@attribute_value ||= state.use(attribute)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in a new issue