module Narrative::Scene
Public Class Methods
new(data)
click to toggle source
# File lib/narrative/scene.rb, line 26 def initialize(data) validate!(data) @actors = cast!(data) end
Public Instance Methods
perform(&block)
click to toggle source
# File lib/narrative/scene.rb, line 32 def perform(&block) block.call principal end
Private Instance Methods
cast!(data)
click to toggle source
# File lib/narrative/scene.rb, line 44 def cast!(data) roles.each_with_object({}) do |role_definition, memo| memo[role_definition.name] = role_definition.cast!(data) end end
validate!(data)
click to toggle source
# File lib/narrative/scene.rb, line 38 def validate!(data) raise 'principal definition is required' unless self.class.method_defined?(:principal) raise 'data and role definition did not same' if data.keys.to_set != roles.map(&:name).to_set raise 'data did not allow to contain nil' if data.values.include?(nil) end