lotus / inc /lilyParser /measures.ts
k-l-lambda's picture
commit lotus dist.
d605f27
raw
history blame contribute delete
805 Bytes
import {BaseTerm} from "./lilyTerms";
// eslint-disable-next-line
import LilyDocument from "./lilyDocument";
type MeasureLocationTable = {[key: number]: {[key: number]: number}};
const assignMeasures = (doc: LilyDocument, locationTable: MeasureLocationTable) => {
doc.root.forEachTerm(BaseTerm, term => {
if (term._location) {
for (let line = term._location.lines[0]; line <= term._location.lines[1]; ++line) {
const lineTable = locationTable[line];
if (lineTable) {
const item = Object.entries(lineTable).find(([key]) => {
const column = Number(key);
return column >= term._location.columns[0] && column < term._location.columns[1];
});
if (item) {
term._measure = item[1];
break;
}
}
}
}
});
};
export {
assignMeasures,
};