2017-06-10 20:23:12 +00:00
|
|
|
var colors = require('mocha/lib/reporters/base').colors;
|
|
|
|
|
|
|
|
colors['pass'] = '30;42';
|
|
|
|
|
2017-06-07 20:47:10 +00:00
|
|
|
/*jshint esversion: 6 */
|
2017-06-07 20:14:09 +00:00
|
|
|
const TS_REGEX = /((\d{1,2}:)?\d{1,2}:\d{1,2})/;
|
2017-06-10 20:23:12 +00:00
|
|
|
const getArtistTitle = require('get-artist-title');
|
|
|
|
var _options = {};
|
2017-06-07 20:14:09 +00:00
|
|
|
|
|
|
|
var filterTimestamp = function(line) {
|
|
|
|
return TS_REGEX.test(line);
|
|
|
|
};
|
|
|
|
|
|
|
|
var parseTimeStamp = function(line) {
|
|
|
|
let matches = line.match(TS_REGEX);
|
|
|
|
return {
|
|
|
|
timestamp: matches[0],
|
|
|
|
text: matches.input,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
var parseTitle = function(obj) {
|
|
|
|
let i = obj.text.indexOf(obj.timestamp);
|
|
|
|
// See to the left of i and right of i
|
|
|
|
let left = obj.text.substr(0, i);
|
|
|
|
let right = obj.text.substr(i + obj.timestamp.length);
|
|
|
|
|
|
|
|
// Ties break in favor of right, right?
|
|
|
|
let title = left.length > right.length ? left : right;
|
|
|
|
|
|
|
|
title = title.trim();
|
|
|
|
|
|
|
|
return Object.assign({ title: title }, obj);
|
|
|
|
};
|
|
|
|
|
2017-06-10 20:23:12 +00:00
|
|
|
var parseArtist = function(obj) {
|
|
|
|
let [artist, title] = getArtistTitle(obj.title, {
|
|
|
|
defaultArtist: _options.artist,
|
|
|
|
});
|
|
|
|
return Object.assign({ artist: artist, title: title }, obj);
|
|
|
|
};
|
|
|
|
|
2017-06-07 20:14:09 +00:00
|
|
|
module.exports = {
|
2017-06-10 20:23:12 +00:00
|
|
|
parse: function(text, options = { artist: 'Unknown' }) {
|
|
|
|
_options = options;
|
2017-06-07 20:14:09 +00:00
|
|
|
return text
|
|
|
|
.split('\n')
|
|
|
|
.filter(filterTimestamp)
|
|
|
|
.map(parseTimeStamp)
|
2017-06-10 20:23:12 +00:00
|
|
|
.map(parseTitle)
|
|
|
|
.map(parseArtist);
|
2017-06-07 20:14:09 +00:00
|
|
|
},
|
|
|
|
};
|