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

2
.gitignore vendored
View File

@ -29,4 +29,4 @@ node_modules/
# so i don't accidentally commit something
*.htm
*.htm

View File

@ -36,4 +36,6 @@ $(COPY_L): %.justcopytobuilddir: %.css
mv -f $@ $(subst $(SRC_DIRS),$(BUILD_DIR),./$(dir $@))
%.justcopytobuilddir:
cp -f $< $(BUILD_DIR)
cp -f $< $(BUILD_DIR)
# end of GNUmakefile

View File

@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.

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;
}
}