1 |
7876
|
aaronmk
|
function is_undef(value) { return typeof value === 'undefined' }
|
2 |
|
|
|
3 |
|
|
function coalesce(value, empty) { return !is_undef(value) ? value : empty }
|
4 |
|
|
|
5 |
|
|
function starts_with(str, prefix)
|
6 |
|
|
{
|
7 |
|
|
return str.substr(0, prefix.length) === prefix
|
8 |
|
|
}
|
9 |
|
|
|
10 |
|
|
function ends_with(str, suffix) { return str.substr(-suffix.length) === suffix }
|
11 |
|
|
|
12 |
|
|
function rm_prefix(prefix, str)
|
13 |
|
|
{
|
14 |
|
|
return starts_with(str, prefix) ? str.substr(prefix.length) : str
|
15 |
|
|
}
|
16 |
|
|
|
17 |
|
|
function rm_suffix(suffix, str)
|
18 |
|
|
{
|
19 |
|
|
return ends_with(str, suffix) ?
|
20 |
|
|
str.substr(0, str.length - suffix.length) : str
|
21 |
|
|
}
|
22 |
|
|
|
23 |
|
|
function partition(str, delim)
|
24 |
|
|
{
|
25 |
|
|
var delim_idx = str.indexOf(delim)
|
26 |
|
|
return delim_idx >= 0 ? {head: str.substr(0, delim_idx),
|
27 |
|
|
tail: str.substr(delim_idx+delim.length)} : {head: str, tail: ''}
|
28 |
|
|
}
|
29 |
|
|
|
30 |
|
|
function parse_dot_path(path) { return partition(path, '.') }
|
31 |
|
|
|
32 |
|
|
function parse_mixed_path(path)
|
33 |
|
|
{
|
34 |
|
|
path = /^([\w-]*)(.*)$/.exec(path)
|
35 |
|
|
return {head: path[1], tail: rm_prefix('.', path[2])}
|
36 |
|
|
}
|
37 |
|
|
|
38 |
|
|
function strip_url(url) { return rm_suffix('#', url) }
|