mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-23 18:17:20 +00:00
Plugin for syntax highlighting with highlight.js from Ivan Sagalaev
This commit is contained in:
parent
e0f428b9b2
commit
a1d2e70307
6
bld.sh
6
bld.sh
@ -89,6 +89,12 @@ node ./tiddlywiki.js \
|
|||||||
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/markdowndemo.html text/plain \
|
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/markdowndemo.html text/plain \
|
||||||
|| exit 1
|
|| exit 1
|
||||||
|
|
||||||
|
node ./tiddlywiki.js \
|
||||||
|
./editions/highlightdemo \
|
||||||
|
--verbose \
|
||||||
|
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/highlightdemo.html text/plain \
|
||||||
|
|| exit 1
|
||||||
|
|
||||||
# Run the test edition to run the Node.js tests and to generate test.html for tests in the browser
|
# Run the test edition to run the Node.js tests and to generate test.html for tests in the browser
|
||||||
|
|
||||||
./test.sh
|
./test.sh
|
||||||
|
4
editions/highlightdemo/tiddlers/DefaultTiddlers.tid
Normal file
4
editions/highlightdemo/tiddlers/DefaultTiddlers.tid
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
title: $:/DefaultTiddlers
|
||||||
|
|
||||||
|
[[HelloThere]]
|
||||||
|
[[HighlightExample]]
|
9
editions/highlightdemo/tiddlers/HelloThere.tid
Normal file
9
editions/highlightdemo/tiddlers/HelloThere.tid
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
title: HelloThere
|
||||||
|
|
||||||
|
This is a demo of TiddlyWiki5 incorporating a plugin for the [[highlight.js|https://github.com/isagalaev/highlight.js]] Syntax highlighting for the Web from Ivan Sagalaev.
|
||||||
|
|
||||||
|
The HighlightExample tiddler have fenced blocks of code.
|
||||||
|
|
||||||
|
To add the plugin to your own TiddlyWiki5, just drag this link to the browser window:
|
||||||
|
|
||||||
|
[[$:/plugins/tiddlywiki/highlight]]
|
51
editions/highlightdemo/tiddlers/HighlightExample.tid
Normal file
51
editions/highlightdemo/tiddlers/HighlightExample.tid
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
title: HighlightExample
|
||||||
|
|
||||||
|
''Javascript'' fenced code:
|
||||||
|
|
||||||
|
```
|
||||||
|
(function(a,b){
|
||||||
|
var result = a+b;
|
||||||
|
return result;
|
||||||
|
})(10,20)
|
||||||
|
```
|
||||||
|
|
||||||
|
''CSS'' fenced code:
|
||||||
|
|
||||||
|
```
|
||||||
|
* { margin: 0; padding: 0; } /* micro reset */
|
||||||
|
|
||||||
|
html { font-size: 62.5%; }
|
||||||
|
body { font-size: 14px; font-size: 1.4rem; } /* =14px */
|
||||||
|
h1 { font-size: 24px; font-size: 2.4rem; } /* =24px */
|
||||||
|
```
|
||||||
|
|
||||||
|
''Perl'' fenced code:
|
||||||
|
|
||||||
|
```
|
||||||
|
package Name;
|
||||||
|
my $singleton;
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
$singleton = {
|
||||||
|
attribute => 'value',
|
||||||
|
another => 'something',
|
||||||
|
};
|
||||||
|
bless $singleton, "Name";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub new {
|
||||||
|
my $class = shift;
|
||||||
|
return $singleton;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
''Python'' fenced code:
|
||||||
|
|
||||||
|
```
|
||||||
|
class Singleton:
|
||||||
|
__single = None
|
||||||
|
def __init__( self ):
|
||||||
|
if Singleton.__single:
|
||||||
|
raise Singleton.__single
|
||||||
|
Singleton.__single = self
|
||||||
|
```
|
3
editions/highlightdemo/tiddlers/SiteSubtitle.tid
Normal file
3
editions/highlightdemo/tiddlers/SiteSubtitle.tid
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
title: SiteSubtitle
|
||||||
|
|
||||||
|
a demo of the Highlight plugin for TiddlyWiki5
|
3
editions/highlightdemo/tiddlers/SiteTitle.tid
Normal file
3
editions/highlightdemo/tiddlers/SiteTitle.tid
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
title: SiteTitle
|
||||||
|
|
||||||
|
highlightdemo
|
13
editions/highlightdemo/tiddlywiki.info
Normal file
13
editions/highlightdemo/tiddlywiki.info
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"plugins": [
|
||||||
|
"tiddlywiki/highlight"
|
||||||
|
],
|
||||||
|
"themes": [
|
||||||
|
"tiddlywiki/vanilla",
|
||||||
|
"tiddlywiki/snowwhite"
|
||||||
|
],
|
||||||
|
"doNotSave": [
|
||||||
|
],
|
||||||
|
"includeWikis": [
|
||||||
|
]
|
||||||
|
}
|
1
plugins/tiddlywiki/highlight/files/default.min.css
vendored
Normal file
1
plugins/tiddlywiki/highlight/files/default.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
pre code{display:block;padding:.5em;background:#f0f0f0}pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:black}pre .string,pre .title,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .pragma,pre .haml .symbol,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .asciidoc .header,pre .markdown .header,pre .coffeescript .attribute{color:#800}pre .smartquote,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .asciidoc .blockquote,pre .markdown .blockquote{color:#888}pre .number,pre .date,pre .regexp,pre .literal,pre .hexcolor,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .lasso .variable,pre .makefile .variable,pre .asciidoc .bullet,pre .markdown .bullet,pre .asciidoc .link_url,pre .markdown .link_url{color:#080}pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .haml .bullet,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .asciidoc .link_label,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .asciidoc .attribute,pre .lasso .attribute,pre .coffeescript .property,pre .makefile .phony{color:#88F}pre .keyword,pre .id,pre .title,pre .built_in,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .asciidoc .strong,pre .markdown .strong,pre .request,pre .status{font-weight:bold}pre .asciidoc .emphasis,pre .markdown .emphasis{font-style:italic}pre .nginx .built_in{font-weight:normal}pre .coffeescript .javascript,pre .javascript .xml,pre .lasso .markup,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:.5}
|
1
plugins/tiddlywiki/highlight/files/highlight.min.js
vendored
Normal file
1
plugins/tiddlywiki/highlight/files/highlight.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
22
plugins/tiddlywiki/highlight/files/tiddlywiki.files
Normal file
22
plugins/tiddlywiki/highlight/files/tiddlywiki.files
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"tiddlers": [
|
||||||
|
{
|
||||||
|
"file": "highlight.min.js",
|
||||||
|
"fields": {
|
||||||
|
"type": "application/javascript",
|
||||||
|
"title": "$:/plugins/tiddlywiki/highlight/highlight.js",
|
||||||
|
"module-type": "library"
|
||||||
|
},
|
||||||
|
"prefix": "var hljs;if($tw.browser){\n",
|
||||||
|
"suffix": "}\nexports.hljs = hljs;\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "default.min.css",
|
||||||
|
"fields": {
|
||||||
|
"type": "text/css",
|
||||||
|
"title": "$:/plugins/tiddlywiki/highlight/highlight.css",
|
||||||
|
"tags": "[[$:/tags/stylesheet]]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
53
plugins/tiddlywiki/highlight/highlightblock.js
Normal file
53
plugins/tiddlywiki/highlight/highlightblock.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*\
|
||||||
|
title: $:/plugins/tiddlywiki/highlight/highlightblock.js
|
||||||
|
type: application/javascript
|
||||||
|
module-type: parser
|
||||||
|
|
||||||
|
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 hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js").hljs,
|
||||||
|
WikiParser = require("$:/core/modules/parsers/wikiparser/wikiparser.js")["text/vnd.tiddlywiki"],
|
||||||
|
BlockParsers = $tw.modules.createClassesFromModules("wikirule", "block", $tw.WikiRuleBase);
|
||||||
|
|
||||||
|
BlockParsers.codeblock.prototype.parse = function() {
|
||||||
|
var reEnd = /(\r?\n```$)/mg;
|
||||||
|
// Move past the match
|
||||||
|
this.parser.pos = this.matchRegExp.lastIndex;
|
||||||
|
// Look for the end of the block
|
||||||
|
reEnd.lastIndex = this.parser.pos;
|
||||||
|
var match = reEnd.exec(this.parser.source),
|
||||||
|
text;
|
||||||
|
// Process the block
|
||||||
|
if (match) {
|
||||||
|
text = this.parser.source.substring(this.parser.pos, match.index);
|
||||||
|
this.parser.pos = match.index + match[0].length;
|
||||||
|
} else {
|
||||||
|
text = this.parser.source.substr(this.parser.pos);
|
||||||
|
this.parser.pos = this.parser.sourceLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the pre element
|
||||||
|
return [{
|
||||||
|
type: "element",
|
||||||
|
tag: "pre",
|
||||||
|
children: [{
|
||||||
|
type: "element",
|
||||||
|
tag: "code",
|
||||||
|
children: [{
|
||||||
|
type: "raw",
|
||||||
|
html: hljs.highlightAuto(text).value
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
WikiParser.prototype.blockRuleClasses = BlockParsers;
|
||||||
|
|
||||||
|
})();
|
5
plugins/tiddlywiki/highlight/plugin.info
Normal file
5
plugins/tiddlywiki/highlight/plugin.info
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"title": "$:/plugins/tiddlywiki/highlight",
|
||||||
|
"description": "Highlight.js plugin for TiddlyWiki5",
|
||||||
|
"author": "JoaoBolila"
|
||||||
|
}
|
56
plugins/tiddlywiki/highlight/styles.tid
Normal file
56
plugins/tiddlywiki/highlight/styles.tid
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
title: $:/plugins/tiddlywiki/highlight/styles
|
||||||
|
tags: [[$:/tags/stylesheet]]
|
||||||
|
|
||||||
|
|
||||||
|
/* Tomorrow Night Theme */
|
||||||
|
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||||
|
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
||||||
|
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||||
|
.tomorrow-comment, pre .comment, pre .title {
|
||||||
|
color: #969896;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
|
||||||
|
color: #cc6666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tomorrow-orange, pre .number, pre .preprocessor, pre .pragma, pre .built_in, pre .literal, pre .params, pre .constant {
|
||||||
|
color: #de935f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tomorrow-yellow, pre .ruby .class .title, pre .css .rules .attribute {
|
||||||
|
color: #f0c674;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
|
||||||
|
color: #b5bd68;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tomorrow-aqua, pre .css .hexcolor {
|
||||||
|
color: #8abeb7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
|
||||||
|
color: #81a2be;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tomorrow-purple, pre .keyword, pre .javascript .function {
|
||||||
|
color: #b294bb;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
display: block;
|
||||||
|
background: #1d1f21;
|
||||||
|
color: #c5c8c6;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre .coffeescript .javascript,
|
||||||
|
pre .javascript .xml,
|
||||||
|
pre .tex .formula,
|
||||||
|
pre .xml .javascript,
|
||||||
|
pre .xml .vbscript,
|
||||||
|
pre .xml .css,
|
||||||
|
pre .xml .cdata {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user