forked from skillrecordings/egghead-next
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.js
More file actions
85 lines (79 loc) · 2 KB
/
utils.js
File metadata and controls
85 lines (79 loc) · 2 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// eslint-disable-next-line
'use strict'
Object.defineProperty(exports, '__esModule', {
value: true,
})
var _slicedToArray = (function () {
function sliceIterator(arr, i) {
var _arr = []
var _n = true
var _d = false
var _e = undefined
try {
for (
var _i = arr[Symbol.iterator](), _s;
!(_n = (_s = _i.next()).done);
_n = true
) {
_arr.push(_s.value)
if (i && _arr.length === i) break
}
} catch (err) {
_d = true
_e = err
} finally {
/*eslint no-unsafe-finally: 0*/
try {
if (!_n && _i['return']) _i['return']()
} finally {
if (_d) throw _e
}
}
return _arr
}
return function (arr, i) {
if (Array.isArray(arr)) {
return arr
} else if (Symbol.iterator in Object(arr)) {
return sliceIterator(arr, i)
} else {
throw new TypeError(
'Invalid attempt to destructure non-iterable instance',
)
}
}
})()
exports.parseStartTime = parseStartTime
var MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/
var MATCH_START_STAMP = /(\d+)(h|m|s)/g
var MATCH_NUMERIC = /^\d+$/
// Parse YouTube URL for a start time param, ie ?t=1h14m30s
// and return the start time in seconds
function parseStartTime(url) {
var match = url.match(MATCH_START_QUERY)
if (match) {
var stamp = match[1]
if (stamp.match(MATCH_START_STAMP)) {
return parseStartStamp(stamp)
}
if (MATCH_NUMERIC.test(stamp)) {
return parseInt(stamp, 10)
}
}
return 0
}
function parseStartStamp(stamp) {
var seconds = 0
var array = MATCH_START_STAMP.exec(stamp)
while (array !== null) {
var _array = array,
_array2 = _slicedToArray(_array, 3),
count = _array2[1],
period = _array2[2]
if (period === 'h') seconds += parseInt(count, 10) * 60 * 60
if (period === 'm') seconds += parseInt(count, 10) * 60
if (period === 's') seconds += parseInt(count, 10)
array = MATCH_START_STAMP.exec(stamp)
}
return seconds
}