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 */
2var _self = (typeof window !== 'undefined')2var _self = (typeof window !== 'undefined')
3 ? window // if in browser3 ? window // if in browser
4 : (4 : (
@@ -178,7 +178,7 @@ var _ = _self.Prism = { · 173 unmodified lines
178 }178 }
179 179
180 if (parent) {180 if (parent) {
181 language = (parent.className.match(lang) || [,''])[1];181 language = (parent.className.match(lang) || [,''])[1].toLowerCase();
182 grammar = _.languages[language];182 grammar = _.languages[language];
183 }183 }
184 184
@@ -201,7 +201,9 @@ var _ = _self.Prism = { · 16 unmodified lines
201 code: code201 code: code
202 };202 };
203 203
204 if (!code || !grammar) {204 _.hooks.run('before-sanity-check', env);
205
206 if (!env.code || !env.grammar) {
205 _.hooks.run('complete', env);207 _.hooks.run('complete', env);
206 return;208 return;
207 }209 }
@@ -477,7 +479,12 @@ Token.stringify = function(o, language, parent) { · 269 unmodified lines
477// _.filename = script.src;479// _.filename = script.src;
478 480
479// if (document.addEventListener && !script.hasAttribute('data-manual')) {481// 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// }
481// }488// }
482// }489// }
483 490
@@ -634,7 +641,7 @@ Prism.languages.insertBefore('javascript', 'keyword', { · 150 unmodified lines
634 }641 }
635});642});
636 643
637Prism.languages.insertBefore('javascript', 'class-name', {644Prism.languages.insertBefore('javascript', 'string', {
638 'template-string': {645 'template-string': {
639 pattern: /`(?:\\\\|\\?[^\\])*?`/,646 pattern: /`(?:\\\\|\\?[^\\])*?`/,
640 greedy: true,647 greedy: true,
@@ -726,11 +733,15 @@ Prism.languages.coffeescript = Prism.languages.extend('javascript', { · 85 unmodified lines
726 'string': [733 'string': [
727 734
728 // Strings are multiline735 // Strings are multiline
729 /'(?:\\?[^\\])*?'/,736 {
737 pattern: /'(?:\\?[^\\])*?'/,
738 greedy: true,
739 },
730 740
731 {741 {
732 // Strings are multiline742 // Strings are multiline
733 pattern: /"(?:\\?[^\\])*?"/,743 pattern: /"(?:\\?[^\\])*?"/,
744 greedy: true,
734 inside: {745 inside: {
735 'interpolation': interpolation746 'interpolation': interpolation
736 }747 }
@@ -776,10 +787,12 @@ Prism.languages.insertBefore('coffeescript', 'string', { · 39 unmodified lines
776 'multiline-string': [787 'multiline-string': [
777 {788 {
778 pattern: /'''[\s\S]*?'''/,789 pattern: /'''[\s\S]*?'''/,
790 greedy: true,
779 alias: 'string'791 alias: 'string'
780 },792 },
781 {793 {
782 pattern: /"""[\s\S]*?"""/,794 pattern: /"""[\s\S]*?"""/,
795 greedy: true,
783 alias: 'string',796 alias: 'string',
784 inside: {797 inside: {
785 interpolation: interpolation798 interpolation: interpolation
@@ -794,6 +807,8 @@ Prism.languages.insertBefore('coffeescript', 'keyword', { · 8 unmodified lines
794 'property': /(?!\d)\w+(?=\s*:(?!:))/807 'property': /(?!\d)\w+(?=\s*:(?!:))/
795});808});
796 809
810delete Prism.languages.coffeescript['template-string'];
811
797}(Prism));812}(Prism));
798/**813/**
799 * Original by Samuel Flores814 * Original by Samuel Flores
@@ -1018,10 +1033,75 @@ Prism.languages.json = { · 218 unmodified lines
1018 1033
1019Prism.languages.jsonp = Prism.languages.json;1034Prism.languages.jsonp = Prism.languages.json;
1020 1035
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));
1021Prism.languages.lua = {1098Prism.languages.lua = {
1022 'comment': /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,1099 'comment': /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,
1023 // \z may be used to skip the following space1100 // \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 },
1025 'number': /\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,1105 'number': /\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,
1026 '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/,1106 '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/,
1027 'function': /(?!\d)\w+(?=\s*(?:[({]))/,1107 'function': /(?!\d)\w+(?=\s*(?:[({]))/,
@@ -1307,7 +1387,10 @@ Prism.languages.python= { · 279 unmodified lines
1307 pattern: /(^|[^\\])#.*/,1387 pattern: /(^|[^\\])#.*/,
1308 lookbehind: true1388 lookbehind: true
1309 },1389 },
1310 'string': /("|')(?:\\?.)*?\1/,1390 'string': {
1391 pattern: /("|')(?:\\\\|\\?[^\\\r\n])*?\1/,
1392 greedy: true
1393 },
1311 'function' : {1394 'function' : {
1312 pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,1395 pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,
1313 lookbehind: true1396 lookbehind: true
@@ -1387,7 +1470,7 @@ Prism.languages.sql= { · 73 unmodified lines
1387 },1470 },
1388 'variable': /@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/,1471 'variable': /@[\w.$]+|@("|'|`)(?:\\?[\s\S])+?\1/,
1389 '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?1472 '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,
1391 'boolean': /\b(?:TRUE|FALSE|NULL)\b/i,1474 'boolean': /\b(?:TRUE|FALSE|NULL)\b/i,
1392 'number': /\b-?(?:0x)?\d*\.?[\da-f]+\b/,1475 'number': /\b-?(?:0x)?\d*\.?[\da-f]+\b/,
1393 'operator': /[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,1476 'operator': /[-+*\/=%^~]|&&?|\|?\||!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,