Skip to content

Instantly share code, notes, and snippets.

@leonidkuznetsov18
Created July 20, 2020 15:03
Show Gist options
  • Select an option

  • Save leonidkuznetsov18/144cd5d20b2b7c43815670a5e2bd69be to your computer and use it in GitHub Desktop.

Select an option

Save leonidkuznetsov18/144cd5d20b2b7c43815670a5e2bd69be to your computer and use it in GitHub Desktop.
make falttenArray based on left indent
public makeFlatNumberingArray = (paragraphs) => {
const resultArr = [];
let levelData = null;
for (let i = 0; i < paragraphs.length; i++) {
const curr = paragraphs[i];
let level = 0;
let parentId = null;
let levelString = curr.data.isListItem ? curr.data.listItem.listString : hasNumbering(curr.data.text)[0];
for (let j = i - 1; j >= 0; j--) {
const prev = resultArr[j];
if (curr.data.leftIndent > prev.data.leftIndent) {
level = prev.level + 1;
parentId = prev.id;
levelString = prev.levelString.replace(/\./, '.').concat('.', levelString.replace(/\./, ''));
break;
}
}
levelData = {
id: curr.id,
data: curr.data,
children: [],
parentId,
level,
levelString,
listString: curr.data.isListItem ? curr.data.listItem.listString : hasNumbering(curr.data.text)[0],
text: curr.data.isListItem ? curr.data.text : curr.data.text.replace(hasNumbering(curr.data.text)[0], ''),
references: hasReferences(curr.data.text),
};
resultArr.push(levelData);
}
return resultArr;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment