nl_tokens: Stop! YAMLtime! existingVersions is the output of getNodeVersionsFromTravisYML
pl_tokens: function ( travisYML , newVersion , newCodeName , existingVersions ) { // Should only add the new version if it is not present in any form if ( existingVersions . versions . length === 0 ) return travisYML const nodeVersionIndex = getNodeVersionIndex ( existingVersions . versions , newVersion , newCodeName ) const travisYMLLines = travisYML . split ( '\n' ) // We only need to do something if the new version isn’t present if ( nodeVersionIndex === - 1 ) { let delimiter = '' let leadingSpaces = '' if ( existingVersions . <mask> && existingVersions . versions . length > 0 ) { if ( existingVersions . versions [ 0 ] . match ( / " / ) ) { delimiter = '"' } if ( existingVersions . versions [ 0 ] . match ( / ' / ) ) { delimiter = "'" } leadingSpaces = existingVersions . versions [ 0 ] . match ( / ^([ ]*) / ) [ 1 ] } // splice the new version back onto the end of the node version list in the original travisYMLLines array, // unless it wasn’t an array but an inline definition of a single version, eg: `node_js: 9` if ( existingVersions . versions . length === 1 && existingVersions . startIndex === existingVersions . endIndex ) { // A single node version was defined in inline format, now we want to define two versions in array format travisYMLLines . splice ( existingVersions . startIndex , 1 , 'node_js:' ) travisYMLLines . splice ( existingVersions . startIndex + 1 , 0 , ` ${ leadingSpaces } ${ existingVersions . versions [ 0 ] } ` ) travisYMLLines . splice ( existingVersions . startIndex + 2 , 0 , ` ${ leadingSpaces } ${ delimiter } ${ newVersion } ${ delimiter } ` ) } else { // Multiple node versions were defined in array format travisYMLLines . splice ( existingVersions . endIndex + 1 , 0 , ` ${ leadingSpaces } ${ delimiter } ${ newVersion } ${ delimiter } ` ) } } return travisYMLLines . join ( '\n' ) }