classic_presenter 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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