From 154ee8d534b910d96281a9de63e8428ef56bf225 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Tue, 21 Jan 2014 17:10:42 +0000 Subject: [PATCH] Implement a key/value registry at env level --- lib/producer/core/env.rb | 19 ++++++++++++++----- spec/producer/core/env_spec.rb | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/lib/producer/core/env.rb b/lib/producer/core/env.rb index 14b0fae..72bdff6 100644 --- a/lib/producer/core/env.rb +++ b/lib/producer/core/env.rb @@ -1,18 +1,27 @@ module Producer module Core class Env - attr_reader :input, :output + attr_reader :input, :output, :registry attr_accessor :target - def initialize(input: $stdin, output: $stdout) - @input = input - @output = output - @target = nil + def initialize(input: $stdin, output: $stdout, registry: {}) + @input = input + @output = output + @target = nil + @registry = registry end def remote @remote ||= Remote.new(target) end + + def [](key) + @registry[key] + end + + def []=(key, value) + @registry[key] = value + end end end end diff --git a/spec/producer/core/env_spec.rb b/spec/producer/core/env_spec.rb index ca05e74..75cd780 100644 --- a/spec/producer/core/env_spec.rb +++ b/spec/producer/core/env_spec.rb @@ -17,6 +17,10 @@ module Producer::Core expect(env.target).not_to be end + it 'assigns an empty registry' do + expect(env.registry).to be_empty + end + context 'when input is given as argument' do let(:input) { double 'input' } subject(:env) { described_class.new(input: input) } @@ -62,5 +66,20 @@ module Producer::Core expect(env.remote).to be env.remote end end + + describe '#[]' do + subject(:env) { Env.new(registry: { some_key: :some_value }) } + + it 'returns the value indexed by given key from the registry' do + expect(env[:some_key]).to eq :some_value + end + end + + describe '#[]=' do + it 'registers given value at given index in the registry' do + env[:some_key] = :some_value + expect(env[:some_key]).to eq :some_value + end + end end end