Commit 6ebb96f057ab75e777304e95929237fd4fb86de5

Golmote 2015-08-30T19:17:20

SAS: Simplified datalines and optimized operator patterns

diff --git a/components/prism-sas.js b/components/prism-sas.js
index e8696d2..ffee46b 100644
--- a/components/prism-sas.js
+++ b/components/prism-sas.js
@@ -1,17 +1,13 @@
 Prism.languages.sas = {
 	'datalines': {
-		pattern: /(^|[\r\n])\s*(?:(?:data)?lines|cards);[\s\S]+?[\r\n];/i,
-		lookbehind: true,
+		pattern: /^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,
+		alias: 'string',
 		inside: {
 			'keyword': {
 				pattern: /^(\s*)(?:(?:data)?lines|cards)/i,
 				lookbehind: true
 			},
-			'punctuation': /;/,
-			'data': {
-				pattern: /[\s\S]+/,
-				alias: 'string'
-			}
+			'punctuation': /;/
 		}
 	},
 	'comment': [
@@ -23,13 +19,13 @@ Prism.languages.sas = {
 	],
 	'datetime': {
 		// '1jan2013'd, '9:25:19pm't, '18jan2003:9:27:05am'dt
-		pattern: /'[^']+'(?:d|d?t)\b/i,
+		pattern: /'[^']+'(?:dt?|t)\b/i,
 		alias: 'number'
 	},
 	'string': /(["'])(?:\1\1|(?!\1)[\s\S])*\1/,
 	'keyword': /\b(?:data|else|format|if|input|proc|run|then)\b/i,
 	// Decimal (1.2e23), hexadecimal (0c1x)
 	'number': /(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,
-	'operator': /\*\*|\|\||!!|¦¦|<>|><|[~¬^<>]?=|[*\/+\-<>&\|!¦~¬^]|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,
+	'operator': /\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,
 	'punctuation': /[$%@.(){}\[\];,\\]/
 };
\ No newline at end of file
diff --git a/components/prism-sas.min.js b/components/prism-sas.min.js
index edb975c..e954fa7 100644
--- a/components/prism-sas.min.js
+++ b/components/prism-sas.min.js
@@ -1 +1 @@
-Prism.languages.sas={datalines:{pattern:/(^|[\r\n])\s*(?:(?:data)?lines|cards);[\s\S]+?[\r\n];/i,lookbehind:!0,inside:{keyword:{pattern:/^(\s*)(?:(?:data)?lines|cards)/i,lookbehind:!0},punctuation:/;/,data:{pattern:/[\s\S]+/,alias:"string"}}},comment:[{pattern:/(^\s*|;\s*)\*.*;/m,lookbehind:!0},/\/\*[\s\S]+?\*\//],datetime:{pattern:/'[^']+'(?:d|d?t)\b/i,alias:"number"},string:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,keyword:/\b(?:data|else|format|if|input|proc|run|then)\b/i,number:/(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,operator:/\*\*|\|\||!!|¦¦|<>|><|[~¬^<>]?=|[*\/+\-<>&\|!¦~¬^]|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,punctuation:/[$%@.(){}\[\];,\\]/};
\ No newline at end of file
+Prism.languages.sas={datalines:{pattern:/^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,alias:"string",inside:{keyword:{pattern:/^(\s*)(?:(?:data)?lines|cards)/i,lookbehind:!0},punctuation:/;/}},comment:[{pattern:/(^\s*|;\s*)\*.*;/m,lookbehind:!0},/\/\*[\s\S]+?\*\//],datetime:{pattern:/'[^']+'(?:dt?|t)\b/i,alias:"number"},string:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,keyword:/\b(?:data|else|format|if|input|proc|run|then)\b/i,number:/(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,punctuation:/[$%@.(){}\[\];,\\]/};
\ No newline at end of file