patch-html_namespacing 0.2.0.1

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.
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/spec_helper'
4
+
5
+ describe(HtmlNamespacing) do
6
+ private
7
+
8
+ def self.define_test(name, html, ns, expect)
9
+ it("should work with #{name}") do
10
+ f(html, ns).should == expect
11
+ end
12
+ end
13
+
14
+ def self.define_failing_test(name, html)
15
+ it("should fail on #{name}") do
16
+ lambda { f(html, 'X') }.should raise_error(ArgumentError)
17
+ end
18
+ end
19
+
20
+ def f(html, ns)
21
+ HtmlNamespacing::add_namespace_to_html(html, ns)
22
+ end
23
+
24
+ self.define_test('nil HTML', nil, 'X', nil)
25
+ self.define_test('nil namespace', '<div>hello</div>', nil, '<div>hello</div>')
26
+ self.define_test('nil everything', nil, nil, nil)
27
+ self.define_test('plain text', 'hello', 'X', 'hello')
28
+ self.define_test('regular tag', '<div>hello</div>', 'X', '<div class="X">hello</div>')
29
+ self.define_test('empty tag', '<div/>', 'X', '<div class="X"/>')
30
+ self.define_test('empty tag with " />"', '<div />', 'X', '<div class="X" />')
31
+ self.define_test('empty tag with " />" and class', '<div class="A" />', 'X', '<div class="A X" />')
32
+ self.define_test('nested tag', '<div><div>hello</div></div>', 'X', '<div class="X"><div>hello</div></div>')
33
+ self.define_test('two tags', '<div>hello</div><div>goodbye</div>', 'X', '<div class="X">hello</div><div class="X">goodbye</div>')
34
+ self.define_test('existing class= tag with double-quotes', '<div class="foo">bar</div>', 'baz', '<div class="foo baz">bar</div>')
35
+ self.define_test('existing class= tag with single-quotes', "<div class='foo'>bar</div>", 'baz', "<div class='foo baz'>bar</div>")
36
+ self.define_test('other attributes are ignored', '<div id="id" class="foo" style="display:none;">bar</div>', 'baz', '<div id="id" class="foo baz" style="display:none;">bar</div>')
37
+ self.define_test('works with utf-8', '<div class="𝞪">𝟂</div>', '𝞺', '<div class="𝞪 𝞺">𝟂</div>')
38
+ self.define_test('empty tag with existing class=', '<span class="foo"/>', 'bar', '<span class="foo bar"/>')
39
+ self.define_test('works with newlines in tag', "<div\n\nclass\n\n=\n\n'foo'\n\n>bar</div>", 'baz', "<div\n\nclass\n\n=\n\n'foo baz'\n\n>bar</div>")
40
+ self.define_test('works with "\'" within \'"\' attributes', '<div title="Adam\'s House" class="foo">bar</div>', 'baz', '<div title="Adam\'s House" class="foo baz">bar</div>')
41
+ self.define_test('ignores XML prolog', '<?xml version="1.0"?><div>foo</div>', 'X', '<?xml version="1.0"?><div class="X">foo</div>')
42
+ self.define_test('ignores DOCTYPE', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><div>foo</div>', 'X', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><div class="X">foo</div>')
43
+ self.define_test('ignores CDATA', '<![CDATA[ignore <div class="foo">]] </div>]]><div>foo</div>', 'X', '<![CDATA[ignore <div class="foo">]] </div>]]><div class="X">foo</div>')
44
+ self.define_test('ignores comments', '<!-- blah <div class="foo">foo</div> - <span/>--><div>foo</div>', 'X', '<!-- blah <div class="foo">foo</div> - <span/>--><div class="X">foo</div>')
45
+ self.define_test('detects CDATA end delimiter correctly', '<![CDATA[ ]>< ]]>', 'X', '<![CDATA[ ]>< ]]>')
46
+ self.define_test('detects comment end delimiter correctly', '<!-- ->< -->', 'X', '<!-- ->< -->')
47
+
48
+ [ 'html', 'head', 'base', 'meta', 'title', 'link', 'script', 'noscript', 'style' ].each do |tag|
49
+ self.define_test("ignores <#{tag}> tags", "<#{tag}>foo</#{tag}>", "X", "<#{tag}>foo</#{tag}>")
50
+ end
51
+
52
+ self.define_failing_test('unclosed tag', '<div>foo')
53
+ self.define_failing_test('closing tag', 'foo</div>')
54
+ self.define_failing_test('wrong attr syntax', '<div foo=bar>foo</div>')
55
+ self.define_failing_test("missing closing '>' on last tag", '<div foo="bar">foo</div')
56
+ self.define_failing_test('end of string during attribute value', '<div foo="x')
57
+ self.define_failing_test('end of string during doctype declaration', '<!DOCTYPE')
58
+ end
@@ -0,0 +1,4 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+
4
+ require File.dirname(__FILE__) + '/../lib/html_namespacing'
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: patch-html_namespacing
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ - 1
10
+ version: 0.2.0.1
11
+ platform: ruby
12
+ authors:
13
+ - adamh
14
+ - oggy
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2010-04-26 00:00:00 -04:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: adamh-glob_fu
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
31
+ - 0
32
+ - 3
33
+ version: 0.0.3
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ description: Inserts "class=" attributes within snippets of HTML so CSS and JavaScript can use automatic scopes
37
+ email: adam@adamhooper.com
38
+ executables: []
39
+
40
+ extensions:
41
+ - ext/html_namespacing/extconf.rb
42
+ extra_rdoc_files:
43
+ - README.rdoc
44
+ files:
45
+ - ext/html_namespacing/html_namespacing.c
46
+ - ext/html_namespacing/html_namespacing.h
47
+ - ext/html_namespacing/html_namespacing_ext.c
48
+ - lib/html_namespacing.rb
49
+ - lib/html_namespacing/plugin.rb
50
+ - lib/html_namespacing/plugin/dom_scan_jquery.js
51
+ - lib/html_namespacing/plugin/dom_scan_jquery.js.compressed
52
+ - lib/html_namespacing/plugin/rails.rb
53
+ - lib/html_namespacing/plugin/sass.rb
54
+ - README.rdoc
55
+ has_rdoc: true
56
+ homepage: http://github.com/adamh/html_namespacing
57
+ licenses: []
58
+
59
+ post_install_message:
60
+ rdoc_options:
61
+ - --charset=UTF-8
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
70
+ version: "0"
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ requirements: []
79
+
80
+ rubyforge_project:
81
+ rubygems_version: 1.3.6
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: Automatic HTML namespacing
85
+ test_files:
86
+ - spec/c_extension_spec.rb
87
+ - spec/spec_helper.rb