active_presenter_generator 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,16 @@
1
+ class ActivePresenterGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+
5
+ unless file_name.match(/_presenter/)
6
+ file_name << "_presenter"
7
+ class_name << "Presenter"
8
+ end
9
+
10
+ m.class_collisions class_name
11
+
12
+ m.template("app/presenters/presenter.template", "app/presenters/#{file_name}.rb")
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ --- !ruby/object:RubyForgeConfig
2
+ gem_name: active_presenter_generator
3
+ package: active_presenters
4
+ project: magrathea
5
+ version: 1.0.0
@@ -0,0 +1,83 @@
1
+ =begin
2
+ General Notes:
3
+ attr_accessor :options # => returns the options hash for this Presenter.
4
+ attr_accessor :model_underscore # => returns the underscore version of the model's name. ie. 'debate_side'
5
+ attr_accessor :model_camelcase # => returns the camelcase version of the model's name. ie. 'DebateSide'
6
+
7
+ ActiveRecord (AR) Notes:
8
+ If you are using a presenter with AR then the source
9
+ will automatically be set to the AR object you are using.
10
+ Because of this, and trying to make things easier to use,
11
+ if you want to pass options into the initialize method you will need
12
+ to override the method presenter_options in your AR model.
13
+
14
+ Your AR model will be available via a method called model
15
+ self.model => your AR object
16
+ An alias of the model method is also created that uses
17
+ the underscore version of your model name.
18
+ Model Name is DebateSide
19
+ self.debate_side aliases self.model
20
+
21
+ By default ActivePresenter assumes that your AR model
22
+ is a RESTful model. If it is not RESTful then you need
23
+ to override the is_restful? method in your AR model and
24
+ have it return false.
25
+ def is_restful?
26
+ false
27
+ end
28
+
29
+ If your AR model is RESTful it will build the following
30
+ methods by default for each RESTful verb:
31
+
32
+ #{verb}_link_text # => this is the default text for the #{verb}_link method
33
+ #{verb}_link_options # => this is the default set of options for the #{verb}_link
34
+ method. This includes the proper 'method', ie get, put, post, delete,
35
+ that this link needs. If you override this method, make sure you set
36
+ the method correctly, or you may get the wrong url!
37
+ #{verb}_link # => this generates the default link_to string for this verb.
38
+ # => Params: (name = #{verb}_link_text, options = {}, html_options = nil, *args)
39
+ #{verb}_path # => this generates the proper path for this verb.
40
+
41
+ REST_VERBS = {
42
+ :index => :get,
43
+ :show => :get,
44
+ :new => :get,
45
+ :create => :post,
46
+ :edit => :get,
47
+ :update => :put,
48
+ :destroy => :delete
49
+ }
50
+
51
+ The destroy_link_options method has a caveat, unlike the other #{verb}_link_options
52
+ methods, the destroy_link_options method also adds a confirmation popup to the options,
53
+ as well as the verb.
54
+
55
+ => {:confirm => 'Are you sure?', :method => :delete}
56
+
57
+ By default ActivePresenter assumes that your AR model is not
58
+ a nested resource. It does this by checking the nested_resource method
59
+ in your AR model. By default this method will return nil. If it returns nil
60
+ it generates the default methods. However, if this method returns an object,
61
+ such as another AR model, it will generate nested resource methods for you.
62
+
63
+ Some Gotcha's:
64
+ To use a 'render' method you must have access to the view. You'll need to pass the view
65
+ from into the presenter method in order to use it.
66
+
67
+ example:
68
+ def render_simple(view)
69
+ view.render :partial => "foo"
70
+ end
71
+
72
+ To use image_tag you need to set an @controller instance variable before you call image_tag.
73
+ This can be done by passing the view in as follows:
74
+
75
+ example:
76
+ def my_image(view)
77
+ @controller = view.controller
78
+ image_tag("my_image.gif")
79
+ end
80
+ =end
81
+ class <%=class_name%> < ActivePresenter::Base
82
+
83
+ end
metadata ADDED
@@ -0,0 +1,52 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: active_presenter_generator
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2007-09-11 00:00:00 -04:00
8
+ summary: active_presenter_generator
9
+ require_paths:
10
+ - lib
11
+ - lib
12
+ - lib
13
+ - lib/tasks
14
+ email:
15
+ homepage:
16
+ rubyforge_project: magrathea
17
+ description: "active_presenter_generator was developed by: markbates"
18
+ autorequire: []
19
+
20
+ default_executable:
21
+ bindir: bin
22
+ has_rdoc: false
23
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
24
+ requirements:
25
+ - - ">"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.0.0
28
+ version:
29
+ platform: ruby
30
+ signing_key:
31
+ cert_chain:
32
+ post_install_message:
33
+ authors:
34
+ - markbates
35
+ files:
36
+ - active_presenter_generator.rb
37
+ - lib/tasks/rubyforge_config.yml
38
+ - templates/app/presenters/presenter.template
39
+ test_files: []
40
+
41
+ rdoc_options: []
42
+
43
+ extra_rdoc_files: []
44
+
45
+ executables: []
46
+
47
+ extensions: []
48
+
49
+ requirements: []
50
+
51
+ dependencies: []
52
+