pancake 0.1.29 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/README.textile +0 -4
  2. data/Rakefile +1 -32
  3. data/TODO.textile +19 -0
  4. data/bin/pancake-gen +1 -0
  5. data/lib/pancake.rb +26 -39
  6. data/lib/pancake/bootloaders.rb +2 -2
  7. data/lib/pancake/configuration.rb +1 -1
  8. data/lib/pancake/core_ext/class.rb +3 -3
  9. data/lib/pancake/errors.rb +6 -8
  10. data/lib/pancake/generators.rb +1 -0
  11. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config/environments/development.rb.tt +0 -3
  12. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config/environments/production.rb.tt +0 -3
  13. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config/environments/staging.rb.tt +0 -3
  14. data/lib/pancake/hooks/inheritable_inner_classes.rb +9 -10
  15. data/lib/pancake/hooks/on_inherit.rb +7 -7
  16. data/lib/pancake/logger.rb +1 -14
  17. data/lib/pancake/master.rb +7 -45
  18. data/lib/pancake/middleware.rb +11 -64
  19. data/lib/pancake/mixins/publish.rb +20 -20
  20. data/lib/pancake/mixins/render.rb +59 -69
  21. data/lib/pancake/mixins/render/template.rb +1 -1
  22. data/lib/pancake/mixins/render/view_context.rb +143 -7
  23. data/lib/pancake/mixins/request_helper.rb +38 -1
  24. data/lib/pancake/mixins/stack_helper.rb +2 -2
  25. data/lib/pancake/paths.rb +1 -1
  26. data/lib/pancake/router.rb +10 -2
  27. data/lib/pancake/stack/bootloader.rb +12 -1
  28. data/lib/pancake/stack/router.rb +2 -1
  29. data/lib/pancake/stack/stack.rb +60 -2
  30. data/lib/pancake/stacks/short/controller.rb +58 -3
  31. data/lib/pancake/stacks/short/default/views/base.html.haml +1 -1
  32. data/lib/pancake/stacks/short/default/views/error.html.haml +12 -0
  33. data/lib/pancake/stacks/short/stack.rb +1 -0
  34. data/spec/pancake/fixtures/render_templates/alternate.foo_env.html.haml +1 -0
  35. data/spec/pancake/fixtures/render_templates/alternate.html.haml +1 -0
  36. data/spec/pancake/fixtures/render_templates/view_context/capture_erb.erb +1 -1
  37. data/spec/pancake/fixtures/render_templates/view_context/capture_haml.haml +1 -1
  38. data/spec/pancake/fixtures/render_templates/view_context/concat_erb.erb +1 -1
  39. data/spec/pancake/fixtures/render_templates/view_context/concat_haml.haml +2 -1
  40. data/spec/pancake/middleware_spec.rb +4 -26
  41. data/spec/pancake/mixins/render/view_context_spec.rb +15 -23
  42. data/spec/pancake/mixins/render_spec.rb +54 -0
  43. data/spec/pancake/pancake_spec.rb +0 -22
  44. data/spec/spec.opts +2 -0
  45. data/spec/spec_helper.rb +1 -0
  46. metadata +193 -108
  47. data/TODO +0 -7
  48. data/bin/jeweler +0 -19
  49. data/lib/pancake/mixins/render/render.rb +0 -197
data/TODO DELETED
@@ -1,7 +0,0 @@
1
- TODO:
2
-
3
- * Add default middleware to the short stack
4
- * Add before/after filters to the short stack
5
- * move the mount apps bootloader to after the before_build_stack bootloader which will allow us to mount application later and allow devs to add new things just before building the stack.
6
- * optimise template lookup
7
-
@@ -1,19 +0,0 @@
1
- #!/opt/local/bin/ruby
2
- #
3
- # This file was generated by RubyGems.
4
- #
5
- # The application 'jeweler' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
8
-
9
- require 'rubygems'
10
-
11
- version = ">= 0"
12
-
13
- if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
14
- version = $1
15
- ARGV.shift
16
- end
17
-
18
- gem 'jeweler', version
19
- load Gem.bin_path('jeweler', 'jeweler', version)
@@ -1,197 +0,0 @@
1
- module Pancake
2
- module Mixins
3
- module Render
4
- class ViewContext
5
- class << self
6
- def _concat_methods
7
- @_concat_methods ||= {}
8
- end
9
-
10
- def _capture_methods
11
- @_capture_methods ||= {}
12
- end
13
-
14
- def capture_method_for(item)
15
- key = case item
16
- when Template
17
- item.renderer.class
18
- when Tilt::Template
19
- item
20
- end
21
- _capture_methods[key]
22
- end
23
-
24
- def concat_method_for(item)
25
- key = case item
26
- when Template
27
- item.renderer.class
28
- when Tilt::Template
29
- item
30
- end
31
- _concat_methods[key]
32
- end
33
- end
34
-
35
- _capture_methods[Tilt::HamlTemplate ] = :_haml_capture
36
- _capture_methods[Tilt::ERBTemplate ] = :_erb_capture
37
- _capture_methods[Tilt::ErubisTemplate ] = :_erb_capture
38
- _concat_methods[ Tilt::HamlTemplate ] = :_haml_concat
39
- _concat_methods[ Tilt::ERBTemplate ] = :_erb_concat
40
- _concat_methods[ Tilt::ErubisTemplate ] = :_erb_concat
41
-
42
- module Renderer
43
- def render(template, opts = {}, &blk)
44
- template = _view_context_for.template(template)
45
- raise TemplateNotFound unless template
46
- result = _with_renderer template do
47
- _current_renderer.render(self, opts, &blk) # only include the block once
48
- end
49
-
50
- if @_inherit_helper.inherits_from
51
- next_template = template.owner.template(@_inherit_helper.inherits_from)
52
- @_inherit_helper.inherits_from = nil
53
- result = _with_renderer next_template do
54
- render(next_template, opts)
55
- end
56
- end
57
- result
58
- end
59
-
60
- def partial(*args)
61
- _view_context_for.partial(*args)
62
- end
63
-
64
- def _with_renderer(renderer)
65
- orig_renderer = @_current_renderer
66
- @_current_renderer = renderer
67
- result = yield
68
- @_current_renderer = orig_renderer
69
- result
70
- end
71
-
72
- def _current_renderer
73
- @_current_renderer
74
- end
75
-
76
- def content_type
77
- @_view_context_for.content_type
78
- end
79
- end # Renderer
80
-
81
- module Capture
82
- def capture(opts = {}, &block)
83
- opts[:_capture_method] ||= ViewContext.capture_method_for(_current_renderer)
84
- raise "CaptureMethod not specified" unless opts[:_capture_method]
85
- send(opts[:_capture_method], block)
86
- end
87
-
88
- def concat(string, opts = {})
89
- opts[:_concat_method] ||= ViewContext.concat_method_for(_current_renderer)
90
- raise "ConcatMethod not specified" unless opts[:_concat_method]
91
- send(opts[:_concat_method], string)
92
- end
93
-
94
- def _haml_capture(block)
95
- with_haml_buffer Haml::Buffer.new(nil, :encoding => "UTF-8") do
96
- capture_haml(&block)
97
- end
98
- end
99
-
100
- def _erb_capture(block)
101
- _out_buf, @_out_buf = @_out_buf, ""
102
- block.call
103
- ret = @_out_buf
104
- @_out_buf = _out_buf
105
- ret
106
- end
107
-
108
- def _haml_concat(string)
109
- haml_concat string
110
- end
111
-
112
- def _erb_concat(string)
113
- @_out_buf << string
114
- end
115
- end # Capture
116
-
117
- module ContentInheritance
118
- def initialize(*args)
119
- super()
120
- @_inherit_helper = Helper.new
121
- end
122
-
123
- def inherits_from(ntos, name_or_opts = nil, opts = {})
124
- name_or_template = case ntos
125
- when String, Symbol
126
- if ntos == :default!
127
- begin
128
- Pancake.default_base_template(:format => content_type)
129
- rescue
130
- :base
131
- end
132
- else
133
- ntos
134
- end
135
- else
136
- if name_or_opts.kind_of?(Hash)
137
- opts = name_or_opts
138
- name_or_opts = nil
139
- end
140
- name_or_opts ||= ntos.base_template_name
141
- ntos.template(name_or_opts, opts)
142
- end
143
- @_inherit_helper.inherits_from = name_or_template
144
- end
145
-
146
- def content_block(label = nil, &block)
147
- return self if label.nil?
148
- current_label = @_inherit_helper.current_label
149
- @_inherit_helper.current_label = label
150
- capture_method = ViewContext.capture_method_for(_current_renderer)
151
- @_inherit_helper.blocks[label] << [block, capture_method]
152
- if @_inherit_helper.inherits_from.nil?
153
- result = _capture_content_block(label)
154
- send(ViewContext.concat_method_for(_current_renderer), result)
155
- end
156
- @_inherit_helper.current_label = current_label
157
- end
158
-
159
- def super
160
- @_inherit_helper.increment_super!
161
- result = _capture_content_block(@_inherit_helper.current_label)
162
- @_inherit_helper.decrement_super!
163
- result
164
- end
165
-
166
- private
167
- def _capture_content_block(label)
168
- blk, meth = @_inherit_helper.block_for(label)
169
- send(meth, blk)
170
- end
171
-
172
- class Helper
173
- attr_accessor :inherits_from, :current_label
174
- attr_reader :blocks, :super_index
175
-
176
- def initialize
177
- @blocks = Hash.new{|h,k| h[k] = []}
178
- @super_index = 0
179
- end
180
-
181
- def block_for(label)
182
- @blocks[label][@super_index]
183
- end
184
-
185
- def increment_super!
186
- @super_index += 1
187
- end
188
-
189
- def decrement_super!
190
- @super_index -= 1
191
- end
192
- end
193
- end
194
- end # ViewContext
195
- end
196
- end
197
- end