adamh-html_namespacing 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +14 -2
- data/lib/html_namespacing/plugin/{dom_scan_jquery.compressed.js → dom_scan_jquery.js.compressed} +0 -0
- data/lib/html_namespacing/plugin/rails.rb +18 -30
- data/{test/c_extension_test.rb → spec/c_extension_spec.rb} +13 -15
- data/{test/test_helper.rb → spec/spec_helper.rb} +2 -1
- metadata +23 -26
- data/Manifest +0 -16
- data/Rakefile +0 -12
- data/html_namespacing.gemspec +0 -33
data/README.rdoc
CHANGED
@@ -183,7 +183,7 @@ files, if you are using <tt>html_namespacing_javascript_tag()</tt>. For
|
|
183
183
|
instance, if <tt>:javascript_optional_suffix</tt> is <tt>'compressed'</tt> and
|
184
184
|
you rendered the partial <tt>app/views/foos/_foo.html.haml</tt>, then the
|
185
185
|
(presumably minified) file
|
186
|
-
<tt>app/javascripts/views/foos/_foo.compressed
|
186
|
+
<tt>app/javascripts/views/foos/_foo.js.compressed</tt> will be included if it
|
187
187
|
exists (otherwise the standard <tt>app/javascripts/views/foos/_foo.js</tt>,
|
188
188
|
otherwise nothing).
|
189
189
|
|
@@ -251,7 +251,7 @@ reader.
|
|
251
251
|
|
252
252
|
Use the following Rails helper, possibly in your default layout:
|
253
253
|
|
254
|
-
|
254
|
+
html_namespacing_javascript_tag(:jquery)
|
255
255
|
|
256
256
|
Afterwards, similar to our namespaced CSS framework above, you can easily
|
257
257
|
namespace JavaScript behavior:
|
@@ -271,6 +271,18 @@ available: <tt>NS</tt>, the namespace string, and <tt>$NS()</tt>, a function
|
|
271
271
|
returning a jQuery object containing all elements at the root of the
|
272
272
|
namespace.)
|
273
273
|
|
274
|
+
In a more complex setup, you may prefer to add another extension, like so:
|
275
|
+
|
276
|
+
html_namespacing_javascript_tag(:jquery, :format => :mobile)
|
277
|
+
|
278
|
+
This will find <tt>app/javascripts/views/foos/_description.mobile.js</tt> and
|
279
|
+
will ignore <tt>app/javascripts/views/foos/_description.js</tt>. Neglecting the
|
280
|
+
second parameter, <tt>html_namespacing_javascript_tag()</tt> would include
|
281
|
+
<tt>_description.js</tt> and <em>exclude</em> <tt>_description.mobile.js</tt>:
|
282
|
+
only single-extension JavaScript will be included. To include both, use:
|
283
|
+
|
284
|
+
html_namespacing_javascript_tag(:jquery, :format => [nil, :mobile])
|
285
|
+
|
274
286
|
=== Caching and JavaScript Namespacing
|
275
287
|
|
276
288
|
Caching throws a wrench into operations.
|
data/lib/html_namespacing/plugin/{dom_scan_jquery.compressed.js → dom_scan_jquery.js.compressed}
RENAMED
File without changes
|
@@ -36,14 +36,17 @@ module HtmlNamespacing
|
|
36
36
|
end
|
37
37
|
|
38
38
|
module Helpers
|
39
|
-
def html_namespacing_javascript_tag(framework)
|
40
|
-
files = html_namespacing_files
|
39
|
+
def html_namespacing_javascript_tag(framework, options = {})
|
40
|
+
files = html_namespacing_files(options[:format])
|
41
|
+
root = Pathname.new(::HtmlNamespacing::Plugin::Rails.javascript_root)
|
42
|
+
|
41
43
|
unless files.empty?
|
42
44
|
r = "<script type=\"text/javascript\"><!--//--><![CDATA[//><!--\n"
|
43
45
|
r << HtmlNamespaceJs[framework][:top]
|
44
46
|
r << "\n"
|
45
|
-
files.collect do |
|
46
|
-
|
47
|
+
files.collect do |path|
|
48
|
+
relative_path = Pathname.new(path).relative_path_from(root)
|
49
|
+
r << html_namespacing_inline_js(framework, relative_path.to_s, path)
|
47
50
|
r << "\n"
|
48
51
|
end
|
49
52
|
r << "//--><!]]></script>"
|
@@ -54,40 +57,25 @@ module HtmlNamespacing
|
|
54
57
|
|
55
58
|
HtmlNamespaceJs = {
|
56
59
|
:jquery => {
|
57
|
-
:top => File.open(File.join(File.dirname(__FILE__), 'dom_scan_jquery.compressed
|
60
|
+
:top => File.open(File.join(File.dirname(__FILE__), 'dom_scan_jquery.js.compressed')) { |f| f.read },
|
58
61
|
:each => 'jQuery(function($){var NS=%s,$NS=function(){return $($.NS[NS]||[])};%s});'
|
59
62
|
}
|
60
63
|
}
|
61
64
|
|
62
|
-
def html_namespacing_files
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
prefix = File.join(root, relative_path)
|
72
|
-
absolute_path = "#{prefix}.js"
|
73
|
-
absolute_path_with_suffix = "#{prefix}.#{suffix}.js" if suffix
|
74
|
-
|
75
|
-
if suffix && File.exist?(absolute_path_with_suffix)
|
76
|
-
[relative_path, absolute_path_with_suffix]
|
77
|
-
elsif File.exist?(absolute_path)
|
78
|
-
[relative_path, absolute_path]
|
79
|
-
else
|
80
|
-
nil
|
81
|
-
end
|
65
|
+
def html_namespacing_files(format)
|
66
|
+
(Array === format ? format : [format]).inject([]) do |r, f|
|
67
|
+
r.concat(GlobFu.find(
|
68
|
+
html_namespacing_rendered_paths,
|
69
|
+
:suffix => 'js',
|
70
|
+
:extra_suffix => f && f.to_s,
|
71
|
+
:optional_suffix => ::HtmlNamespacing::Plugin::Rails.javascript_optional_suffix,
|
72
|
+
:root => ::HtmlNamespacing::Plugin::Rails.javascript_root
|
73
|
+
))
|
82
74
|
end
|
83
|
-
|
84
|
-
r.compact!
|
85
|
-
|
86
|
-
r
|
87
75
|
end
|
88
76
|
|
89
77
|
def html_namespacing_inline_js(framework, relative_path, absolute_path)
|
90
|
-
namespace = ::HtmlNamespacing::Plugin::Rails.path_to_namespace(relative_path)
|
78
|
+
namespace = ::HtmlNamespacing::Plugin::Rails.path_to_namespace(relative_path.sub(/\..*$/, ''))
|
91
79
|
content = File.open(absolute_path) { |f| f.read }
|
92
80
|
|
93
81
|
HtmlNamespaceJs[framework][:each] % [namespace.to_json, content]
|
@@ -1,24 +1,26 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require File.dirname(__FILE__) + '/
|
3
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
4
4
|
|
5
|
-
|
5
|
+
describe(HtmlNamespacing) do
|
6
6
|
private
|
7
7
|
|
8
8
|
def self.define_test(name, html, ns, expect)
|
9
|
-
|
10
|
-
|
9
|
+
it("should work with #{name}") do
|
10
|
+
f(html, ns).should == expect
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.define_failing_test(name, html)
|
15
|
-
|
16
|
-
|
17
|
-
f(html, 'X')
|
18
|
-
end
|
15
|
+
it("should fail on #{name}") do
|
16
|
+
lambda { f(html, 'X') }.should raise_error(ArgumentError)
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
20
|
+
def f(html, ns)
|
21
|
+
HtmlNamespacing::add_namespace_to_html(html, ns)
|
22
|
+
end
|
23
|
+
|
22
24
|
self.define_test('nil HTML', nil, 'X', nil)
|
23
25
|
self.define_test('nil namespace', '<div>hello</div>', nil, '<div>hello</div>')
|
24
26
|
self.define_test('nil everything', nil, nil, nil)
|
@@ -45,11 +47,7 @@ class CExtensionTest < Test::Unit::TestCase
|
|
45
47
|
self.define_test("ignores <#{tag}> tags", "<#{tag}>foo</#{tag}>", "X", "<#{tag}>foo</#{tag}>")
|
46
48
|
end
|
47
49
|
|
48
|
-
self.define_failing_test('unclosed tag
|
49
|
-
self.define_failing_test('closing tag
|
50
|
-
self.define_failing_test('wrong attr syntax
|
51
|
-
|
52
|
-
def f(html, ns)
|
53
|
-
HtmlNamespacing::add_namespace_to_html(html, ns)
|
54
|
-
end
|
50
|
+
self.define_failing_test('unclosed tag', '<div>foo')
|
51
|
+
self.define_failing_test('closing tag', 'foo</div>')
|
52
|
+
self.define_failing_test('wrong attr syntax', '<div foo=bar>foo</div>')
|
55
53
|
end
|
metadata
CHANGED
@@ -1,18 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adamh-html_namespacing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- adamh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-19 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: adamh-glob_fu
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.3
|
24
|
+
version:
|
16
25
|
description: Inserts "class=" attributes within snippets of HTML so CSS and JavaScript can use automatic scopes
|
17
26
|
email: adam@adamhooper.com
|
18
27
|
executables: []
|
@@ -22,36 +31,24 @@ extensions:
|
|
22
31
|
extra_rdoc_files:
|
23
32
|
- README.rdoc
|
24
33
|
files:
|
25
|
-
- README.rdoc
|
26
|
-
- Rakefile
|
27
|
-
- test/c_extension_test.rb
|
28
|
-
- test/test_helper.rb
|
29
|
-
- ext/html_namespacing/extconf.rb
|
30
|
-
- ext/html_namespacing/html_namespacing.h
|
31
34
|
- ext/html_namespacing/html_namespacing.c
|
35
|
+
- ext/html_namespacing/html_namespacing.h
|
32
36
|
- ext/html_namespacing/html_namespacing_ext.c
|
33
37
|
- lib/html_namespacing.rb
|
34
38
|
- lib/html_namespacing/plugin.rb
|
35
|
-
- lib/html_namespacing/plugin/dom_scan_jquery.compressed.js
|
36
|
-
- lib/html_namespacing/plugin/rails.rb
|
37
39
|
- lib/html_namespacing/plugin/dom_scan_jquery.js
|
40
|
+
- lib/html_namespacing/plugin/dom_scan_jquery.js.compressed
|
41
|
+
- lib/html_namespacing/plugin/rails.rb
|
38
42
|
- lib/html_namespacing/plugin/sass.rb
|
39
|
-
-
|
40
|
-
- Manifest
|
43
|
+
- README.rdoc
|
41
44
|
has_rdoc: true
|
42
45
|
homepage: http://github.com/adamh/html_namespacing
|
43
46
|
licenses:
|
44
47
|
post_install_message:
|
45
48
|
rdoc_options:
|
46
|
-
- --
|
47
|
-
- --inline-source
|
48
|
-
- --title
|
49
|
-
- Html_namespacing
|
50
|
-
- --main
|
51
|
-
- README.rdoc
|
49
|
+
- --charset=UTF-8
|
52
50
|
require_paths:
|
53
51
|
- lib
|
54
|
-
- ext
|
55
52
|
required_ruby_version: !ruby/object:Gem::Requirement
|
56
53
|
requirements:
|
57
54
|
- - ">="
|
@@ -62,15 +59,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
59
|
requirements:
|
63
60
|
- - ">="
|
64
61
|
- !ruby/object:Gem::Version
|
65
|
-
version: "
|
62
|
+
version: "0"
|
66
63
|
version:
|
67
64
|
requirements: []
|
68
65
|
|
69
|
-
rubyforge_project:
|
66
|
+
rubyforge_project:
|
70
67
|
rubygems_version: 1.3.5
|
71
68
|
signing_key:
|
72
69
|
specification_version: 2
|
73
70
|
summary: Automatic HTML namespacing
|
74
71
|
test_files:
|
75
|
-
-
|
76
|
-
-
|
72
|
+
- spec/c_extension_spec.rb
|
73
|
+
- spec/spec_helper.rb
|
data/Manifest
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
README.rdoc
|
2
|
-
Rakefile
|
3
|
-
test/c_extension_test.rb
|
4
|
-
test/test_helper.rb
|
5
|
-
ext/html_namespacing/extconf.rb
|
6
|
-
ext/html_namespacing/html_namespacing.h
|
7
|
-
ext/html_namespacing/html_namespacing.c
|
8
|
-
ext/html_namespacing/html_namespacing_ext.c
|
9
|
-
lib/html_namespacing.rb
|
10
|
-
lib/html_namespacing/plugin.rb
|
11
|
-
lib/html_namespacing/plugin/dom_scan_jquery.compressed.js
|
12
|
-
lib/html_namespacing/plugin/rails.rb
|
13
|
-
lib/html_namespacing/plugin/dom_scan_jquery.js
|
14
|
-
lib/html_namespacing/plugin/sass.rb
|
15
|
-
html_namespacing.gemspec
|
16
|
-
Manifest
|
data/Rakefile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'echoe'
|
4
|
-
|
5
|
-
Echoe.new('html_namespacing', '0.1.3') do |p|
|
6
|
-
p.author = 'Adam Hooper'
|
7
|
-
p.email = 'adam@adamhooper.com'
|
8
|
-
p.summary = 'Automatic HTML namespacing'
|
9
|
-
p.description = 'Inserts "class=" attributes within snippets of HTML so CSS and JavaScript can use automatic scopes'
|
10
|
-
p.url = 'http://github.com/adamh/html_namespacing'
|
11
|
-
p.rdoc_files = ['README.rdoc'] # echoe seems to gather everything twice
|
12
|
-
end
|
data/html_namespacing.gemspec
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = %q{html_namespacing}
|
5
|
-
s.version = "0.1.3"
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["Adam Hooper"]
|
9
|
-
s.date = %q{2009-08-17}
|
10
|
-
s.description = %q{Inserts "class=" attributes within snippets of HTML so CSS and JavaScript can use automatic scopes}
|
11
|
-
s.email = %q{adam@adamhooper.com}
|
12
|
-
s.extensions = ["ext/html_namespacing/extconf.rb"]
|
13
|
-
s.extra_rdoc_files = ["README.rdoc"]
|
14
|
-
s.files = ["README.rdoc", "Rakefile", "test/c_extension_test.rb", "test/test_helper.rb", "ext/html_namespacing/extconf.rb", "ext/html_namespacing/html_namespacing.h", "ext/html_namespacing/html_namespacing.c", "ext/html_namespacing/html_namespacing_ext.c", "lib/html_namespacing.rb", "lib/html_namespacing/plugin.rb", "lib/html_namespacing/plugin/dom_scan_jquery.compressed.js", "lib/html_namespacing/plugin/rails.rb", "lib/html_namespacing/plugin/dom_scan_jquery.js", "lib/html_namespacing/plugin/sass.rb", "html_namespacing.gemspec", "Manifest"]
|
15
|
-
s.has_rdoc = true
|
16
|
-
s.homepage = %q{http://github.com/adamh/html_namespacing}
|
17
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Html_namespacing", "--main", "README.rdoc"]
|
18
|
-
s.require_paths = ["lib", "ext"]
|
19
|
-
s.rubyforge_project = %q{html_namespacing}
|
20
|
-
s.rubygems_version = %q{1.3.1}
|
21
|
-
s.summary = %q{Automatic HTML namespacing}
|
22
|
-
s.test_files = ["test/c_extension_test.rb", "test/test_helper.rb"]
|
23
|
-
|
24
|
-
if s.respond_to? :specification_version then
|
25
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
26
|
-
s.specification_version = 2
|
27
|
-
|
28
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
29
|
-
else
|
30
|
-
end
|
31
|
-
else
|
32
|
-
end
|
33
|
-
end
|