Skip to content

Commit

Permalink
Simplify
Browse files Browse the repository at this point in the history
  • Loading branch information
thecrypticace committed Feb 23, 2022
1 parent 41a249b commit b824610
Showing 1 changed file with 23 additions and 29 deletions.
52 changes: 23 additions & 29 deletions tests/util/source-maps.js
Expand Up @@ -27,15 +27,10 @@ export function parseSourceMaps(result) {
*/
function annotatedMappings(map) {
const smc = new SourceMapConsumer(map)
const annotations = []

const lineAnnotations = {}
const annotations = {}

smc.eachMapping((mapping) => {
// For each generated line:
// Find the first and last columns
// And join the line/column numbers from the original source for those
lineAnnotations[mapping.generatedLine] = lineAnnotations[mapping.generatedLine] || {
let annotation = (annotations[mapping.generatedLine] = annotations[mapping.generatedLine] || {
...mapping,

original: {
Expand All @@ -47,39 +42,38 @@ function annotatedMappings(map) {
start: [mapping.generatedLine, mapping.generatedColumn],
end: [mapping.generatedLine, mapping.generatedColumn],
},
}

let annotation = lineAnnotations[mapping.generatedLine]
})

annotation.generated.end[0] = mapping.generatedLine
annotation.generated.end[1] = mapping.generatedColumn

annotation.original.end[0] = mapping.originalLine
annotation.original.end[1] = mapping.originalColumn

annotations.push(
`${mapping.originalLine}:${mapping.originalColumn} -> ${mapping.generatedLine}:${mapping.generatedColumn}`
)
})

/**
* @param {object} range
* @param {[number, number]} range.start
* @param {[number, number]} range.end
*/
function format(range) {
if (range.start[0] === range.end[0]) {
if (range.start[1] === range.end[1]) {
return `${range.start[0]}:${range.start[1]}`
}
return Object.values(annotations).map((annotation) => {
return `${formatRange(annotation.original)} -> ${formatRange(annotation.generated)}`
})
}

return `${range.start[0]}:${range.start[1]}-${range.end[1]}`
/**
* @param {object} range
* @param {[number, number]} range.start
* @param {[number, number]} range.end
*/
function formatRange(range) {
if (range.start[0] === range.end[0]) {
// This range is on the same line
// and the columns are the same
if (range.start[1] === range.end[1]) {
return `${range.start[0]}:${range.start[1]}`
}

return `${range.start[0]}:${range.start[1]}-${range.end[0]}:${range.end[1]}`
// This range is on the same line
// but the columns are different
return `${range.start[0]}:${range.start[1]}-${range.end[1]}`
}

return Object.values(lineAnnotations).map((annotation) => {
return `${format(annotation.original)} -> ${format(annotation.generated)}`
})
// This range spans multiple lines
return `${range.start[0]}:${range.start[1]}-${range.end[0]}:${range.end[1]}`
}

0 comments on commit b824610

Please sign in to comment.