mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-09-17 14:21:29 +00:00
[ADF-2679] Added tutorial index tool (#3175)
This commit is contained in:
committed by
Eugenio Romano
parent
aba9f41af1
commit
809cf56e2b
3
lib/config/DocProcessor/templates/tutIndex.combyne
Normal file
3
lib/config/DocProcessor/templates/tutIndex.combyne
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{% each tuts as tut %}
|
||||||
|
1. [**{{tut.title}}**]({{tut.link}}) ({{tut.level}}): {{tut.briefDesc}}
|
||||||
|
{% endeach %}
|
101
lib/config/DocProcessor/tools/tutorialIndex.js
Normal file
101
lib/config/DocProcessor/tools/tutorialIndex.js
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
var fs = require("fs");
|
||||||
|
var path = require("path");
|
||||||
|
var replaceSection = require("mdast-util-heading-range");
|
||||||
|
var remark = require("remark");
|
||||||
|
var frontMatter = require("remark-frontmatter");
|
||||||
|
var yaml = require("js-yaml");
|
||||||
|
var combyne = require("combyne");
|
||||||
|
var unist = require("../unistHelpers");
|
||||||
|
var tutFolder = path.resolve("..", "docs", "tutorials");
|
||||||
|
var templateFolder = path.resolve(".", "config", "DocProcessor", "templates");
|
||||||
|
function initPhase(aggData) { }
|
||||||
|
exports.initPhase = initPhase;
|
||||||
|
function readPhase(tree, pathname, aggData) { }
|
||||||
|
exports.readPhase = readPhase;
|
||||||
|
function aggPhase(aggData) {
|
||||||
|
var indexDocData = getIndexDocData();
|
||||||
|
var templateName = path.resolve(templateFolder, "tutIndex.combyne");
|
||||||
|
var templateSource = fs.readFileSync(templateName, "utf8");
|
||||||
|
var template = combyne(templateSource);
|
||||||
|
var mdText = template.render(indexDocData);
|
||||||
|
mdText = mdText.replace(/^ +\|/mg, "|");
|
||||||
|
var newSection = remark().data("settings", { paddedTable: false, gfm: false }).parse(mdText.trim()).children;
|
||||||
|
var tutIndexFile = path.resolve(tutFolder, "README.md");
|
||||||
|
var tutIndexText = fs.readFileSync(tutIndexFile, "utf8");
|
||||||
|
var tutIndexMD = remark().data("settings", { paddedTable: false, gfm: false }).parse(tutIndexText);
|
||||||
|
replaceSection(tutIndexMD, "Tutorials", function (before, section, after) {
|
||||||
|
newSection.unshift(before);
|
||||||
|
newSection.push(after);
|
||||||
|
return newSection;
|
||||||
|
});
|
||||||
|
fs.writeFileSync(tutIndexFile, remark().use(frontMatter, { type: 'yaml', fence: '---' }).data("settings", { paddedTable: false, gfm: false }).stringify(tutIndexMD));
|
||||||
|
}
|
||||||
|
exports.aggPhase = aggPhase;
|
||||||
|
function updatePhase(tree, pathname, aggData) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
exports.updatePhase = updatePhase;
|
||||||
|
function getIndexDocData() {
|
||||||
|
var indexFile = path.resolve(tutFolder, "index.json");
|
||||||
|
var indexArray = JSON.parse(fs.readFileSync(indexFile, "utf8"));
|
||||||
|
var result = {
|
||||||
|
tuts: []
|
||||||
|
};
|
||||||
|
indexArray.forEach(function (element) {
|
||||||
|
var tutData = { link: element };
|
||||||
|
var tutFile = path.resolve(tutFolder, element);
|
||||||
|
var tutFileText = fs.readFileSync(tutFile, "utf8");
|
||||||
|
var tutMD = remark().use(frontMatter, ["yaml"]).parse(tutFileText);
|
||||||
|
var metadata = getDocMetadata(tutMD);
|
||||||
|
if (metadata["Level"]) {
|
||||||
|
tutData["level"] = metadata["Level"];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tutData["level"] = "";
|
||||||
|
}
|
||||||
|
var briefDesc = getFirstParagraph(tutMD);
|
||||||
|
var briefDescText = remark()
|
||||||
|
.use(frontMatter, { type: 'yaml', fence: '---' })
|
||||||
|
.data("settings", { paddedTable: false, gfm: false })
|
||||||
|
.stringify(briefDesc);
|
||||||
|
tutData["briefDesc"] = briefDescText;
|
||||||
|
var title = getFirstHeading(tutMD);
|
||||||
|
var titleText = remark()
|
||||||
|
.use(frontMatter, { type: 'yaml', fence: '---' })
|
||||||
|
.data("settings", { paddedTable: false, gfm: false })
|
||||||
|
.stringify(title.children[0]);
|
||||||
|
tutData["title"] = titleText;
|
||||||
|
result.tuts.push(tutData);
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function getDocMetadata(tree) {
|
||||||
|
if (tree.children[0].type == "yaml") {
|
||||||
|
return yaml.load(tree.children[0].value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getFirstParagraph(tree) {
|
||||||
|
var s = 0;
|
||||||
|
for (; (s < tree.children.length) && !unist.isParagraph(tree.children[s]); s++) { }
|
||||||
|
if (s < tree.children.length) {
|
||||||
|
return tree.children[s];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getFirstHeading(tree) {
|
||||||
|
var s = 0;
|
||||||
|
for (; (s < tree.children.length) && !unist.isHeading(tree.children[s]); s++) { }
|
||||||
|
if (s < tree.children.length) {
|
||||||
|
return tree.children[s];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
134
lib/config/DocProcessor/tools/tutorialIndex.ts
Normal file
134
lib/config/DocProcessor/tools/tutorialIndex.ts
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
import * as fs from "fs";
|
||||||
|
import * as path from "path";
|
||||||
|
|
||||||
|
import * as replaceSection from "mdast-util-heading-range";
|
||||||
|
import * as remark from "remark";
|
||||||
|
import * as stringify from "remark-stringify";
|
||||||
|
import * as frontMatter from "remark-frontmatter";
|
||||||
|
import * as yaml from "js-yaml";
|
||||||
|
import * as combyne from "combyne";
|
||||||
|
|
||||||
|
import * as unist from "../unistHelpers";
|
||||||
|
|
||||||
|
const tutFolder = path.resolve("..", "docs", "tutorials");
|
||||||
|
const templateFolder = path.resolve(".", "config", "DocProcessor", "templates");
|
||||||
|
|
||||||
|
|
||||||
|
export function initPhase(aggData) {}
|
||||||
|
|
||||||
|
export function readPhase(tree, pathname, aggData) {}
|
||||||
|
|
||||||
|
|
||||||
|
export function aggPhase(aggData) {
|
||||||
|
let indexDocData = getIndexDocData();
|
||||||
|
|
||||||
|
let templateName = path.resolve(templateFolder, "tutIndex.combyne");
|
||||||
|
let templateSource = fs.readFileSync(templateName, "utf8");
|
||||||
|
let template = combyne(templateSource);
|
||||||
|
|
||||||
|
let mdText = template.render(indexDocData);
|
||||||
|
mdText = mdText.replace(/^ +\|/mg, "|");
|
||||||
|
|
||||||
|
let newSection = remark().data("settings", {paddedTable: false, gfm: false}).parse(mdText.trim()).children;
|
||||||
|
|
||||||
|
let tutIndexFile = path.resolve(tutFolder, "README.md");
|
||||||
|
let tutIndexText = fs.readFileSync(tutIndexFile, "utf8");
|
||||||
|
let tutIndexMD = remark().data("settings", {paddedTable: false, gfm: false}).parse(tutIndexText);
|
||||||
|
|
||||||
|
replaceSection(tutIndexMD, "Tutorials", (before, section, after) => {
|
||||||
|
newSection.unshift(before);
|
||||||
|
newSection.push(after);
|
||||||
|
return newSection;
|
||||||
|
});
|
||||||
|
|
||||||
|
fs.writeFileSync(tutIndexFile, remark().use(frontMatter, {type: 'yaml', fence: '---'}).data("settings", {paddedTable: false, gfm: false}).stringify(tutIndexMD));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function updatePhase(tree, pathname, aggData) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getIndexDocData() {
|
||||||
|
let indexFile = path.resolve(tutFolder, "index.json");
|
||||||
|
let indexArray = JSON.parse(fs.readFileSync(indexFile, "utf8"));
|
||||||
|
|
||||||
|
let result = {
|
||||||
|
tuts: []
|
||||||
|
};
|
||||||
|
|
||||||
|
indexArray.forEach(element => {
|
||||||
|
let tutData = { link: element };
|
||||||
|
|
||||||
|
let tutFile = path.resolve(tutFolder, element);
|
||||||
|
let tutFileText = fs.readFileSync(tutFile, "utf8");
|
||||||
|
let tutMD = remark().use(frontMatter, ["yaml"]).parse(tutFileText);
|
||||||
|
|
||||||
|
let metadata = getDocMetadata(tutMD);
|
||||||
|
|
||||||
|
if (metadata["Level"]){
|
||||||
|
tutData["level"] = metadata["Level"];
|
||||||
|
} else {
|
||||||
|
tutData["level"] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
let briefDesc = getFirstParagraph(tutMD);
|
||||||
|
|
||||||
|
let briefDescText = remark()
|
||||||
|
.use(frontMatter, {type: 'yaml', fence: '---'})
|
||||||
|
.data("settings", {paddedTable: false, gfm: false})
|
||||||
|
.stringify(briefDesc);
|
||||||
|
|
||||||
|
tutData["briefDesc"] = briefDescText;
|
||||||
|
|
||||||
|
let title = getFirstHeading(tutMD);
|
||||||
|
|
||||||
|
let titleText = remark()
|
||||||
|
.use(frontMatter, {type: 'yaml', fence: '---'})
|
||||||
|
.data("settings", {paddedTable: false, gfm: false})
|
||||||
|
.stringify(title.children[0]);
|
||||||
|
|
||||||
|
tutData["title"] = titleText;
|
||||||
|
|
||||||
|
result.tuts.push(tutData);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getDocMetadata(tree) {
|
||||||
|
if (tree.children[0].type == "yaml") {
|
||||||
|
return yaml.load(tree.children[0].value);
|
||||||
|
} else {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getFirstParagraph(tree) {
|
||||||
|
let s = 0;
|
||||||
|
|
||||||
|
for (;(s < tree.children.length) && !unist.isParagraph(tree.children[s]); s++) {}
|
||||||
|
|
||||||
|
if (s < tree.children.length) {
|
||||||
|
return tree.children[s];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFirstHeading(tree) {
|
||||||
|
let s = 0;
|
||||||
|
|
||||||
|
for (;(s < tree.children.length) && !unist.isHeading(tree.children[s]); s++) {}
|
||||||
|
|
||||||
|
if (s < tree.children.length) {
|
||||||
|
return tree.children[s];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user