History

Add Kotlin syntax highlighting

Thibaut Courouble committed 10 years ago

Commit b268ba41 parent 78cf26a1 file · +92 −9Browse files

Unified · Split

assets/javascripts/vendor/prism.js+92−9
@@ -1,4 +1,4 @@
1−/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+go+json+lua+nginx+perl+php+python+rust+sql+typescript */
1+/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+go+json+kotlin+lua+nginx+perl+php+python+rust+sql+typescript */
22 var _self = (typeof window !== 'undefined')
33 ? window // if in browser
44 : (
@@ -178,7 +178,7 @@ var _ = _self.Prism = { · 173 unmodified lines
178178 }
179179
180180 if (parent) {
181− language = (parent.className.match(lang) || [,''])[1];
181+ language = (parent.className.match(lang) || [,''])[1].toLowerCase();
182182 grammar = _.languages[language];
183183 }
184184
@@ -201,7 +201,9 @@ var _ = _self.Prism = { · 16 unmodified lines
201201 code: code
202202 };
203203
204− if (!code || !grammar) {
204+ _.hooks.run('before-sanity-check', env);
205+
206+ if (!env.code || !env.grammar) {
205207 _.hooks.run('complete', env);
206208 return;
207209 }
@@ -477,7 +479,12 @@ Token.stringify = function(o, language, parent) { · 269 unmodified lines
477479 // _.filename = script.src;
478480
479481 // if (document.addEventListener && !script.hasAttribute('data-manual')) {
480−// document.addEventListener('DOMContentLoaded', _.highlightAll);
482+// if(document.readyState !== "loading") {
483+// requestAnimationFrame(_.highlightAll, 0);
484+// }
485+// else {
486+// document.addEventListener('DOMContentLoaded', _.highlightAll);
487+// }
481488 // }
482489 // }
483490
@@ -634,7 +641,7 @@ Prism.languages.insertBefore('javascript', 'keyword', { · 150 unmodified lines
634641 }
635642 });
636643
637−Prism.languages.insertBefore('javascript', 'class-name', {
644+Prism.languages.insertBefore('javascript', 'string', {
638645 'template-string': {
639646 pattern: /`(?:\\\\|\\?[^\\])*?`/,
640647 greedy: true,
@@ -726,11 +733,15 @@ Prism.languages.coffeescript = Prism.languages.extend('javascript', { · 85 unmodified lines
726733 'string': [
727734
728735 // Strings are multiline
729− /'(?:\\?[^\\])*?'/,
736+ {
737+ pattern: /'(?:\\?[^\\])*?'/,
738+ greedy: true,
739+ },
730740
731741 {
732742 // Strings are multiline
733743 pattern: /"(?:\\?[^\\])*?"/,
744+ greedy: true,
734745 inside: {
735746 'interpolation': interpolation
736747 }
@@ -776,10 +787,12 @@ Prism.languages.insertBefore('coffeescript', 'string', { · 39 unmodified lines
776787 'multiline-string': [
777788 {
778789 pattern: /'''[\s\S]*?'''/,
790+ greedy: true,
779791 alias: 'string'
780792 },
781793 {
782794 pattern: /"""[\s\S]*?"""/,
795+ greedy: true,
783796 alias: 'string',
784797 inside: {
785798 interpolation: interpolation
@@ -794,6 +807,8 @@ Prism.languages.insertBefore('coffeescript', 'keyword', { · 8 unmodified lines
794807 'property': /(?!\d)\w+(?=\s*:(?!:))/
795808 });
796809
810+delete Prism.languages.coffeescript['template-string'];
811+
797812 }(Prism));
798813 /**
799814 * Original by Samuel Flores
@@ -1018,10 +1033,75 @@ Prism.languages.json = { · 218 unmodified lines
10181033
10191034 Prism.languages.jsonp = Prism.languages.json;
10201035
1036+(function (Prism) {
1037+ Prism.languages.kotlin = Prism.languages.extend('clike', {
1038+ 'keyword': {
1039+ // The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get
1040+ pattern: /(^|[^.])\b(?:abstract|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|else|enum|final|finally|for|fun|get|if|import|in|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|out|override|package|private|protected|public|reified|return|sealed|set|super|tailrec|this|throw|to|try|val|var|when|where|while)\b/,
1041+ lookbehind: true
1042+ },
1043+ 'function': [
1044+ /\w+(?=\s*\()/,
1045+ {
1046+ pattern: /(\.)\w+(?=\s*\{)/,
1047+ lookbehind: true
1048+ }
1049+ ],
1050+ 'number': /\b(?:0[bx][\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?[fFL]?)\b/,
1051+ 'operator': /\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/
1052+ });
1053+
1054+ delete Prism.languages.kotlin["class-name"];
1055+
1056+ Prism.languages.insertBefore('kotlin', 'string', {
1057+ 'raw-string': {
1058+ pattern: /(["'])\1\1[\s\S]*?\1{3}/,
1059+ alias: 'string'
1060+ // See interpolation below
1061+ }
1062+ });
1063+ Prism.languages.insertBefore('kotlin', 'keyword', {
1064+ 'annotation': {
1065+ pattern: /\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,
1066+ alias: 'builtin'
1067+ }
1068+ });
1069+ Prism.languages.insertBefore('kotlin', 'function', {
1070+ 'label': {
1071+ pattern: /\w+@|@\w+/,
1072+ alias: 'symbol'
1073+ }
1074+ });
1075+
1076+ var interpolation = [
1077+ {
1078+ pattern: /\$\{[^}]+\}/,
1079+ inside: {
1080+ delimiter: {
1081+ pattern: /^\$\{|\}$/,
1082+ alias: 'variable'
1083+ },
1084+ rest: Prism.util.clone(Prism.languages.kotlin)
1085+ }
1086+ },
1087+ {
1088+ pattern: /\$\w+/,
1089+ alias: 'variable'
1090+ }
1091+ ];
1092+
1093+ Prism.languages.kotlin['string'].inside = Prism.languages.kotlin['raw-string'].inside = {
1094+ interpolation: interpolation
1095+ };
1096+
1097+}(Prism));
10211098 Prism.languages.lua = {
10221099 'comment': /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,
10231100 // \z may be used to skip the following space
1024− 'string': /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,
1101+ 'string': {
1102+ pattern: /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,
1103+ greedy: true
1104+ },
10251105 'number': /\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,
10261106 'keyword': /\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,
10271107 'function': /(?!\d)\w+(?=\s*(?:[({]))/,
@@ -1307,7 +1387,10 @@ Prism.languages.python= { · 279 unmodified lines
13071387 pattern: /(^|[^\\])#.*/,
13081388 lookbehind: true
13091389 },
1310− 'string': /("|')(?:\\?.)*?\1/,
1390+ 'string': {
1391+ pattern: /("|')(?:\\\\|\\?[^\\\r\n])*?\1/,
1392+ greedy: true
1393+ },
13111394 'function' : {
13121395 pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,
13131396 lookbehind: true
@@ -1387,7 +1470,7 @@ Prism.languages.sql= { · 73 unmodified lines
13871470 },
13881471 'variable': /@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/,
13891472 'function': /\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i, // Should we highlight user defined functions too?
1390− 'keyword': /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATETIME|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i,
1473+ 'keyword': /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i,
13911474 'boolean': /\b(?:TRUE|FALSE|NULL)\b/i,
13921475 'number': /\b-?(?:0x)?\d*\.?[\da-f]+\b/,
13931476 'operator': /[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,