Initial import of 4.x module.

This commit is contained in:
Erik C. Thauvin 2016-07-23 15:37:07 -07:00
parent af67f93887
commit b4d2df93d3
8 changed files with 193 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
node_modules
bower_components

5
.travis.yml Normal file
View file

@ -0,0 +1,5 @@
language: node_js
sudo: false
node_js:
- "4"
- "5"

11
README.md Normal file
View file

@ -0,0 +1,11 @@
# brush-kotlin
Kotlin brush module for [SyntaxHighlighter](https://github.com/syntaxhighlighter/syntaxhighlighter).
## Usage
Please see [Building Instructions](https://github.com/syntaxhighlighter/syntaxhighlighter/wiki/Building) on the [SyntaxHighlighter Wiki](https://github.com/syntaxhighlighter/syntaxhighlighter/wiki) for details.
## License
MIT

70
brush.js Normal file
View file

@ -0,0 +1,70 @@
var BrushBase = require('brush-base');
var regexLib = require('syntaxhighlighter-regex').commonRegExp;
function Brush() {
var keywords = 'abstract annotation as break by catch class companion const constructor continue' +
' crossinline data do dynamic else enum external false final finally for fun get if' +
' import in infix init inline inner interface internal is lateinit noinline null object' +
' open operator out override package private protected public reified return sealed' +
' set super tailrec this throw trait true try type val var vararg when where while' +
' String Array Unit Int';
this.regexList = [
{
// line comment
regex: regexLib.singleLineCComments,
css: 'comments'
},
{
// block comment
regex: /\/\*([^\*][\s\S]*?)?\*\//gm,
css: 'comments'
},
{
// javadoc
regex: /\/\*(?!\*\/)\*[\s\S]*?\*\//gm,
css: 'preprocessor'
},
{
regex: regexLib.doubleQuotedString,
css: 'string'
},
{
regex: regexLib.singleQuotedString,
css: 'string'
},
{
// numbers
regex: /\b([\d]+(\.[\d]+)?f?|[\d]+l?|0x[a-f0-9]+)\b/gi,
css: 'value'
},
{
// annotations
regex: /\@(Target|Retention|Repeatable|MustBeDocumented|Test|Deprecated)/g,
css: 'color2'
},
{
// User-site targets
regex: /\@(file|property|field|get|set|receiver|param|setparam|delegate):/g,
css: 'color2'
},
{
// @Inject annotation
regex: /\@(Inject)\b/g,
css: 'color3'
},
{
regex: new RegExp(this.getKeywords(keywords), 'gm'),
css: 'keyword'
}
];
this.forHtmlScript({
left: /(&lt;|<)%[@!=]?/g,
right: /%(&gt;|>)/g
});
};
Brush.prototype = new BrushBase();
Brush.aliases = ['kotlin'];
module.exports = Brush;

4
mocha.opts Normal file
View file

@ -0,0 +1,4 @@
--recursive
--reporter spec
--ui bdd
--timeout 3000

46
package.json Normal file
View file

@ -0,0 +1,46 @@
{
"name": "brush-kotlin",
"version": "0.2.0",
"description": "Kotlin brush module for SyntaxHighlighter.",
"keywords": [
"syntaxhighlighter",
"brush",
"kotlin"
],
"homepage": "https://github.com/ethauvin/brush-kotlin",
"bugs": "https://github.com/syntaxhighlighter/brush-kotlin/issues",
"author": {
"name": "Erik C. Thauvin",
"url": "https://github.com/ethauvin"
},
"main": "brush.js",
"repository": {
"type": "git",
"url": "https://github.com/syntaxhighlighter/brush-kotlin.git"
},
"scripts": {
"test": "babel-node --only='syntaxhighlighter-*,brush-*' node_modules/.bin/_mocha --opts mocha.opts test.js"
},
"dependencies": {
"brush-base": "^4.0.0",
"syntaxhighlighter-regex": "^4.0.0"
},
"devDependencies": {
"babel-cli": "^6.4.5",
"babel-core": "^6.1.21",
"babel-preset-es2015": "^6.1.18",
"chai": "^3.4.1",
"mocha": "^2.3.4",
"syntaxhighlighter-match": "^4.0.0"
},
"engines": {
"node": ">=4",
"npm": ">=2"
},
"license": "MIT",
"babel": {
"presets": [
"es2015"
]
}
}

20
sample.txt Normal file
View file

@ -0,0 +1,20 @@
package demo
/**
* This class supports greeting people by name.
*
* @property name The name of the person to be greeted.
*/
class Greeter(val name: String) {
/**
* Prints the greeting to the standard output.
*/
fun greet() {
println("Hello $name!")
}
}
fun main(args: Array<String>) {
Greeter(args[0]).greet()
}

35
test.js Normal file
View file

@ -0,0 +1,35 @@
var chai = require('chai');
var expect = chai.expect;
var match = require('syntaxhighlighter-match');
var Brush = require('./brush');
var sample = require('fs').readFileSync(`${__dirname}/sample.txt`, 'utf8');
describe('brush-java', function() {
var instance = null;
before(function() {
instance = new Brush();
});
it('has populated code sample', function() {
expect(sample).to.not.match(/^Populate/);
});
describe('instance', function() {
it('has `regexList`', function() {
expect(instance).to.have.property('regexList');
});
});
describe('parsing', function() {
var matches = null;
before(function() {
matches = match.applyRegexList(sample, instance.regexList);
});
it('can parse', function() {
expect(matches).to.have.length.above(0);
});
});
});