mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-29 11:30:28 +00:00
04a4a0f92e
listLanguages() returns a list of supported languages. It does not return language aliases. highlight.js has extensive support of language aliases which can be viewed here https://highlightjs.readthedocs.io/en/latest/css-classes-reference.html#language-names-and-aliases But because of using listLanguages(), TW does not take advantage of alias. getLanguage() method on the other hand supports aliases. https://highlightjs.readthedocs.io/en/latest/api.html#getlanguage-name To summarize, now user can use javascript, js or jsx for the code block. getLanguage() will return an object which means highlight.js supports this language.
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
/*\
|
|
title: $:/plugins/tiddlywiki/highlight/highlightblock.js
|
|
type: application/javascript
|
|
module-type: widget
|
|
|
|
Wraps up the fenced code blocks parser for highlight and use in TiddlyWiki5
|
|
|
|
\*/
|
|
(function() {
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
var TYPE_MAPPINGS_BASE = "$:/config/HighlightPlugin/TypeMappings/";
|
|
|
|
var CodeBlockWidget = require("$:/core/modules/widgets/codeblock.js").codeblock;
|
|
|
|
var hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js");
|
|
|
|
hljs.configure({tabReplace: " "});
|
|
|
|
CodeBlockWidget.prototype.postRender = function() {
|
|
var domNode = this.domNodes[0],
|
|
language = this.language,
|
|
tiddler = this.wiki.getTiddler(TYPE_MAPPINGS_BASE + language);
|
|
if(tiddler) {
|
|
language = tiddler.fields.text || "";
|
|
}
|
|
if(language && hljs.getLanguage(language)) {
|
|
domNode.className = language.toLowerCase() + " hljs";
|
|
if($tw.browser && !domNode.isTiddlyWikiFakeDom) {
|
|
hljs.highlightBlock(domNode);
|
|
} else {
|
|
var text = domNode.textContent;
|
|
domNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language,text).value);
|
|
// If we're using the fakedom then specially save the original raw text
|
|
if(domNode.isTiddlyWikiFakeDom) {
|
|
domNode.children[0].textInnerHTML = text;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
})();
|