herbie 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/lib/herbie.rb CHANGED
@@ -3,5 +3,5 @@ require 'herbie/generic_helpers.rb'
3
3
  require 'herbie/html_helpers.rb'
4
4
 
5
5
  module Herbie
6
- VERSION = '0.1.3'
6
+ VERSION = '0.1.5'
7
7
  end
@@ -2,7 +2,7 @@ module Herbie
2
2
  module Helpers
3
3
  def tag(name, attrs={}, &block)
4
4
  if block_given?
5
- erb_concat "<#{name}#{' ' + attributes(attrs) unless attrs.nil? || attrs.empty?}>#{capture_erb(&block)}</#{name}>"
5
+ erb_concat "<#{name}#{' ' + attributes(attrs) unless attrs.nil? || attrs.empty?}>\n#{capture_erb(&block)}\n</#{name}>"
6
6
  elsif !attrs[:content].nil?
7
7
  content = attrs.delete :content
8
8
  "<#{name}#{' ' + attributes(attrs) unless attrs.empty?}>#{content}</#{name}>"
@@ -44,7 +44,7 @@ module Herbie
44
44
  if block_given?
45
45
  erb_concat "#{tag :script, attrs}\n#{capture_erb(&block)}\n</script>"
46
46
  else
47
- source = "/javascripts/#{source}" unless source.nil? || source.match(/^\//) || source.match(/^http/)
47
+ source = "/javascripts/#{source}" unless source.nil? || source.match(/^\/{1,2}|^http:\/\/|^https:\/\//)
48
48
  attrs = attrs.merge({:src => source})
49
49
  "#{tag :script, attrs}</script>"
50
50
  end
@@ -60,7 +60,7 @@ module Herbie
60
60
  default_attrs.delete :rel
61
61
  erb_concat "#{tag :style, default_attrs.merge(attrs)}\n#{capture_erb(&block)}\n</style>"
62
62
  else
63
- href = "/stylesheets/#{href}" unless href.match(/^\//)
63
+ href = "/stylesheets/#{href}" unless href.match(/^\/{1,2}|^http:\/\/|^https:\/\//)
64
64
  attrs = default_attrs.merge({:href => href}.merge(attrs))
65
65
  "#{tag :link, attrs}"
66
66
  end
@@ -75,5 +75,19 @@ module Herbie
75
75
  end
76
76
  end
77
77
 
78
+ def content_for(name, content=nil, &block)
79
+ @captured_content ||= {}
80
+
81
+ if content || block_given?
82
+ if @captured_content.key? name
83
+ @capured_content[name] += content || capture_erb(&block)
84
+ else
85
+ @capured_content[name] = content || capture_erb(&block)
86
+ end
87
+ else
88
+ @captured_content[name]
89
+ end
90
+ end
91
+
78
92
  end
79
93
  end
data/spec/herbie_spec.rb CHANGED
@@ -58,7 +58,7 @@ HTML
58
58
 
59
59
  it "should output all nested tag method calls" do
60
60
  pending "Need a mechanism for capturing erb output within a passed block"
61
- markup = "<div class=\"container\"><h1>Status Report</h1></div>"
61
+ markup = "<div class=\"container\">\n<h1>Status Report</h1>\n</div>"
62
62
  result = tag :div, :class => "container" do
63
63
  tag :h1, :content => "Status Report"
64
64
  end
@@ -115,8 +115,10 @@ MARKUP
115
115
  script("/path/to/script.js").should == "<script type=\"text/javascript\" charset=\"utf-8\" src=\"/path/to/script.js\"></script>"
116
116
  end
117
117
 
118
- it "should output a script with an absolute path to the script if the path provided begins with http" do
119
- script("http://code.jquery.com/jquery.js").should == "<script type=\"text/javascript\" charset=\"utf-8\" src=\"http://code.jquery.com/jquery.js\"></script>"
118
+ it "should output a script with an absolute path to the script if the path provided begins with http://, https:// or //" do
119
+ script("http://code.jquery.com/jquery.js").should == "<script type=\"text/javascript\" charset=\"utf-8\" src=\"http://code.jquery.com/jquery.js\"></script>" and
120
+ script("https://code.jquery.com/jquery.js").should == "<script type=\"text/javascript\" charset=\"utf-8\" src=\"https://code.jquery.com/jquery.js\"></script>" and
121
+ script("//code.jquery.com/jquery.js").should == "<script type=\"text/javascript\" charset=\"utf-8\" src=\"//code.jquery.com/jquery.js\"></script>"
120
122
  end
121
123
 
122
124
  it "should output a script element with arbitrary javascript content provided by a block" do
@@ -124,6 +126,12 @@ MARKUP
124
126
  script_block = Proc.new { "function hello_world(){ console.log(\"hello world!\"); }" }
125
127
  script(&script_block).should == "<script type=\"text/javascript\" charset=\"utf-8\">\n#{capture_erb(&script_block)}\n</script>"
126
128
  end
129
+
130
+ it "should output a jQuery script include with the specified options" do
131
+ pending "NYI"
132
+
133
+ jquery(:version => "1.5.0", :min => false, :cdn => :google).should == "<script type=\"text/javascript\" charset=\"utf-8\" src=\"\"></script>"
134
+ end
127
135
  end
128
136
 
129
137
  describe "stylesheet helpers" do
@@ -135,6 +143,12 @@ MARKUP
135
143
  style("/style/foo.css").should == "<link rel=\"stylesheet\" type=\"text/css\" href=\"/style/foo.css\">"
136
144
  end
137
145
 
146
+ it "should output a link element with the absolute path to the stylesheet if the path provided starts with http://, https:// or //" do
147
+ style("http://foo.com/style/bar.css").should == "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://foo.com/style/bar.css\">" and
148
+ style("https://foo.com/style/bar.css").should == "<link rel=\"stylesheet\" type=\"text/css\" href=\"https://foo.com/style/bar.css\">" and
149
+ style("//foo.com/style/bar.css").should == "<link rel=\"stylesheet\" type=\"text/css\" href=\"//foo.com/style/bar.css\">"
150
+ end
151
+
138
152
  it "should output a link element with appropriate media query attribute if provided" do
139
153
  media = "screen and (min-width:500px)"
140
154
  style("/style/foo.css", :media => media).should == "<link rel=\"stylesheet\" type=\"text/css\" href=\"/style/foo.css\" media=\"#{media}\">"
@@ -181,4 +195,17 @@ MARKUP
181
195
  link_to(href, text, attrs, &markup_block).should == "<a href=\"#{href}\" class=\"#{attrs[:class]}\">#{capture_erb(&markup_block)}</a>"
182
196
  end
183
197
  end
198
+
199
+ describe "content helpers" do
200
+ it "should accept a named block of content which can then be displayed elsewhere later" do
201
+ pending "Need a mechanism for capturing erb output within a passed block"
202
+
203
+ content_for :script do
204
+ "<script type=\"text/javascript\" charset=\"utf-8\" src=\"/application.js\">"
205
+ # Tilt['erb'].new { "%><%= script 'application.js' %><%" }
206
+ end
207
+
208
+ content_for(:script).should == "<script type=\"text/javascript\" charset=\"utf-8\" src=\"/application.js\">"
209
+ end
210
+ end
184
211
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: herbie
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.3
5
+ version: 0.1.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ben Darlow
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-10-10 00:00:00 +01:00
13
+ date: 2011-12-08 00:00:00 +00:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency