xpath 2.0.0 → 3.2.0

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.
metadata CHANGED
@@ -1,159 +1,129 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xpath
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
5
- prerelease:
4
+ version: 3.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jonas Nicklas
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain:
12
- - !binary |-
13
- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoVENDQW0yZ0F3SUJB
14
- Z0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJFTVJZd0ZBWURWUVFEREExcWIy
15
- NWgKY3k1dWFXTnJiR0Z6TVJVd0V3WUtDWkltaVpQeUxHUUJHUllGWjIxaGFX
16
- d3hFekFSQmdvSmtpYUprL0lzWkFFWgpGZ05qYjIwd0hoY05NVE13TXpFMk1E
17
- RXpNVEV4V2hjTk1UUXdNekUyTURFek1URXhXakJFTVJZd0ZBWURWUVFECkRB
18
- MXFiMjVoY3k1dWFXTnJiR0Z6TVJVd0V3WUtDWkltaVpQeUxHUUJHUllGWjIx
19
- aGFXd3hFekFSQmdvSmtpYUoKay9Jc1pBRVpGZ05qYjIwd2dnRWlNQTBHQ1Nx
20
- R1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMrQjlteAowVFZrdlhJ
21
- TjMxSkM0czROaTZtY2hKTC85OGgrZXVNSUVOdDVMb3hjZVlsaWpQMG5HZFlI
22
- QU1vQTJDVWw3RStKCi9LbTNXMXppU0MwTXIzWUlxQ3dwNGZ5Z1Axd295UktS
23
- WW1veUJSWmRXNUppUEFRell4WGFpYjArQkNCK0poU20KUmV2MitCYUhKdVJS
24
- S1dxK1MzYnpaNjFVNlJNVnAvdEFmZUluWE9RZHZtM3ljeWhPR1d4NlhwRVcy
25
- T042b1JEbAptQnVBTThiOWhqcE9BekZYaDNPTFhCQzl6cTVaNXBsMmZybGZB
26
- VkIyaEt6dHdpRWlOa0dqeC9xQlhpeHZvN2R1Ck14K08yOTZXcEx1dVd3ck9h
27
- SXNSM1EzN2FOdkxCdmllaDc0RDlRSmpjd1IzTXIwUlJRTGJYeE5Hc1NRYTZn
28
- WTQKbDlqMEV0VVZTRFpCNTRINUFnTUJBQUdqZ1lFd2Z6QUpCZ05WSFJNRUFq
29
- QUFNQXNHQTFVZER3UUVBd0lFc0RBZApCZ05WSFE0RUZnUVVmOEd0anduYVJ0
30
- U3FndkpEekNjM1RhN0xITXN3SWdZRFZSMFJCQnN3R1lFWGFtOXVZWE11CmJt
31
- bGphMnhoYzBCbmJXRnBiQzVqYjIwd0lnWURWUjBTQkJzd0dZRVhhbTl1WVhN
32
- dWJtbGphMnhoYzBCbmJXRnAKYkM1amIyMHdEUVlKS29aSWh2Y05BUUVGQlFB
33
- RGdnRUJBR2xzbnBjZXY0ZnUrRkRBeWdiT2JmYzczcGx0S25RRgpFd3k4OCtI
34
- Z0o0QWhqd0hFUjdPV0RWTXdoNnZIa21FZXAxcmhMbk5XR3p0RC95bTVpRms0
35
- RkdJejFENUo3VHFRCms0djJ3K09qZTNZVy9wU0FHZ0FWUEdDQ3JscWl3NGhL
36
- WlV6UG9iOE5XaHVTNHRLRFBXTUdCUXgzWlNSeXFJTGMKL1dRL0ZtbmJWYTl4
37
- UlVvK1JXaVA5VHB6S1FKaVIzQlA5T3BWclJ4MTNtMGV1Rnh6VGk2aWtKekM0
38
- NVEzRHE1VgppUXhVbUNDUnNKVmNzU0ZPUkpMZFdOVnF6Qk9XWlJucXJMRHVu
39
- em91Q2JjcXppTldrOEtxalpDcjVpdFJpMzE5Ci8ya1pnd2MzMkZIbENkQ0JY
40
- a2hFbEVIVC9iR0NGazIrYWpubVdSdHFacHovcG9UZ0VlaGlJVVk9Ci0tLS0t
41
- RU5EIENFUlRJRklDQVRFLS0tLS0K
42
- date: 2013-04-09 00:00:00.000000000 Z
11
+ - gem-public_cert.pem
12
+ date: 2018-10-15 00:00:00.000000000 Z
43
13
  dependencies:
44
14
  - !ruby/object:Gem::Dependency
45
15
  name: nokogiri
46
16
  requirement: !ruby/object:Gem::Requirement
47
- none: false
48
17
  requirements:
49
- - - ~>
18
+ - - "~>"
50
19
  - !ruby/object:Gem::Version
51
- version: '1.3'
20
+ version: '1.8'
52
21
  type: :runtime
53
22
  prerelease: false
54
23
  version_requirements: !ruby/object:Gem::Requirement
55
- none: false
56
24
  requirements:
57
- - - ~>
25
+ - - "~>"
58
26
  - !ruby/object:Gem::Version
59
- version: '1.3'
27
+ version: '1.8'
60
28
  - !ruby/object:Gem::Dependency
61
- name: rspec
29
+ name: pry
62
30
  requirement: !ruby/object:Gem::Requirement
63
- none: false
64
31
  requirements:
65
- - - ~>
32
+ - - ">="
66
33
  - !ruby/object:Gem::Version
67
- version: '2.0'
34
+ version: '0'
68
35
  type: :development
69
36
  prerelease: false
70
37
  version_requirements: !ruby/object:Gem::Requirement
71
- none: false
72
38
  requirements:
73
- - - ~>
39
+ - - ">="
74
40
  - !ruby/object:Gem::Version
75
- version: '2.0'
41
+ version: '0'
76
42
  - !ruby/object:Gem::Dependency
77
- name: yard
43
+ name: rake
78
44
  requirement: !ruby/object:Gem::Requirement
79
- none: false
80
45
  requirements:
81
- - - ! '>='
46
+ - - ">="
82
47
  - !ruby/object:Gem::Version
83
- version: 0.5.8
48
+ version: '0'
84
49
  type: :development
85
50
  prerelease: false
86
51
  version_requirements: !ruby/object:Gem::Requirement
87
- none: false
88
52
  requirements:
89
- - - ! '>='
53
+ - - ">="
90
54
  - !ruby/object:Gem::Version
91
- version: 0.5.8
55
+ version: '0'
92
56
  - !ruby/object:Gem::Dependency
93
- name: rake
57
+ name: rspec
94
58
  requirement: !ruby/object:Gem::Requirement
95
- none: false
96
59
  requirements:
97
- - - ! '>='
60
+ - - "~>"
98
61
  - !ruby/object:Gem::Version
99
- version: '0'
62
+ version: '3.0'
100
63
  type: :development
101
64
  prerelease: false
102
65
  version_requirements: !ruby/object:Gem::Requirement
103
- none: false
104
66
  requirements:
105
- - - ! '>='
67
+ - - "~>"
106
68
  - !ruby/object:Gem::Version
107
- version: '0'
69
+ version: '3.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: yard
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 0.5.8
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 0.5.8
108
84
  description: XPath is a Ruby DSL for generating XPath expressions
109
85
  email:
110
86
  - jonas.nicklas@gmail.com
111
87
  executables: []
112
88
  extensions: []
113
- extra_rdoc_files:
114
- - README.md
89
+ extra_rdoc_files: []
115
90
  files:
91
+ - README.md
92
+ - lib/xpath.rb
116
93
  - lib/xpath/dsl.rb
117
94
  - lib/xpath/expression.rb
118
- - lib/xpath/html.rb
119
95
  - lib/xpath/literal.rb
120
96
  - lib/xpath/renderer.rb
121
97
  - lib/xpath/union.rb
122
98
  - lib/xpath/version.rb
123
- - lib/xpath.rb
124
99
  - spec/fixtures/form.html
125
100
  - spec/fixtures/simple.html
126
101
  - spec/fixtures/stuff.html
127
- - spec/html_spec.rb
128
102
  - spec/spec_helper.rb
129
103
  - spec/union_spec.rb
130
104
  - spec/xpath_spec.rb
131
- - README.md
132
- homepage: http://github.com/jnicklas/xpath
133
- licenses: []
105
+ homepage: https://github.com/teamcapybara/xpath
106
+ licenses:
107
+ - MIT
108
+ metadata: {}
134
109
  post_install_message:
135
- rdoc_options:
136
- - --main
137
- - README.md
110
+ rdoc_options: []
138
111
  require_paths:
139
112
  - lib
140
113
  required_ruby_version: !ruby/object:Gem::Requirement
141
- none: false
142
114
  requirements:
143
- - - ! '>='
115
+ - - ">="
144
116
  - !ruby/object:Gem::Version
145
- version: '0'
117
+ version: '2.3'
146
118
  required_rubygems_version: !ruby/object:Gem::Requirement
147
- none: false
148
119
  requirements:
149
- - - ! '>='
120
+ - - ">="
150
121
  - !ruby/object:Gem::Version
151
122
  version: '0'
152
123
  requirements: []
153
- rubyforge_project: xpath
154
- rubygems_version: 1.8.25
124
+ rubyforge_project:
125
+ rubygems_version: 2.7.7
155
126
  signing_key:
156
- specification_version: 3
127
+ specification_version: 4
157
128
  summary: Generate XPath expressions from Ruby
158
129
  test_files: []
159
- has_rdoc:
data/lib/xpath/html.rb DELETED
@@ -1,175 +0,0 @@
1
- module XPath
2
- module HTML
3
- include XPath::DSL::TopLevel
4
- extend self
5
-
6
- # Match an `a` link element.
7
- #
8
- # @param [String] locator
9
- # Text, id, title, or image alt attribute of the link
10
- #
11
- def link(locator)
12
- locator = locator.to_s
13
- link = descendant(:a)[attr(:href)]
14
- link[attr(:id).equals(locator) | string.n.is(locator) | attr(:title).is(locator) | descendant(:img)[attr(:alt).is(locator)]]
15
- end
16
-
17
- # Match a `submit`, `image`, or `button` element.
18
- #
19
- # @param [String] locator
20
- # Value, title, id, or image alt attribute of the button
21
- #
22
- def button(locator)
23
- locator = locator.to_s
24
- button = descendant(:input)[attr(:type).one_of('submit', 'reset', 'image', 'button')][attr(:id).equals(locator) | attr(:value).is(locator) | attr(:title).is(locator)]
25
- button += descendant(:button)[attr(:id).equals(locator) | attr(:value).is(locator) | string.n.is(locator) | attr(:title).is(locator)]
26
- button += descendant(:input)[attr(:type).equals('image')][attr(:alt).is(locator)]
27
- end
28
-
29
-
30
- # Match anything returned by either {#link} or {#button}.
31
- #
32
- # @param [String] locator
33
- # Text, id, title, or image alt attribute of the link or button
34
- #
35
- def link_or_button(locator)
36
- link(locator) + button(locator)
37
- end
38
-
39
-
40
- # Match any `fieldset` element.
41
- #
42
- # @param [String] locator
43
- # Legend or id of the fieldset
44
- #
45
- def fieldset(locator)
46
- locator = locator.to_s
47
- descendant(:fieldset)[attr(:id).equals(locator) | child(:legend)[string.n.is(locator)]]
48
- end
49
-
50
-
51
- # Match any `input`, `textarea`, or `select` element that doesn't have a
52
- # type of `submit`, `image`, or `hidden`.
53
- #
54
- # @param [String] locator
55
- # Label, id, or name of field to match
56
- #
57
- def field(locator)
58
- locator = locator.to_s
59
- xpath = descendant(:input, :textarea, :select)[~attr(:type).one_of('submit', 'image', 'hidden')]
60
- xpath = locate_field(xpath, locator)
61
- xpath
62
- end
63
-
64
-
65
- # Match any `input` or `textarea` element that can be filled with text.
66
- # This excludes any inputs with a type of `submit`, `image`, `radio`,
67
- # `checkbox`, `hidden`, or `file`.
68
- #
69
- # @param [String] locator
70
- # Label, id, or name of field to match
71
- #
72
- def fillable_field(locator)
73
- locator = locator.to_s
74
- xpath = descendant(:input, :textarea)[~attr(:type).one_of('submit', 'image', 'radio', 'checkbox', 'hidden', 'file')]
75
- xpath = locate_field(xpath, locator)
76
- xpath
77
- end
78
-
79
-
80
- # Match any `select` element.
81
- #
82
- # @param [String] locator
83
- # Label, id, or name of the field to match
84
- #
85
- def select(locator)
86
- locator = locator.to_s
87
- locate_field(descendant(:select), locator)
88
- end
89
-
90
-
91
- # Match any `input` element of type `checkbox`.
92
- #
93
- # @param [String] locator
94
- # Label, id, or name of the checkbox to match
95
- #
96
- def checkbox(locator)
97
- locator = locator.to_s
98
- locate_field(descendant(:input)[attr(:type).equals('checkbox')], locator)
99
- end
100
-
101
-
102
- # Match any `input` element of type `radio`.
103
- #
104
- # @param [String] locator
105
- # Label, id, or name of the radio button to match
106
- #
107
- def radio_button(locator)
108
- locator = locator.to_s
109
- locate_field(descendant(:input)[attr(:type).equals('radio')], locator)
110
- end
111
-
112
-
113
- # Match any `input` element of type `file`.
114
- #
115
- # @param [String] locator
116
- # Label, id, or name of the file field to match
117
- #
118
- def file_field(locator)
119
- locator = locator.to_s
120
- locate_field(descendant(:input)[attr(:type).equals('file')], locator)
121
- end
122
-
123
-
124
- # Match an `optgroup` element.
125
- #
126
- # @param [String] name
127
- # Label for the option group
128
- #
129
- def optgroup(locator)
130
- locator = locator.to_s
131
- descendant(:optgroup)[attr(:label).is(locator)]
132
- end
133
-
134
-
135
- # Match an `option` element.
136
- #
137
- # @param [String] name
138
- # Visible text of the option
139
- #
140
- def option(locator)
141
- locator = locator.to_s
142
- descendant(:option)[string.n.is(locator)]
143
- end
144
-
145
-
146
- # Match any `table` element.
147
- #
148
- # @param [String] locator
149
- # Caption or id of the table to match
150
- # @option options [Array] :rows
151
- # Content of each cell in each row to match
152
- #
153
- def table(locator)
154
- locator = locator.to_s
155
- descendant(:table)[attr(:id).equals(locator) | descendant(:caption).is(locator)]
156
- end
157
-
158
- # Match any 'dd' element.
159
- #
160
- # @param [String] locator
161
- # Id of the 'dd' element or text from preciding 'dt' element content
162
- def definition_description(locator)
163
- locator = locator.to_s
164
- descendant(:dd)[attr(:id).equals(locator) | previous_sibling(:dt)[string.n.equals(locator)] ]
165
- end
166
-
167
- protected
168
-
169
- def locate_field(xpath, locator)
170
- locate_field = xpath[attr(:id).equals(locator) | attr(:name).equals(locator) | attr(:placeholder).equals(locator) | attr(:id).equals(anywhere(:label)[string.n.is(locator)].attr(:for))]
171
- locate_field += descendant(:label)[string.n.is(locator)].descendant(xpath)
172
- locate_field
173
- end
174
- end
175
- end