partializer 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -61,10 +61,27 @@ And for the `properties/show/main/lower/_communication` partial, simply:
61
61
 
62
62
  ```haml
63
63
  #communication.column
64
- = render_partials partialize(partializer, 'communication')
64
+ = render_partials partialize('communication')
65
65
  ```
66
66
 
67
67
  Since the partializer (with previous context) will be passed down as a local and used by `partialize` to resolve the context (partial path). Sleek :)
68
+ Partialize will take advantage of this fact and use this local variable unless a specific Partializer is passed in as the first argument.
69
+
70
+ *Context path building*
71
+
72
+ Since the partializer has knowledge of the current context, you can use it to generate the path of a partial. The `#partial_path` method will raise an erorr if the name of the partial is not registered with that partializer.
73
+
74
+ ```haml
75
+ #communication.column
76
+ = render partial: partializer.partial_path(:sidebar)
77
+ ```
78
+
79
+ You can also use the partializer to build a relative path to its context (path)
80
+
81
+ ```haml
82
+ #communication.column
83
+ = render partial: partializer.build_path('sidebar/upper')
84
+ ```
68
85
 
69
86
  ### The REAL power!
70
87
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -10,7 +10,9 @@ class Partializer
10
10
  autoload :Collection, 'partializer/collection'
11
11
  autoload :Resolver, 'partializer/resolver'
12
12
  autoload :Partials, 'partializer/partials'
13
+ autoload :PathHelper, 'partializer/path_helper'
13
14
 
15
+ class InvalidPartialError < StandardError; end
14
16
 
15
17
  def partials_for name, *args
16
18
  hash = args.flatten.inject({}) do |res, arg|
@@ -1,6 +1,7 @@
1
1
  class Partializer
2
2
  class Collection
3
3
  include Enumerable
4
+ include Partializer::PathHelper
4
5
 
5
6
  attr_reader :hashie, :name, :ns, :action
6
7
 
@@ -3,6 +3,7 @@ require 'partializer/partial'
3
3
  class Partializer
4
4
  class Partials
5
5
  include Enumerable
6
+ include Partializer::PathHelper
6
7
 
7
8
  attr_reader :name
8
9
 
@@ -0,0 +1,13 @@
1
+ class Partializer
2
+ module PathHelper
3
+ def partial_path name
4
+ return File.join(to_partial_path, name.to_s) if partials.include? name.to_sym
5
+ raise Partializer::InvalidPartialError, "the partial #{name} is not registered for this Partializer"
6
+ end
7
+
8
+ def build_path path
9
+ raise ArgumentError, "Must take a path argument" unless path
10
+ File.join(to_partial_path, path.to_s.gsub('.', '/'))
11
+ end
12
+ end
13
+ end
@@ -1,6 +1,17 @@
1
1
  class Partializer
2
2
  module ViewHelper
3
- def partialize subject, path, &block
3
+ def partialize *args, &block
4
+ case args.size
5
+ when 2
6
+ subject = args.first
7
+ path = args.last
8
+ when 1
9
+ path = args.first
10
+ subject = partializer
11
+ else
12
+ raise ArgumentError, "partialize takes 1 or 2 args, was: #{args}"
13
+ end
14
+
4
15
  parts = case subject
5
16
  when String
6
17
  subject.split('#')
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "partializer"
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kristian Mandrup"]
12
- s.date = "2012-08-29"
12
+ s.date = "2012-08-30"
13
13
  s.description = "Makes it easy to render the subpartials of any partial"
14
14
  s.email = "kmandrup@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "lib/partializer/engine.rb",
31
31
  "lib/partializer/partial.rb",
32
32
  "lib/partializer/partials.rb",
33
+ "lib/partializer/path_helper.rb",
33
34
  "lib/partializer/resolver.rb",
34
35
  "lib/partializer/view_helper.rb",
35
36
  "partializer.gemspec",
@@ -22,6 +22,10 @@ describe Partializer::Collection do
22
22
  subject.name.should == 'hash'
23
23
  end
24
24
 
25
+ specify do
26
+ subject.partial_path(:sidebar).should == 'hash/sidebar'
27
+ end
28
+
25
29
  specify do
26
30
  subject.partials.should be_a Partializer::Partials
27
31
  end
@@ -6,6 +6,8 @@ describe Partializer::ViewHelper do
6
6
  let(:main_partializer) { partialize('properties#show', 'main') }
7
7
  let(:my_main_partializer) { partialize('properties#show', 'my_main') }
8
8
 
9
+ let(:partializer) { main_partializer }
10
+
9
11
  describe '#initialize' do
10
12
  subject { main_partializer }
11
13
 
@@ -13,6 +15,15 @@ describe Partializer::ViewHelper do
13
15
  its(:path) { should == 'properties/show/main' }
14
16
  its(:to_partial_path) { should == 'properties/show/main' }
15
17
 
18
+ specify do
19
+ expect { subject.partial_path(:sidebar) }.to raise_error(Partializer::InvalidPartialError)
20
+ end
21
+
22
+ specify do
23
+ subject.build_path(:sidebar).should == 'properties/show/main/sidebar'
24
+ end
25
+
26
+
16
27
  specify do
17
28
  subject.partials.should include(:upper, :lower)
18
29
  end
@@ -30,4 +41,11 @@ describe Partializer::ViewHelper do
30
41
  its(:name) { should == 'my_main.lower'}
31
42
  its(:path) { should == 'properties/show/my_main/lower' }
32
43
  end
44
+
45
+ describe 'implicit partializer in scope' do
46
+ subject { partialize 'lower'}
47
+
48
+ its(:name) { should == 'my_main.lower'}
49
+ its(:path) { should == 'properties/show/my_main/lower' }
50
+ end
33
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: partializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-29 00:00:00.000000000 Z
12
+ date: 2012-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie
@@ -144,6 +144,7 @@ files:
144
144
  - lib/partializer/engine.rb
145
145
  - lib/partializer/partial.rb
146
146
  - lib/partializer/partials.rb
147
+ - lib/partializer/path_helper.rb
147
148
  - lib/partializer/resolver.rb
148
149
  - lib/partializer/view_helper.rb
149
150
  - partializer.gemspec
@@ -169,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
170
  version: '0'
170
171
  segments:
171
172
  - 0
172
- hash: 3003520417573953991
173
+ hash: -4586459926647606653
173
174
  required_rubygems_version: !ruby/object:Gem::Requirement
174
175
  none: false
175
176
  requirements: