2018-05-26 19:04:53 +02:00
/ * *
* @ author n1474335 [ n1474335 @ gmail . com ]
* @ copyright Crown Copyright 2016
* @ license Apache - 2.0
* /
2019-07-09 13:23:59 +02:00
import Operation from "../Operation.mjs" ;
2018-05-26 19:04:53 +02:00
import hljs from "highlight.js" ;
/ * *
* Syntax highlighter operation
* /
class SyntaxHighlighter extends Operation {
/ * *
* SyntaxHighlighter constructor
* /
constructor ( ) {
super ( ) ;
this . name = "Syntax highlighter" ;
this . module = "Code" ;
this . description = "Adds syntax highlighting to a range of source code languages. Note that this will not indent the code. Use one of the 'Beautify' operations for that." ;
2018-08-21 20:07:13 +02:00
this . infoURL = "https://wikipedia.org/wiki/Syntax_highlighting" ;
2018-05-26 19:04:53 +02:00
this . inputType = "string" ;
this . outputType = "html" ;
this . args = [
{
"name" : "Language" ,
"type" : "option" ,
"value" : [ "auto detect" ] . concat ( hljs . listLanguages ( ) )
}
] ;
}
/ * *
* @ param { string } input
* @ param { Object [ ] } args
* @ returns { html }
* /
run ( input , args ) {
const language = args [ 0 ] ;
if ( language === "auto detect" ) {
return hljs . highlightAuto ( input ) . value ;
}
return hljs . highlight ( language , input , true ) . value ;
}
/ * *
* Highlight Syntax highlighter
*
* @ param { Object [ ] } pos
* @ param { number } pos [ ] . start
* @ param { number } pos [ ] . end
* @ param { Object [ ] } args
* @ returns { Object [ ] } pos
* /
highlight ( pos , args ) {
return pos ;
}
/ * *
* Highlight Syntax highlighter in reverse
*
* @ param { Object [ ] } pos
* @ param { number } pos [ ] . start
* @ param { number } pos [ ] . end
* @ param { Object [ ] } args
* @ returns { Object [ ] } pos
* /
highlightReverse ( pos , args ) {
return pos ;
}
}
export default SyntaxHighlighter ;