|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* Compare jQuery documentation to QueryPath documentation |
|
4
|
|
|
* |
|
5
|
|
|
* |
|
6
|
|
|
* @author Emily Brand |
|
7
|
|
|
* @license LGPL The GNU Lesser GPL (LGPL) or an MIT-like license. |
|
8
|
|
|
* @see http://api.jquery.com/api/ |
|
9
|
|
|
* |
|
10
|
|
|
* TODO: add to the xml file |
|
11
|
|
|
*/ |
|
12
|
|
|
|
|
13
|
|
|
require_once '../src/QueryPath/QueryPath.php'; |
|
14
|
|
|
|
|
15
|
|
|
/** |
|
16
|
|
|
* Add the link & class to each key to show in the left div. |
|
17
|
|
|
* |
|
18
|
|
|
* @param String $v |
|
19
|
|
|
*/ |
|
20
|
|
|
function addClasses($v) { |
|
21
|
|
|
return "<a href='".$_SERVER['PHP_SELF']."?key=$v'><span class='keyname'>$v</span></a><br />"; |
|
22
|
|
|
} |
|
23
|
|
|
|
|
24
|
|
|
// The document skeleton |
|
25
|
|
|
$qpdoc = htmlqp('doc.html', 'body'); |
|
26
|
|
|
|
|
27
|
|
|
$key = $_GET['key']; |
|
28
|
|
|
|
|
29
|
|
|
// The jQuery categories that are used in QueryPath |
|
30
|
|
|
$qparray = array('Tree Traversal', 'Child Filter', 'Attribute', 'Content Filter', 'Basic Filter', |
|
31
|
|
|
'Hierarchy', 'Basic', 'Filtering', 'Miscellaneous Traversing', 'DOM Insertion, Outside', |
|
32
|
|
|
'DOM Insertion, Inside', 'Attributes', 'Style Properties'); |
|
33
|
|
|
|
|
34
|
|
|
$jqnames = array(); |
|
35
|
|
|
$qpnames = array(); |
|
36
|
|
|
|
|
37
|
|
|
// Search through the xml file to find any entries of jQuery entities |
|
38
|
|
|
foreach(qp('querypath.xml', 'entry') as $entry) { |
|
39
|
|
|
$qpnames[$entry->attr('name')] = |
|
40
|
|
|
array('desc' => $entry->find('desc')->innerXML(), |
|
41
|
|
|
'jquery' => $entry->parent()->find('jquery')->innerXML(), |
|
42
|
|
|
'querypath' => $entry->parent()->find('querypath')->innerXML()); |
|
43
|
|
|
} |
|
44
|
|
|
|
|
45
|
|
|
// Search through the xml file to find all entries of jQuery entities |
|
46
|
|
|
foreach(htmlqp('http://api.jquery.com/api/', 'entry') as $entry) { |
|
47
|
|
|
$category = false; |
|
48
|
|
|
$category = array_search($entry->find('category:first')->attr('name'), $qparray); |
|
49
|
|
|
while($entry->next('category')->html() != null) { |
|
50
|
|
|
$category = (array_search($entry->attr('name'), $qparray)) ? true : $category; |
|
51
|
|
|
if($category) break; |
|
52
|
|
|
} |
|
53
|
|
|
if($category) { |
|
54
|
|
|
$jqnames[$entry->parent()->attr('name')] = |
|
55
|
|
|
array('longdesc' => $entry->find('longdesc')->innerXML(), |
|
56
|
|
|
'name' => $entry->parent()->find('category')->attr('name')); |
|
57
|
|
|
} |
|
58
|
|
|
} |
|
59
|
|
|
|
|
60
|
|
|
// Map the keys & sort them |
|
61
|
|
|
$jqkeys = array_keys($jqnames); |
|
62
|
|
|
$jqkeys = array_map("addClasses", $jqkeys); |
|
63
|
|
|
sort($jqkeys); |
|
64
|
|
|
|
|
65
|
|
|
// Add the keys to the nav bar |
|
66
|
|
|
$qpdoc->find('#leftbody'); |
|
67
|
|
|
foreach($jqkeys as $k => $v) { |
|
68
|
|
|
$qpdoc->append($v); |
|
69
|
|
|
} |
|
70
|
|
|
|
|
71
|
|
|
// Add the description to the main window if the key exists |
|
72
|
|
|
if(array_key_exists($key, $jqnames)) { |
|
73
|
|
|
if(array_key_exists($key, $qpnames)) { |
|
74
|
|
|
$qpdoc->top()->find('#rightfunction')->text('Function: '.ucfirst($key)); |
|
75
|
|
|
$qpdoc->top()->find('#rightdesc')->text($qpnames[$key]['desc']); |
|
76
|
|
|
$qpdoc->top()->find('#righttitle')->text('How it\'s done in jQuery'); |
|
77
|
|
|
$qpdoc->top()->find('#righttext')->text($qpnames[$key]['jquery']); |
|
78
|
|
|
$qpdoc->top()->find('#righttitle2')->text('How it\'s done in QueryPath'); |
|
79
|
|
|
$qpdoc->top()->find('#righttext2')->text($qpnames[$key]['querypath']); |
|
80
|
|
|
} |
|
81
|
|
|
else { |
|
82
|
|
|
$qpdoc->top()->find('#rightfunction')->text('Function: '.ucfirst($key)); |
|
83
|
|
|
$qpdoc->top()->find('#rightdesc')->remove(); |
|
84
|
|
|
$qpdoc->top()->find('#righttitle')->text('jQuery Documentation'); |
|
85
|
|
|
$qpdoc->top()->find('#righttext')->append($jqnames[$key]['longdesc']); |
|
86
|
|
|
} |
|
87
|
|
|
} |
|
88
|
|
|
|
|
89
|
|
|
// Write the document |
|
90
|
|
|
$qpdoc->writeHTML(); |
|
91
|
|
|
|
|
92
|
|
|
|