-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunctions.php
More file actions
44 lines (40 loc) · 1.1 KB
/
functions.php
File metadata and controls
44 lines (40 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
/**
* Parse a Tower bookmark group (folder), recursively if necessary,
* adding individual bookmarks to $this->parsedBookmarks.
*
* @param array $arr group
* @param $parsedBookmarks
* @return void
*/
function parseGroup(array $arr, &$parsedBookmarks): void
{
foreach ($arr as $item) {
if (isGroup($item)) {
parseGroup($item['children'], $parsedBookmarks);
} else {
$parsedBookmarks[] = $item;
}
}
}
/**
* Parse nested bookmarks into flat array.
*
* @param array $arr multidimensional bookmark array read from Tower plist and converted by CFPropertyList
* @return array flat array of bookmark items
*/
function parseItems(array $arr, $parsedBookmarks): array
{
parseGroup($arr, $parsedBookmarks);
return $parsedBookmarks;
}
/**
* Determine whether the current item (array) is a Tower bookmark group.
*
* @param array $item element from multi-dimensional array of bookmarks
* @return boolean true if item is a folder (has `children` property)
*/
function isGroup(array $item): bool
{
return isset($item['children']);
}