Compare commits

..

2 Commits

Author SHA1 Message Date
yellows111 cf7d304474 0.0.5 "commit submitted by yellows111"
* Modified reformatter to also handle code tags.
+ Anchor prefixes for ( and [ are now handled correctly.
+ Multiple tags suffixes for ], ), commas, periods and (semi-)colons.
+ Added a "page rendered by yiki (VERSION) on (DATE)"
  to the bottom of the default template
* Fixed titles since I forgot about it in the .htm to .html conversion
* Underscores are now converted to spaces in the page title

AC: "not much to say here other than this being the second release of the day"
2024-04-18 14:14:07 +01:00
yellows111 bd537bbb4d 0.0.4 - "styling it up"
* Fixed the light color scheme, since the header jumps were pretty bad.
* Implement a link text reformatter to fix spacing issues with URLs.
* Added terminating newlines to all commited files.
* Spun the HTML formatter into a subfunction.

AC: "Nothing really added this time, but whatever."
2024-04-18 11:02:01 +01:00
7 changed files with 42 additions and 9 deletions

View File

@ -37,3 +37,5 @@ $(COPY_L): %.justcopytobuilddir: %.css
%.justcopytobuilddir:
cp -f $< $(BUILD_DIR)
# end of GNUmakefile

View File

@ -18,6 +18,9 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// local
const Package = require("./package.json");
// npm
const Remarkable = require("remarkable").Remarkable; // remove .Remarkable if you're using Remarkable ^1.0.0!
const TOCGenerator = require("markdown-toc");
@ -51,6 +54,23 @@ function format(data, name) {
}
// forceIndent screws with text nodes pretty bad but the alternative is to not allow the full document to be formatted
const formatterRules = {"indentChar": "\t", "indentSize": 1, "markup": {"forceAttribute": false, "forceIndent": true}};
function render() {
return HTMLFormatter(data, formatterRules)
.split("\n") /* split by every newline */
.join("\n\t\t\t") /* then add padding and convert back into string */
.replace( /* multitag text node fix (should really just encase all text with <span>, but whatever) */
/(\t*)(<(?:code|a href=".*")>)\n\t*(.*)\n\t*(<\/(?:code|a)>)/g,
"$1$2$3$4"
)
.replace( /* link prefix spacing fix for ( and [ */
/([(\[])\n\t*(<a href=".*">.*<\/a>)/g,
"$1$2"
)
.replace( /* multitag suffix fix for special characters. */
/(<\/(?:a|code)>)\n\t*([.)\];:,])/g,
"$1$2"
);
}
// probably should bring in a better templating engine but whatever
return ( /* eslint-disable indent */
`<!doctype html>
@ -70,12 +90,16 @@ function format(data, name) {
</nav>
<hr>
<main>
${HTMLFormatter(data, formatterRules).split("\n").join("\n\t\t\t")}
${render()}
</main>
<hr>
<footer>
<span>page rendered by ${Package.name} ${Package.version} on ${new Date().toGMTString()}</span>
</footer>
</body>
</html>`
); /* eslint-enable indent */
}
let content = render(Filesystem.readFileSync(Process.argv[2]).toString());
Filesystem.writeFileSync(Process.argv[3], format(content, Path.basename(Process.argv[3], ".htm")));
Filesystem.writeFileSync(Process.argv[3], format(content, Path.basename(Process.argv[3], ".html").replace(/_/g, " ")));

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "yiki",
"version": "0.0.3",
"version": "0.0.5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "yiki",
"version": "0.0.3",
"version": "0.0.5",
"license": "MIT",
"dependencies": {
"@liquify/prettify": "^0.5.5-beta.1",

View File

@ -1,6 +1,6 @@
{
"name": "yiki",
"version": "0.0.3",
"version": "0.0.5",
"description": "The yellows111 wiki system",
"main": "compile.js",
"scripts": {

View File

@ -25,7 +25,7 @@ nav {
font-family: monospace;
}
.header-anchor {
a.header-anchor {
color: gray;
text-decoration: none;
}
@ -53,6 +53,10 @@ a.header-anchor:hover {
a:active {
text-decoration: underline teal;
}
a.header-anchor:hover {
color: black;
}
}
@media only print {
body {
@ -66,4 +70,7 @@ a.header-anchor:hover {
color: black;
text-decoration: underline black;
}
a.header-anchor {
display: none;
}
}