ayril 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,27 @@
1
+ require "rubygems"
2
+ require "MacSpec"
3
+
4
+ require File.dirname(__FILE__) + '/../lib/ayril'
5
+
6
+ # Goes without saying that this test is not enough, it's a start since the gemification.
7
+ #
8
+ # Also, thanks for some xml freshbooks ;)
9
+
10
+ describe "Ayril" do
11
+ before do
12
+ @document = Ayril::XMLDocument.new(File.read(File.dirname(__FILE__) + '/sanity.xml'))
13
+ end
14
+
15
+ it "should parse!" do
16
+ @document.should_not be_nil
17
+ @document.class.should == Ayril::XMLDocument
18
+ end
19
+
20
+ it "should have selectors by css" do
21
+ @document.select(".can_i_has_selector").first.text.should == "4"
22
+ end
23
+
24
+ it "should have selectors by xpath" do
25
+ @document.select_by_xpath("//tax2_percent[@id='can_i_has_id']").first.text == "8"
26
+ end
27
+ end
@@ -0,0 +1,78 @@
1
+ def run(a)
2
+ IO.popen(a).read
3
+ end
4
+
5
+ NORMAL = "\e[0m"
6
+ RED = "\e[31m"
7
+ GREEN = "\e[32m"
8
+ BLUE = "\e[34m"
9
+
10
+ selectors = <<EOF
11
+ body
12
+ div
13
+ body div
14
+ div p
15
+ div > p
16
+ div + p
17
+ div ~ p
18
+ div[class^=exa][class$=mple]
19
+ div p a
20
+ div, p, a
21
+ .note
22
+ div.example
23
+ div.dialog.emphatic
24
+ ul .tocline2
25
+ div.example, div.note
26
+ #title
27
+ h1#title
28
+ div #title
29
+ ul.toc li.tocline2
30
+ ul.toc > li.tocline2
31
+ h1#title + div > p
32
+ h1[id]:contains(Selectors)
33
+ a[href][lang][class]
34
+ div[class]
35
+ div[class=example]
36
+ div[class^=exa]
37
+ div[class$=mple]
38
+ div[class*=e]
39
+ div[class|=dialog]
40
+ div[class!=made_up]
41
+ div[class~=example]
42
+ div:not(.example)
43
+ p:contains(selectors)
44
+ p:nth-child(even)
45
+ p:nth-child(2n)
46
+ p:nth-child(odd)
47
+ p:nth-child(2n+1)
48
+ p:nth-child(n)
49
+ p:only-child
50
+ p:last-child
51
+ p:first-child
52
+ EOF
53
+ selectors = selectors.split /\n/
54
+ VERBOSE = ARGV[0] == "--verbose"
55
+
56
+ path = File.expand_path './test/'
57
+ js = File.join(path, "invoke_prototype_selector.js")
58
+ rb = File.join(path, "invoke_ayril_selector.rb")
59
+
60
+ selectors.each do |test|
61
+ # The SpiderMonkey JavaScript shell also works
62
+ reference = run(["java", "org.mozilla.javascript.tools.shell.Main", js, test])
63
+ resulting = run(["macruby", rb, test])
64
+ reference.strip!; resulting.strip!
65
+
66
+ detail = "
67
+ JS: #{BLUE}#{reference}#{NORMAL}
68
+ RB: #{BLUE}#{resulting}#{NORMAL}"
69
+
70
+ passed = (reference == resulting)
71
+ if passed
72
+ puts "#{GREEN}PASS#{NORMAL} \"#{test}\"" +
73
+ (passed && VERBOSE ? "\n JS: #{BLUE}#{reference}#{NORMAL}" : '') +
74
+ (passed && VERBOSE ? "\n RB: #{BLUE}#{resulting}#{NORMAL}" : '')
75
+ else
76
+ puts "#{RED}FAIL#{NORMAL} \"#{test}\"#{detail}" + (VERBOSE ? '\n' : '')
77
+ end
78
+ end
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ayril
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Wilson Lee
9
+ - Rob Lowe
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-06-16 00:00:00 -04:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rake
18
+ prerelease: false
19
+ requirement: !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - '>='
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :development
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - '>='
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ - !ruby/object:Gem::Dependency
33
+ name: bundler
34
+ prerelease: false
35
+ requirement: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0
41
+ type: :development
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ - !ruby/object:Gem::Dependency
49
+ name: MacSpec
50
+ prerelease: false
51
+ requirement: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.4.5
57
+ type: :development
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: 0.4.5
64
+ description: An XML library for MacRuby that is built on top of Cocoa NSXML classes
65
+ email:
66
+ - kourge@gmail.com
67
+ - rob@iblargz.com
68
+ executables: []
69
+ extensions: []
70
+ extra_rdoc_files:
71
+ - LICENSE
72
+ - CHANGES
73
+ - README.md
74
+ files:
75
+ - Gemfile
76
+ - Gemfile.lock
77
+ - LICENSE
78
+ - README.md
79
+ - Rakefile
80
+ - ayril.gemspec
81
+ - lib/ayril.rb
82
+ - lib/ayril/version.rb
83
+ - lib/ayril/core_ext/core_ext.rb
84
+ - lib/ayril/selector.rb
85
+ - lib/ayril/xml_document.rb
86
+ - lib/ayril/xml_node.rb
87
+ - lib/ayril/xml_node/node_traversal.rb
88
+ - lib/ayril/xml_node/node_manipulation.rb
89
+ - lib/ayril/xml_element.rb
90
+ - lib/ayril/xml_element/element_attribute_manipulation.rb
91
+ - lib/ayril/xml_element/element_classname_manipulation.rb
92
+ - lib/ayril/xml_element/element_style_manipulation.rb
93
+ - lib/ayril/xml_element/element_manipulation.rb
94
+ - lib/ayril/xml_element/xml_attribute_hash.rb
95
+ - lib/ayril/xml_element/xml_css_hash.rb
96
+ - test/test_sanity.rb
97
+ - test/sanity.xml
98
+ - test/invoke_ayril_selector.rb
99
+ - test/invoke_prototype_selector.js
100
+ - test/selector.js
101
+ - test/test_selector.rb
102
+ - CHANGES
103
+ has_rdoc: true
104
+ homepage: http://github.com/RobertLowe/ayril
105
+ licenses:
106
+ - MIT
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: "0"
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: "0"
123
+ requirements: []
124
+ rubyforge_project:
125
+ rubygems_version: 1.4.2
126
+ signing_key:
127
+ specification_version: 2
128
+ summary: An XML library for MacRuby built on top of Cocoa NSXML classes
129
+ test_files: []