--- /dev/null
+module Spec
+ module Story
+ class Story
+ attr_reader :title, :narrative
+
+ def initialize(title, narrative, params = {}, &body)
+ @body = body
+ @title = title
+ @narrative = narrative
+ @params = params
+ end
+
+ def [](key)
+ @params[key]
+ end
+
+ def run_in(obj)
+ obj.instance_eval(&@body)
+ end
+
+ def assign_steps_to(assignee)
+ if @params[:steps]
+ assignee.use(@params[:steps])
+ else
+ case keys = @params[:steps_for]
+ when Symbol
+ keys = [keys]
+ when nil
+ keys = []
+ end
+ keys.each do |key|
+ assignee.use(steps_for(key))
+ end
+ end
+ end
+
+ def steps_for(key)
+ $rspec_story_steps[key]
+ end
+ end
+ end
+end