From 388ab07a81e5eaaae3c93ba5fd7d08031a3b35ab Mon Sep 17 00:00:00 2001 From: Denis Defreyne Date: Sat, 19 Sep 2015 10:58:25 +0200 Subject: [PATCH] Add DocumentView#attributes --- .../base/views/mixins/document_view_mixin.rb | 8 ++++++++ spec/nanoc/base/views/document_view_spec.rb | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/nanoc/base/views/mixins/document_view_mixin.rb b/lib/nanoc/base/views/mixins/document_view_mixin.rb index 18925fd6fc..bcd048ab49 100644 --- a/lib/nanoc/base/views/mixins/document_view_mixin.rb +++ b/lib/nanoc/base/views/mixins/document_view_mixin.rb @@ -37,6 +37,14 @@ def [](key) unwrap.attributes[key] end + # @return [Hash] + def attributes + Nanoc::Int::NotificationCenter.post(:visit_started, unwrap) + Nanoc::Int::NotificationCenter.post(:visit_ended, unwrap) + + unwrap.attributes + end + # @see Hash#fetch def fetch(key, fallback = NONE, &_block) Nanoc::Int::NotificationCenter.post(:visit_started, unwrap) diff --git a/spec/nanoc/base/views/document_view_spec.rb b/spec/nanoc/base/views/document_view_spec.rb index 6b901c62ff..6eaf8e2969 100644 --- a/spec/nanoc/base/views/document_view_spec.rb +++ b/spec/nanoc/base/views/document_view_spec.rb @@ -71,6 +71,22 @@ end end + describe '#attributes' do + let(:item) { entity_class.new('stuff', { animal: 'donkey' }, '/foo/') } + let(:view) { described_class.new(item) } + + before do + expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:visit_started, item).ordered + expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:visit_ended, item).ordered + end + + subject { view.attributes } + + it 'returns attributes' do + expect(subject).to eql(animal: 'donkey') + end + end + describe '#fetch' do let(:item) { entity_class.new('stuff', { animal: 'donkey' }, '/foo/') } let(:view) { described_class.new(item) }