mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2024-12-20 19:06:06 +01:00
28 lines
869 B
JavaScript
28 lines
869 B
JavaScript
|
/**
|
||
|
* Parse a series string into a name and sequence
|
||
|
*
|
||
|
* @example
|
||
|
* Name #1a => { name: 'Name', sequence: '1a' }
|
||
|
* Name #1 => { name: 'Name', sequence: '1' }
|
||
|
*
|
||
|
* @param {string} seriesString
|
||
|
* @returns {{name: string, sequence: string}|null}
|
||
|
*/
|
||
|
module.exports.parse = (seriesString) => {
|
||
|
if (!seriesString || typeof seriesString !== 'string') return null
|
||
|
|
||
|
let sequence = null
|
||
|
let name = seriesString
|
||
|
// Series sequence match any characters after " #" other than whitespace and another #
|
||
|
// e.g. "Name #1a" is valid. "Name #1#a" or "Name #1 a" is not valid.
|
||
|
const matchResults = seriesString.match(/ #([^#\s]+)$/) // Pull out sequence #
|
||
|
if (matchResults && matchResults.length && matchResults.length > 1) {
|
||
|
sequence = matchResults[1] // Group 1
|
||
|
name = seriesString.replace(matchResults[0], '')
|
||
|
}
|
||
|
return {
|
||
|
name,
|
||
|
sequence
|
||
|
}
|
||
|
}
|