aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-robotframework.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/prism/prism-robotframework.js')
-rw-r--r--public/prism/prism-robotframework.js111
1 files changed, 111 insertions, 0 deletions
diff --git a/public/prism/prism-robotframework.js b/public/prism/prism-robotframework.js
new file mode 100644
index 0000000..ab5fda3
--- /dev/null
+++ b/public/prism/prism-robotframework.js
@@ -0,0 +1,111 @@
+(function (Prism) {
+ var comment = {
+ pattern: /(^[ \t]*| {2}|\t)#.*/m,
+ lookbehind: true,
+ greedy: true,
+ };
+
+ var variable = {
+ pattern: /((?:^|[^\\])(?:\\{2})*)[$@&%]\{(?:[^{}\r\n]|\{[^{}\r\n]*\})*\}/,
+ lookbehind: true,
+ inside: {
+ punctuation: /^[$@&%]\{|\}$/,
+ },
+ };
+
+ function createSection(name, inside) {
+ var extendecInside = {};
+
+ extendecInside['section-header'] = {
+ pattern: /^ ?\*{3}.+?\*{3}/,
+ alias: 'keyword',
+ };
+
+ // copy inside tokens
+ for (var token in inside) {
+ extendecInside[token] = inside[token];
+ }
+
+ extendecInside['tag'] = {
+ pattern: /([\r\n](?: {2}|\t)[ \t]*)\[[-\w]+\]/,
+ lookbehind: true,
+ inside: {
+ punctuation: /\[|\]/,
+ },
+ };
+ extendecInside['variable'] = variable;
+ extendecInside['comment'] = comment;
+
+ return {
+ pattern: RegExp(
+ /^ ?\*{3}[ \t]*<name>[ \t]*\*{3}(?:.|[\r\n](?!\*{3}))*/.source.replace(
+ /<name>/g,
+ function () {
+ return name;
+ }
+ ),
+ 'im'
+ ),
+ alias: 'section',
+ inside: extendecInside,
+ };
+ }
+
+ var docTag = {
+ pattern:
+ /(\[Documentation\](?: {2}|\t)[ \t]*)(?![ \t]|#)(?:.|(?:\r\n?|\n)[ \t]*\.{3})+/,
+ lookbehind: true,
+ alias: 'string',
+ };
+
+ var testNameLike = {
+ pattern: /([\r\n] ?)(?!#)(?:\S(?:[ \t]\S)*)+/,
+ lookbehind: true,
+ alias: 'function',
+ inside: {
+ variable: variable,
+ },
+ };
+
+ var testPropertyLike = {
+ pattern: /([\r\n](?: {2}|\t)[ \t]*)(?!\[|\.{3}|#)(?:\S(?:[ \t]\S)*)+/,
+ lookbehind: true,
+ inside: {
+ variable: variable,
+ },
+ };
+
+ Prism.languages['robotframework'] = {
+ settings: createSection('Settings', {
+ documentation: {
+ pattern:
+ /([\r\n] ?Documentation(?: {2}|\t)[ \t]*)(?![ \t]|#)(?:.|(?:\r\n?|\n)[ \t]*\.{3})+/,
+ lookbehind: true,
+ alias: 'string',
+ },
+ property: {
+ pattern: /([\r\n] ?)(?!\.{3}|#)(?:\S(?:[ \t]\S)*)+/,
+ lookbehind: true,
+ },
+ }),
+ variables: createSection('Variables'),
+ 'test-cases': createSection('Test Cases', {
+ 'test-name': testNameLike,
+ documentation: docTag,
+ property: testPropertyLike,
+ }),
+ keywords: createSection('Keywords', {
+ 'keyword-name': testNameLike,
+ documentation: docTag,
+ property: testPropertyLike,
+ }),
+ tasks: createSection('Tasks', {
+ 'task-name': testNameLike,
+ documentation: docTag,
+ property: testPropertyLike,
+ }),
+ comment: comment,
+ };
+
+ Prism.languages.robot = Prism.languages['robotframework'];
+})(Prism);