terminus 0.4.0 → 0.5.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.
- data/bin/terminus +5 -5
- data/lib/capybara/driver/terminus.rb +24 -13
- data/lib/terminus.rb +21 -15
- data/lib/terminus/application.rb +6 -6
- data/lib/terminus/browser.rb +77 -60
- data/lib/terminus/client.rb +33 -16
- data/lib/terminus/client/browser.rb +10 -9
- data/lib/terminus/client/phantom.js +25 -3
- data/lib/terminus/client/phantomjs.rb +44 -7
- data/lib/terminus/connector.rb +2 -2
- data/lib/terminus/connector/server.rb +15 -15
- data/lib/terminus/connector/socket_handler.rb +11 -11
- data/lib/terminus/controller.rb +62 -26
- data/lib/terminus/headers.rb +25 -0
- data/lib/terminus/host.rb +6 -6
- data/lib/terminus/node.rb +36 -22
- data/lib/terminus/proxy.rb +81 -45
- data/lib/terminus/proxy/driver_body.rb +14 -15
- data/lib/terminus/proxy/external.rb +12 -6
- data/lib/terminus/proxy/rewrite.rb +7 -6
- data/lib/terminus/public/compiled/terminus-min.js +3 -3
- data/lib/terminus/public/compiled/terminus.js +225 -180
- data/lib/terminus/public/pathology.js +87 -87
- data/lib/terminus/public/terminus.js +138 -93
- data/lib/terminus/server.rb +7 -7
- data/lib/terminus/timeouts.rb +8 -8
- data/lib/terminus/views/bootstrap.erb +7 -7
- data/lib/terminus/views/index.erb +4 -4
- data/lib/terminus/views/infinite.html +4 -4
- data/spec/1.1/reports/android.txt +874 -0
- data/spec/{reports → 1.1/reports}/chrome.txt +72 -69
- data/spec/{reports → 1.1/reports}/firefox.txt +72 -69
- data/spec/{reports → 1.1/reports}/opera.txt +72 -69
- data/spec/{reports → 1.1/reports}/phantomjs.txt +72 -69
- data/spec/{reports → 1.1/reports}/safari.txt +72 -69
- data/spec/{spec_helper.rb → 1.1/spec_helper.rb} +5 -2
- data/spec/{terminus_driver_spec.rb → 1.1/terminus_driver_spec.rb} +2 -2
- data/spec/{terminus_session_spec.rb → 1.1/terminus_session_spec.rb} +2 -2
- data/spec/2.0/reports/android.txt +815 -0
- data/spec/2.0/reports/chrome.txt +806 -0
- data/spec/2.0/reports/firefox.txt +812 -0
- data/spec/2.0/reports/opera.txt +806 -0
- data/spec/2.0/reports/phantomjs.txt +803 -0
- data/spec/2.0/reports/safari.txt +806 -0
- data/spec/2.0/spec_helper.rb +21 -0
- data/spec/2.0/terminus_spec.rb +25 -0
- metadata +41 -32
- data/spec/reports/android.txt +0 -875
@@ -5,20 +5,20 @@ var Pathology = {
|
|
5
5
|
expression.evaluate(context, context, resultType, result);
|
6
6
|
return result;
|
7
7
|
},
|
8
|
-
|
8
|
+
|
9
9
|
atomize: function(expression, context, root) {
|
10
10
|
var result = expression.evaluate(context, root);
|
11
11
|
if (result && result.atomize) result = result.atomize();
|
12
12
|
return result;
|
13
13
|
},
|
14
|
-
|
14
|
+
|
15
15
|
array: function(list) {
|
16
16
|
if (!list) return [];
|
17
17
|
var array = [], i = list.length;
|
18
18
|
while (i--) array[i] = list[i];
|
19
19
|
return array;
|
20
20
|
},
|
21
|
-
|
21
|
+
|
22
22
|
indexOf: function(list, item) {
|
23
23
|
if (list.indexOf) return list.indexOf(item);
|
24
24
|
for (var i = 0, n = list.length; i < n; i++) {
|
@@ -85,17 +85,17 @@ Pathology.XPathResult.prototype.atomize = function() {
|
|
85
85
|
Pathology.XPathResult.prototype.makeString = function() {
|
86
86
|
var first = this._nodes[0];
|
87
87
|
if (!first) return '';
|
88
|
-
|
88
|
+
|
89
89
|
switch (first.nodeType) {
|
90
90
|
case XPathResult.STRING_TYPE:
|
91
91
|
return this.atomize();
|
92
|
-
|
92
|
+
|
93
93
|
case XPathResult.BOOLEAN_TYPE:
|
94
94
|
var parts = [];
|
95
95
|
for (var i = 0, n = this._nodes.length; i < n; i++)
|
96
96
|
parts.push(this._nodes[i].nodeValue);
|
97
97
|
return parts.join('');
|
98
|
-
|
98
|
+
|
99
99
|
default:
|
100
100
|
var result = document.evaluate('//text()', first, null, XPathResult.ANY_TYPE, null);
|
101
101
|
return result.makeString();
|
@@ -112,11 +112,11 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
112
112
|
}
|
113
113
|
return destination;
|
114
114
|
};
|
115
|
-
|
115
|
+
|
116
116
|
var find = function (root, objectName) {
|
117
117
|
var parts = objectName.split('.'),
|
118
118
|
part;
|
119
|
-
|
119
|
+
|
120
120
|
while (part = parts.shift()) {
|
121
121
|
root = root[part];
|
122
122
|
if (root === undefined)
|
@@ -124,31 +124,31 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
124
124
|
}
|
125
125
|
return root;
|
126
126
|
};
|
127
|
-
|
127
|
+
|
128
128
|
var formatError = function (error) {
|
129
129
|
var lines = error.input.split(/\n/g),
|
130
130
|
lineNo = 0,
|
131
131
|
offset = 0;
|
132
|
-
|
132
|
+
|
133
133
|
while (offset < error.offset + 1) {
|
134
134
|
offset += lines[lineNo].length + 1;
|
135
135
|
lineNo += 1;
|
136
136
|
}
|
137
137
|
var message = 'Line ' + lineNo + ': expected ' + error.expected + '\n',
|
138
138
|
line = lines[lineNo - 1];
|
139
|
-
|
139
|
+
|
140
140
|
message += line + '\n';
|
141
141
|
offset -= line.length + 1;
|
142
|
-
|
142
|
+
|
143
143
|
while (offset < error.offset) {
|
144
144
|
message += ' ';
|
145
145
|
offset += 1;
|
146
146
|
}
|
147
147
|
return message + '^';
|
148
148
|
};
|
149
|
-
|
149
|
+
|
150
150
|
var Grammar = {
|
151
|
-
__consume__union_expression: function(
|
151
|
+
__consume__union_expression: function() {
|
152
152
|
var address0 = null, index0 = this._offset;
|
153
153
|
this._nodeCache["union_expression"] = this._nodeCache["union_expression"] || {};
|
154
154
|
var cached = this._nodeCache["union_expression"][index0];
|
@@ -287,7 +287,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
287
287
|
}
|
288
288
|
return this._nodeCache["union_expression"][index0] = address0;
|
289
289
|
},
|
290
|
-
__consume__location_path: function(
|
290
|
+
__consume__location_path: function() {
|
291
291
|
var address0 = null, index0 = this._offset;
|
292
292
|
this._nodeCache["location_path"] = this._nodeCache["location_path"] || {};
|
293
293
|
var cached = this._nodeCache["location_path"][index0];
|
@@ -350,7 +350,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
350
350
|
}
|
351
351
|
return this._nodeCache["location_path"][index0] = address0;
|
352
352
|
},
|
353
|
-
__consume__location_step: function(
|
353
|
+
__consume__location_step: function() {
|
354
354
|
var address0 = null, index0 = this._offset;
|
355
355
|
this._nodeCache["location_step"] = this._nodeCache["location_step"] || {};
|
356
356
|
var cached = this._nodeCache["location_step"][index0];
|
@@ -557,7 +557,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
557
557
|
}
|
558
558
|
return this._nodeCache["location_step"][index0] = address0;
|
559
559
|
},
|
560
|
-
__consume__axis: function(
|
560
|
+
__consume__axis: function() {
|
561
561
|
var address0 = null, index0 = this._offset;
|
562
562
|
this._nodeCache["axis"] = this._nodeCache["axis"] || {};
|
563
563
|
var cached = this._nodeCache["axis"][index0];
|
@@ -679,7 +679,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
679
679
|
}
|
680
680
|
return this._nodeCache["axis"][index0] = address0;
|
681
681
|
},
|
682
|
-
__consume__axis_shorthand: function(
|
682
|
+
__consume__axis_shorthand: function() {
|
683
683
|
var address0 = null, index0 = this._offset;
|
684
684
|
this._nodeCache["axis_shorthand"] = this._nodeCache["axis_shorthand"] || {};
|
685
685
|
var cached = this._nodeCache["axis_shorthand"][index0];
|
@@ -810,7 +810,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
810
810
|
}
|
811
811
|
return this._nodeCache["axis_shorthand"][index0] = address0;
|
812
812
|
},
|
813
|
-
__consume__node_test: function(
|
813
|
+
__consume__node_test: function() {
|
814
814
|
var address0 = null, index0 = this._offset;
|
815
815
|
this._nodeCache["node_test"] = this._nodeCache["node_test"] || {};
|
816
816
|
var cached = this._nodeCache["node_test"][index0];
|
@@ -904,7 +904,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
904
904
|
}
|
905
905
|
return this._nodeCache["node_test"][index0] = address0;
|
906
906
|
},
|
907
|
-
__consume__node_condition: function(
|
907
|
+
__consume__node_condition: function() {
|
908
908
|
var address0 = null, index0 = this._offset;
|
909
909
|
this._nodeCache["node_condition"] = this._nodeCache["node_condition"] || {};
|
910
910
|
var cached = this._nodeCache["node_condition"][index0];
|
@@ -1016,7 +1016,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1016
1016
|
}
|
1017
1017
|
return this._nodeCache["node_condition"][index0] = address0;
|
1018
1018
|
},
|
1019
|
-
__consume__node_name: function(
|
1019
|
+
__consume__node_name: function() {
|
1020
1020
|
var address0 = null, index0 = this._offset;
|
1021
1021
|
this._nodeCache["node_name"] = this._nodeCache["node_name"] || {};
|
1022
1022
|
var cached = this._nodeCache["node_name"][index0];
|
@@ -1072,7 +1072,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1072
1072
|
}
|
1073
1073
|
return this._nodeCache["node_name"][index0] = address0;
|
1074
1074
|
},
|
1075
|
-
__consume__subscript: function(
|
1075
|
+
__consume__subscript: function() {
|
1076
1076
|
var address0 = null, index0 = this._offset;
|
1077
1077
|
this._nodeCache["subscript"] = this._nodeCache["subscript"] || {};
|
1078
1078
|
var cached = this._nodeCache["subscript"][index0];
|
@@ -1193,7 +1193,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1193
1193
|
}
|
1194
1194
|
return this._nodeCache["subscript"][index0] = address0;
|
1195
1195
|
},
|
1196
|
-
__consume__node_predicate: function(
|
1196
|
+
__consume__node_predicate: function() {
|
1197
1197
|
var address0 = null, index0 = this._offset;
|
1198
1198
|
this._nodeCache["node_predicate"] = this._nodeCache["node_predicate"] || {};
|
1199
1199
|
var cached = this._nodeCache["node_predicate"][index0];
|
@@ -1316,7 +1316,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1316
1316
|
}
|
1317
1317
|
return this._nodeCache["node_predicate"][index0] = address0;
|
1318
1318
|
},
|
1319
|
-
__consume__expression: function(
|
1319
|
+
__consume__expression: function() {
|
1320
1320
|
var address0 = null, index0 = this._offset;
|
1321
1321
|
this._nodeCache["expression"] = this._nodeCache["expression"] || {};
|
1322
1322
|
var cached = this._nodeCache["expression"][index0];
|
@@ -1347,7 +1347,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1347
1347
|
}
|
1348
1348
|
return this._nodeCache["expression"][index0] = address0;
|
1349
1349
|
},
|
1350
|
-
__consume__or_expression: function(
|
1350
|
+
__consume__or_expression: function() {
|
1351
1351
|
var address0 = null, index0 = this._offset;
|
1352
1352
|
this._nodeCache["or_expression"] = this._nodeCache["or_expression"] || {};
|
1353
1353
|
var cached = this._nodeCache["or_expression"][index0];
|
@@ -1434,7 +1434,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1434
1434
|
}
|
1435
1435
|
return this._nodeCache["or_expression"][index0] = address0;
|
1436
1436
|
},
|
1437
|
-
__consume__and_expression: function(
|
1437
|
+
__consume__and_expression: function() {
|
1438
1438
|
var address0 = null, index0 = this._offset;
|
1439
1439
|
this._nodeCache["and_expression"] = this._nodeCache["and_expression"] || {};
|
1440
1440
|
var cached = this._nodeCache["and_expression"][index0];
|
@@ -1521,7 +1521,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1521
1521
|
}
|
1522
1522
|
return this._nodeCache["and_expression"][index0] = address0;
|
1523
1523
|
},
|
1524
|
-
__consume__comparison: function(
|
1524
|
+
__consume__comparison: function() {
|
1525
1525
|
var address0 = null, index0 = this._offset;
|
1526
1526
|
this._nodeCache["comparison"] = this._nodeCache["comparison"] || {};
|
1527
1527
|
var cached = this._nodeCache["comparison"][index0];
|
@@ -1584,7 +1584,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1584
1584
|
}
|
1585
1585
|
return this._nodeCache["comparison"][index0] = address0;
|
1586
1586
|
},
|
1587
|
-
__consume__comparator: function(
|
1587
|
+
__consume__comparator: function() {
|
1588
1588
|
var address0 = null, index0 = this._offset;
|
1589
1589
|
this._nodeCache["comparator"] = this._nodeCache["comparator"] || {};
|
1590
1590
|
var cached = this._nodeCache["comparator"][index0];
|
@@ -1655,7 +1655,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1655
1655
|
}
|
1656
1656
|
return this._nodeCache["comparator"][index0] = address0;
|
1657
1657
|
},
|
1658
|
-
__consume__atom: function(
|
1658
|
+
__consume__atom: function() {
|
1659
1659
|
var address0 = null, index0 = this._offset;
|
1660
1660
|
this._nodeCache["atom"] = this._nodeCache["atom"] || {};
|
1661
1661
|
var cached = this._nodeCache["atom"][index0];
|
@@ -1808,7 +1808,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1808
1808
|
}
|
1809
1809
|
return this._nodeCache["atom"][index0] = address0;
|
1810
1810
|
},
|
1811
|
-
__consume__value: function(
|
1811
|
+
__consume__value: function() {
|
1812
1812
|
var address0 = null, index0 = this._offset;
|
1813
1813
|
this._nodeCache["value"] = this._nodeCache["value"] || {};
|
1814
1814
|
var cached = this._nodeCache["value"][index0];
|
@@ -1834,7 +1834,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1834
1834
|
}
|
1835
1835
|
return this._nodeCache["value"][index0] = address0;
|
1836
1836
|
},
|
1837
|
-
__consume__function_call: function(
|
1837
|
+
__consume__function_call: function() {
|
1838
1838
|
var address0 = null, index0 = this._offset;
|
1839
1839
|
this._nodeCache["function_call"] = this._nodeCache["function_call"] || {};
|
1840
1840
|
var cached = this._nodeCache["function_call"][index0];
|
@@ -1945,7 +1945,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
1945
1945
|
}
|
1946
1946
|
return this._nodeCache["function_call"][index0] = address0;
|
1947
1947
|
},
|
1948
|
-
__consume__function_name: function(
|
1948
|
+
__consume__function_name: function() {
|
1949
1949
|
var address0 = null, index0 = this._offset;
|
1950
1950
|
this._nodeCache["function_name"] = this._nodeCache["function_name"] || {};
|
1951
1951
|
var cached = this._nodeCache["function_name"][index0];
|
@@ -2001,7 +2001,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
2001
2001
|
}
|
2002
2002
|
return this._nodeCache["function_name"][index0] = address0;
|
2003
2003
|
},
|
2004
|
-
__consume__function_args: function(
|
2004
|
+
__consume__function_args: function() {
|
2005
2005
|
var address0 = null, index0 = this._offset;
|
2006
2006
|
this._nodeCache["function_args"] = this._nodeCache["function_args"] || {};
|
2007
2007
|
var cached = this._nodeCache["function_args"][index0];
|
@@ -2132,7 +2132,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
2132
2132
|
}
|
2133
2133
|
return this._nodeCache["function_args"][index0] = address0;
|
2134
2134
|
},
|
2135
|
-
__consume__integer: function(
|
2135
|
+
__consume__integer: function() {
|
2136
2136
|
var address0 = null, index0 = this._offset;
|
2137
2137
|
this._nodeCache["integer"] = this._nodeCache["integer"] || {};
|
2138
2138
|
var cached = this._nodeCache["integer"][index0];
|
@@ -2243,7 +2243,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
2243
2243
|
}
|
2244
2244
|
return this._nodeCache["integer"][index0] = address0;
|
2245
2245
|
},
|
2246
|
-
__consume__string: function(
|
2246
|
+
__consume__string: function() {
|
2247
2247
|
var address0 = null, index0 = this._offset;
|
2248
2248
|
this._nodeCache["string"] = this._nodeCache["string"] || {};
|
2249
2249
|
var cached = this._nodeCache["string"][index0];
|
@@ -2722,7 +2722,7 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
2722
2722
|
}
|
2723
2723
|
return this._nodeCache["string"][index0] = address0;
|
2724
2724
|
},
|
2725
|
-
__consume__space: function(
|
2725
|
+
__consume__space: function() {
|
2726
2726
|
var address0 = null, index0 = this._offset;
|
2727
2727
|
this._nodeCache["space"] = this._nodeCache["space"] || {};
|
2728
2728
|
var cached = this._nodeCache["space"][index0];
|
@@ -2779,13 +2779,13 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
2779
2779
|
return this._nodeCache["space"][index0] = address0;
|
2780
2780
|
}
|
2781
2781
|
};
|
2782
|
-
|
2782
|
+
|
2783
2783
|
var Parser = function(input) {
|
2784
2784
|
this._input = input;
|
2785
2785
|
this._offset = 0;
|
2786
2786
|
this._nodeCache = {};
|
2787
2787
|
};
|
2788
|
-
|
2788
|
+
|
2789
2789
|
Parser.prototype.parse = function() {
|
2790
2790
|
var result = this.__consume__union_expression();
|
2791
2791
|
if (result && this._offset === this._input.length) {
|
@@ -2798,14 +2798,14 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
2798
2798
|
var error = new Error(message);
|
2799
2799
|
throw error;
|
2800
2800
|
};
|
2801
|
-
|
2801
|
+
|
2802
2802
|
Parser.parse = function(input) {
|
2803
2803
|
var parser = new Parser(input);
|
2804
2804
|
return parser.parse();
|
2805
2805
|
};
|
2806
|
-
|
2806
|
+
|
2807
2807
|
extend(Parser.prototype, Grammar);
|
2808
|
-
|
2808
|
+
|
2809
2809
|
var SyntaxNode = function(textValue, offset, elements, properties) {
|
2810
2810
|
this.textValue = textValue;
|
2811
2811
|
this.offset = offset;
|
@@ -2813,20 +2813,20 @@ Pathology.XPathResult.prototype.makeString = function() {
|
|
2813
2813
|
if (!properties) return;
|
2814
2814
|
for (var key in properties) this[key] = properties[key];
|
2815
2815
|
};
|
2816
|
-
|
2816
|
+
|
2817
2817
|
SyntaxNode.prototype.forEach = function(block, context) {
|
2818
2818
|
for (var i = 0, n = this.elements.length; i < n; i++) {
|
2819
2819
|
block.call(context, this.elements[i], i);
|
2820
2820
|
}
|
2821
2821
|
};
|
2822
|
-
|
2822
|
+
|
2823
2823
|
Parser.SyntaxNode = SyntaxNode;
|
2824
|
-
|
2824
|
+
|
2825
2825
|
if (typeof require === "function" && typeof exports === "object") {
|
2826
2826
|
exports.Grammar = Grammar;
|
2827
2827
|
exports.Parser = Parser;
|
2828
2828
|
exports.parse = Parser.parse;
|
2829
|
-
|
2829
|
+
|
2830
2830
|
if (typeof Pathology !== "undefined") {
|
2831
2831
|
Pathology.XPath = Grammar;
|
2832
2832
|
Pathology.XPathParser = Parser;
|
@@ -2866,39 +2866,39 @@ Pathology.Axis.prototype.walk = function(context, block, scope) {
|
|
2866
2866
|
var children = context.childNodes,
|
2867
2867
|
attributes = Pathology.array(context.attributes),
|
2868
2868
|
sibling;
|
2869
|
-
|
2869
|
+
|
2870
2870
|
if (context.checked)
|
2871
2871
|
attributes.push({ nodeName: 'checked',
|
2872
2872
|
nodeValue: true,
|
2873
2873
|
nodeType: XPathResult.STRING_TYPE
|
2874
2874
|
});
|
2875
|
-
|
2875
|
+
|
2876
2876
|
if (context.selected)
|
2877
2877
|
attributes.push({ nodeName: 'selected',
|
2878
2878
|
nodeValue: true,
|
2879
2879
|
nodeType: XPathResult.STRING_TYPE
|
2880
2880
|
});
|
2881
|
-
|
2881
|
+
|
2882
2882
|
switch (this.name) {
|
2883
2883
|
case 'attribute':
|
2884
2884
|
for (var i = 0, n = attributes.length; i < n; i++) {
|
2885
2885
|
block.call(scope, attributes[i]);
|
2886
2886
|
}
|
2887
2887
|
break;
|
2888
|
-
|
2888
|
+
|
2889
2889
|
case 'child':
|
2890
2890
|
for (var i = 0, n = children.length; i < n; i++) {
|
2891
2891
|
block.call(scope, children[i]);
|
2892
2892
|
}
|
2893
2893
|
break;
|
2894
|
-
|
2894
|
+
|
2895
2895
|
case 'descendant-or-self':
|
2896
2896
|
block.call(scope, context);
|
2897
2897
|
for (var i = 0, n = children.length; i < n; i++) {
|
2898
2898
|
this.walk(children[i], block, scope);
|
2899
2899
|
}
|
2900
2900
|
break;
|
2901
|
-
|
2901
|
+
|
2902
2902
|
case 'following-sibling':
|
2903
2903
|
sibling = context.nextSibling;
|
2904
2904
|
while (sibling) {
|
@@ -2906,11 +2906,11 @@ Pathology.Axis.prototype.walk = function(context, block, scope) {
|
|
2906
2906
|
sibling = sibling.nextSibling;
|
2907
2907
|
}
|
2908
2908
|
break;
|
2909
|
-
|
2909
|
+
|
2910
2910
|
case 'parent':
|
2911
2911
|
block.call(scope, context.parentNode);
|
2912
2912
|
break;
|
2913
|
-
|
2913
|
+
|
2914
2914
|
case 'self':
|
2915
2915
|
block.call(scope, context);
|
2916
2916
|
break;
|
@@ -2924,12 +2924,12 @@ Pathology.Axis.SHORTHANDS = {
|
|
2924
2924
|
'/' : 'descendant-or-self',
|
2925
2925
|
'' : 'child'
|
2926
2926
|
};
|
2927
|
-
|
2927
|
+
|
2928
2928
|
Pathology.Axis.fromAST = function(node) {
|
2929
2929
|
var name = node.axis_name
|
2930
2930
|
? node.axis_name.textValue
|
2931
2931
|
: node.textValue;
|
2932
|
-
|
2932
|
+
|
2933
2933
|
return new this(this.SHORTHANDS[name] || name);
|
2934
2934
|
};
|
2935
2935
|
|
@@ -2943,7 +2943,7 @@ Pathology.XPathParser.Comparison = {
|
|
2943
2943
|
viable = false,
|
2944
2944
|
array = (right instanceof Array),
|
2945
2945
|
node;
|
2946
|
-
|
2946
|
+
|
2947
2947
|
if (left._nodes) {
|
2948
2948
|
for (var i = 0, n = left._nodes.length; i < n; i++) {
|
2949
2949
|
node = left._nodes[i];
|
@@ -2954,7 +2954,7 @@ Pathology.XPathParser.Comparison = {
|
|
2954
2954
|
}
|
2955
2955
|
}
|
2956
2956
|
return viable;
|
2957
|
-
|
2957
|
+
|
2958
2958
|
} else {
|
2959
2959
|
switch (comparator) {
|
2960
2960
|
case '=': return array ? Pathology.indexOf(right, left.nodeValue) >= 0 : left == right;
|
@@ -2969,7 +2969,7 @@ Pathology.XPathParser.FunctionCall = {
|
|
2969
2969
|
getArguments: function(context, root) {
|
2970
2970
|
var args = [],
|
2971
2971
|
rest = this.function_args.rest;
|
2972
|
-
|
2972
|
+
|
2973
2973
|
if (this.function_args.first && this.function_args.first.evaluate) {
|
2974
2974
|
args.push(this.function_args.first.evaluate(context, root));
|
2975
2975
|
}
|
@@ -2979,14 +2979,14 @@ Pathology.XPathParser.FunctionCall = {
|
|
2979
2979
|
}
|
2980
2980
|
return args;
|
2981
2981
|
},
|
2982
|
-
|
2982
|
+
|
2983
2983
|
evaluate: function(context, root) {
|
2984
2984
|
var args = this.getArguments(context, root),
|
2985
2985
|
proc = this.REGISTER[this.function_name.textValue];
|
2986
|
-
|
2986
|
+
|
2987
2987
|
return proc.apply(context, args);
|
2988
2988
|
},
|
2989
|
-
|
2989
|
+
|
2990
2990
|
REGISTER: {
|
2991
2991
|
'concat': function() {
|
2992
2992
|
var string = '';
|
@@ -2994,36 +2994,36 @@ Pathology.XPathParser.FunctionCall = {
|
|
2994
2994
|
string += arguments[i].makeString ? arguments[i].makeString() : arguments[i];
|
2995
2995
|
return string;
|
2996
2996
|
},
|
2997
|
-
|
2997
|
+
|
2998
2998
|
'contains': function(haystack, needle) {
|
2999
2999
|
if (!haystack) return false;
|
3000
3000
|
if (haystack.makeString) haystack = haystack.makeString();
|
3001
|
-
|
3001
|
+
|
3002
3002
|
return haystack.toString().indexOf(needle) >= 0;
|
3003
3003
|
},
|
3004
|
-
|
3004
|
+
|
3005
3005
|
'normalize-space': function(string) {
|
3006
3006
|
if (string.makeString) string = string.makeString();
|
3007
|
-
|
3007
|
+
|
3008
3008
|
return string.toString().replace(/^\s*/g, '')
|
3009
3009
|
.replace(/\s*$/g, '')
|
3010
3010
|
.replace(/\s+/g, ' ');
|
3011
3011
|
},
|
3012
|
-
|
3012
|
+
|
3013
3013
|
'name': function() {
|
3014
3014
|
return this.nodeName.toLowerCase();
|
3015
3015
|
},
|
3016
|
-
|
3016
|
+
|
3017
3017
|
'not': function(value) {
|
3018
3018
|
if (value && value.atomize) value = value.atomize();
|
3019
3019
|
if (typeof value === 'string') return false;
|
3020
3020
|
return !value;
|
3021
3021
|
},
|
3022
|
-
|
3022
|
+
|
3023
3023
|
'string': function(value) {
|
3024
3024
|
return value.atomize().innerText;
|
3025
3025
|
},
|
3026
|
-
|
3026
|
+
|
3027
3027
|
'text': function() {
|
3028
3028
|
return document.evaluate('/text()', this, null, XPathResult.ANY_TYPE, null);
|
3029
3029
|
}
|
@@ -3037,20 +3037,20 @@ Pathology.XPathParser.LocationPath = {
|
|
3037
3037
|
for (var i = 0, n = list.length; i < n; i++)
|
3038
3038
|
block.call(scope, list[i]);
|
3039
3039
|
},
|
3040
|
-
|
3040
|
+
|
3041
3041
|
evaluate: function(context, root, resultType, result) {
|
3042
3042
|
result = result || new Pathology.XPathResult(XPathResult.ANY_TYPE);
|
3043
3043
|
resultType = resultType || XPathResult.ANY_TYPE;
|
3044
|
-
|
3044
|
+
|
3045
3045
|
var intermediate = new Pathology.XPathResult(resultType),
|
3046
3046
|
startNode = this.head.isRelative() ? context : root,
|
3047
3047
|
steps = [this.head].concat(this.rest.elements),
|
3048
3048
|
step,
|
3049
3049
|
nextStage,
|
3050
3050
|
i, j, n, m;
|
3051
|
-
|
3051
|
+
|
3052
3052
|
intermediate.push(startNode);
|
3053
|
-
|
3053
|
+
|
3054
3054
|
for (i = 0, n = steps.length; i < n; i++) {
|
3055
3055
|
step = steps[i];
|
3056
3056
|
nextStage = new Pathology.XPathResult(resultType);
|
@@ -3059,10 +3059,10 @@ Pathology.XPathParser.LocationPath = {
|
|
3059
3059
|
}
|
3060
3060
|
intermediate = nextStage;
|
3061
3061
|
}
|
3062
|
-
|
3062
|
+
|
3063
3063
|
for (i = 0, n = intermediate._nodes.length; i < n; i++)
|
3064
3064
|
result.push(intermediate._nodes[i]);
|
3065
|
-
|
3065
|
+
|
3066
3066
|
return result;
|
3067
3067
|
}
|
3068
3068
|
};
|
@@ -3072,12 +3072,12 @@ Pathology.XPathParser.LocationStep = {
|
|
3072
3072
|
isRelative: function() {
|
3073
3073
|
return this.elements[0].textValue !== '/';
|
3074
3074
|
},
|
3075
|
-
|
3075
|
+
|
3076
3076
|
evaluate: function(context, root, resultType, result) {
|
3077
3077
|
var axis = this.selector.axis,
|
3078
3078
|
test = this.selector.test,
|
3079
3079
|
levels = [[]];
|
3080
|
-
|
3080
|
+
|
3081
3081
|
Pathology.Axis.fromAST(axis).walk(context, function(node) {
|
3082
3082
|
if (!test || !test.evaluate) return result.push(node);
|
3083
3083
|
test.evaluate(node, this.predicates, root, resultType, levels, result);
|
@@ -3090,7 +3090,7 @@ Pathology.XPathParser.NodeTest = {
|
|
3090
3090
|
evaluate: function(context, predicates, root, resultType, levels, result) {
|
3091
3091
|
var name = this.elements[0].condition_name,
|
3092
3092
|
tagName = tagName = this.elements[0].textValue.toLowerCase();
|
3093
|
-
|
3093
|
+
|
3094
3094
|
var first = {
|
3095
3095
|
expression: {
|
3096
3096
|
evaluate: function() {
|
@@ -3111,25 +3111,25 @@ Pathology.XPathParser.NodeTest = {
|
|
3111
3111
|
},
|
3112
3112
|
subscript: this.subscript
|
3113
3113
|
};
|
3114
|
-
|
3114
|
+
|
3115
3115
|
predicates = [first].concat(predicates.elements);
|
3116
3116
|
var accepted, predicate;
|
3117
|
-
|
3117
|
+
|
3118
3118
|
for (var i = 0, n = predicates.length; i < n; i++) {
|
3119
3119
|
levels[i] = levels[i] || [];
|
3120
3120
|
predicate = predicates[i];
|
3121
|
-
|
3121
|
+
|
3122
3122
|
accepted = Pathology.atomize(predicate.expression, context, root);
|
3123
3123
|
if (typeof accepted === 'string') accepted = true;
|
3124
3124
|
if (!accepted) return;
|
3125
|
-
|
3125
|
+
|
3126
3126
|
levels[i].push(context);
|
3127
|
-
|
3127
|
+
|
3128
3128
|
if (predicate.subscript.integer) {
|
3129
3129
|
if (predicate.subscript.integer.evaluate() !== levels[i].length) return;
|
3130
3130
|
}
|
3131
3131
|
}
|
3132
|
-
|
3132
|
+
|
3133
3133
|
result.push(context);
|
3134
3134
|
}
|
3135
3135
|
};
|
@@ -3161,13 +3161,13 @@ Pathology.XPathParser.Union = {
|
|
3161
3161
|
evaluate: function(context, root, resultType, result) {
|
3162
3162
|
result = result || new Pathology.XPathResult(XPathResult.ANY_TYPE);
|
3163
3163
|
resultType = resultType || XPathResult.ANY_TYPE;
|
3164
|
-
|
3164
|
+
|
3165
3165
|
this.head.evaluate(context, root, resultType, result);
|
3166
|
-
|
3166
|
+
|
3167
3167
|
var sections = this.rest.elements;
|
3168
3168
|
for (var i = 0, n = sections.length; i < n; i++)
|
3169
3169
|
sections[i].location_path.evaluate(context, root, resultType, result);
|
3170
|
-
|
3170
|
+
|
3171
3171
|
return result;
|
3172
3172
|
}
|
3173
3173
|
};
|