classic_presenter 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in classic_presenter.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,24 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ classic_presenter (0.0.1)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.1.3)
10
+ rspec (2.10.0)
11
+ rspec-core (~> 2.10.0)
12
+ rspec-expectations (~> 2.10.0)
13
+ rspec-mocks (~> 2.10.0)
14
+ rspec-core (2.10.0)
15
+ rspec-expectations (2.10.0)
16
+ diff-lcs (~> 1.1.3)
17
+ rspec-mocks (2.10.1)
18
+
19
+ PLATFORMS
20
+ ruby
21
+
22
+ DEPENDENCIES
23
+ classic_presenter!
24
+ rspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "classic_presenter/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "classic_presenter"
7
+ s.version = ClassicPresenter::VERSION
8
+ s.authors = ["Rinaldi Fonseca"]
9
+ s.email = ["rinaldifonseca@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{A simple Presenter Pattern for Rails Applications}
12
+ s.description = %q{A simple Presenter Pattern for Rails Applications}
13
+
14
+ s.rubyforge_project = "classic_presenter"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_development_dependency "rspec"
22
+ end
@@ -0,0 +1,5 @@
1
+ require "classic_presenter/version"
2
+ require "delegate"
3
+ require "classic_presenter/base"
4
+ require "classic_presenter/helper"
5
+ require "classic_presenter/railtie"
@@ -0,0 +1,17 @@
1
+ module ClassicPresenter
2
+ class Base < SimpleDelegator
3
+ attr_accessor :context
4
+
5
+ def initialize(model, context = nil, objects = {})
6
+ objects.each do |key, value|
7
+ self.class.send :define_method, key do
8
+ value
9
+ end
10
+ end
11
+
12
+ @context = context
13
+ super model
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,11 @@
1
+ module ClassicPresenter
2
+ module Helper
3
+ extend self
4
+
5
+ def present(presenter_class, model, objects)
6
+ presenter = presenter_class.new(model, self, objects)
7
+ yield presenter if block_given?
8
+ presenter
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module ClassicPresenter
2
+ class Railtie < Rails::Railtie
3
+ initializer "classic_presenter.configure_rails_initialization" do |app|
4
+ ActiveSupport.on_load :action_controller do
5
+ helper ::ClassicPresenter::Helper
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module ClassicPresenter
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe ClassicPresenter::Base do
4
+ let(:decorated_object) { decorated_object = [] }
5
+ let(:context) { double }
6
+ let(:objects) { {:foo => :bar, :bar => :foo} }
7
+
8
+ subject { described_class.new decorated_object, context, objects }
9
+
10
+ it "delegates all methods to decorated object" do
11
+ decorated_object.should_receive(:size)
12
+ subject.size
13
+ end
14
+
15
+ it "assigns all objects" do
16
+ subject.foo.should == :bar
17
+ subject.bar.should == :foo
18
+ end
19
+
20
+ it "assigns the context" do
21
+ subject.context.should == context
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe ClassicPresenter::Helper do
4
+ subject { described_class }
5
+
6
+ it "yields with a new PresenterClass instance and return it" do
7
+ presenter_class_as_param = [:value]
8
+ presenter_class = mock
9
+ presenter_class.should_receive(:new).with(:model, described_class, :objects).and_return presenter_class_as_param
10
+ subject.present(presenter_class, :model, :objects) do |presenter|
11
+ presenter.pop
12
+ end.should == []
13
+ end
14
+ end
15
+
@@ -0,0 +1,7 @@
1
+ $:.unshift File.dirname(__FILE__) + "../lib"
2
+ require "rubygems"
3
+ require "delegate"
4
+ require "classic_presenter/base"
5
+ require "classic_presenter/helper"
6
+ require "rspec"
7
+
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: classic_presenter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Rinaldi Fonseca
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-23 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &70331810353200 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70331810353200
25
+ description: A simple Presenter Pattern for Rails Applications
26
+ email:
27
+ - rinaldifonseca@gmail.com
28
+ executables: []
29
+ extensions: []
30
+ extra_rdoc_files: []
31
+ files:
32
+ - Gemfile
33
+ - Gemfile.lock
34
+ - Rakefile
35
+ - classic_presenter.gemspec
36
+ - lib/classic_presenter.rb
37
+ - lib/classic_presenter/base.rb
38
+ - lib/classic_presenter/helper.rb
39
+ - lib/classic_presenter/railtie.rb
40
+ - lib/classic_presenter/version.rb
41
+ - spec/classic_presenter_base_spec.rb
42
+ - spec/classic_presenter_helper_spec.rb
43
+ - spec/spec_helper.rb
44
+ homepage: ''
45
+ licenses: []
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project: classic_presenter
64
+ rubygems_version: 1.8.15
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: A simple Presenter Pattern for Rails Applications
68
+ test_files:
69
+ - spec/classic_presenter_base_spec.rb
70
+ - spec/classic_presenter_helper_spec.rb
71
+ - spec/spec_helper.rb