yelp-xsl/yelp-xsl-update-jquery-syntax.patch
Dominique Leuenberger 46421d33d1 Accepting request 70481 from home:fcrozat:branches:GNOME:Factory
- Add yelp-xsl-update-jquery-syntax.patch: Update jquery.syntax to
  3.0 release, which is MIT licensed.  bnc#693971 bgo#650308
- Update License tag to add MIT license.
- Call autoreconf, needed by yelp-xsl-update-jquery-syntax.patch.

OBS-URL: https://build.opensuse.org/request/show/70481
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/yelp-xsl?expand=0&rev=10
2011-05-17 16:19:22 +00:00

2444 lines
114 KiB
Diff

From 80e58d62f9b33c4b57edd8ed486910407293cc77 Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@novell.com>
Date: Mon, 16 May 2011 14:32:12 +0200
Subject: [PATCH 1/2] Update jquery.syntax to 3.0.0 (which is MIT licenced).
---
js/Makefile.am | 10 +-
js/jquery.syntax.brush.apache.js | 18 +-
js/jquery.syntax.brush.applescript.js | 4 +-
js/jquery.syntax.brush.asm.js | 38 ---
js/jquery.syntax.brush.assembly.js | 37 +++
js/jquery.syntax.brush.bash-script.js | 62 +++--
js/jquery.syntax.brush.bash.js | 14 +-
js/jquery.syntax.brush.basic.js | 8 +-
js/jquery.syntax.brush.clang.js | 33 ++-
js/jquery.syntax.brush.csharp.js | 17 +-
js/jquery.syntax.brush.css.js | 21 +-
js/jquery.syntax.brush.diff.js | 12 +-
js/jquery.syntax.brush.haskell.js | 4 +-
js/jquery.syntax.brush.html.js | 54 ++--
js/jquery.syntax.brush.io.js | 45 +++
js/jquery.syntax.brush.java.js | 6 +-
js/jquery.syntax.brush.javascript.js | 13 +-
js/jquery.syntax.brush.kai.js | 29 ++
js/jquery.syntax.brush.lisp.js | 20 +-
js/jquery.syntax.brush.lua.js | 4 +-
js/jquery.syntax.brush.ooc.js | 4 +-
js/jquery.syntax.brush.pascal.js | 4 +-
js/jquery.syntax.brush.perl5.js | 15 +-
js/jquery.syntax.brush.php-script.js | 4 +-
js/jquery.syntax.brush.php.js | 6 +-
js/jquery.syntax.brush.plain.js | 4 +-
js/jquery.syntax.brush.python.js | 4 +-
js/jquery.syntax.brush.ruby.js | 27 ++-
js/jquery.syntax.brush.smalltalk.js | 4 +-
js/jquery.syntax.brush.sql.js | 15 +-
js/jquery.syntax.brush.xml.js | 52 ++++
js/jquery.syntax.brush.yaml.js | 12 +-
js/jquery.syntax.core.js | 496 ++++++++++++++++++++++++++++-----
js/jquery.syntax.js | 119 ++++++--
js/jquery.syntax.layout.fixed.js | 70 +++++
js/jquery.syntax.layout.inline.js | 11 +
js/jquery.syntax.layout.list.js | 54 ++++
js/jquery.syntax.layout.plain.js | 15 +
js/jquery.syntax.layout.table.js | 58 ++++
js/syntax.html | 2 +-
40 files changed, 1136 insertions(+), 289 deletions(-)
delete mode 100644 js/jquery.syntax.brush.asm.js
create mode 100644 js/jquery.syntax.brush.assembly.js
create mode 100644 js/jquery.syntax.brush.io.js
create mode 100644 js/jquery.syntax.brush.kai.js
create mode 100644 js/jquery.syntax.brush.xml.js
create mode 100644 js/jquery.syntax.layout.fixed.js
create mode 100644 js/jquery.syntax.layout.inline.js
create mode 100644 js/jquery.syntax.layout.list.js
create mode 100644 js/jquery.syntax.layout.plain.js
create mode 100644 js/jquery.syntax.layout.table.js
Index: yelp-xsl-3.0.1/js/Makefile.am
===================================================================
--- yelp-xsl-3.0.1.orig/js/Makefile.am
+++ yelp-xsl-3.0.1/js/Makefile.am
@@ -4,7 +4,7 @@ js_DATA = \
jquery.js \
jquery.syntax.brush.apache.js \
jquery.syntax.brush.applescript.js \
- jquery.syntax.brush.asm.js \
+ jquery.syntax.brush.assembly.js \
jquery.syntax.brush.bash.js \
jquery.syntax.brush.bash-script.js \
jquery.syntax.brush.basic.js \
@@ -14,8 +14,10 @@ js_DATA = \
jquery.syntax.brush.diff.js \
jquery.syntax.brush.haskell.js \
jquery.syntax.brush.html.js \
+ jquery.syntax.brush.io.js \
jquery.syntax.brush.java.js \
jquery.syntax.brush.javascript.js \
+ jquery.syntax.brush.kai.js \
jquery.syntax.brush.lisp.js \
jquery.syntax.brush.lua.js \
jquery.syntax.brush.ooc.js \
@@ -28,8 +30,10 @@ js_DATA = \
jquery.syntax.brush.ruby.js \
jquery.syntax.brush.smalltalk.js \
jquery.syntax.brush.sql.js \
+ jquery.syntax.brush.xml.js \
jquery.syntax.brush.yaml.js \
jquery.syntax.core.js \
+ jquery.syntax.layout.yelp.js \
jquery.syntax.js
EXTRA_DIST = $(js_DATA)
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.apache.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.apache.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.apache.js
@@ -1,22 +1,26 @@
// brush: "apache" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('apache', function(brush) {
brush.push({
- pattern: /<(\w+).*?>/gi,
- matches: Syntax.extractMatches({
+ pattern: /(<(\w+).*?>)/gi,
+ matches: Syntax.extractMatches(
+ {
klass: 'tag',
- allow: ['attribute'],
+ allow: ['attribute', 'tag-name', 'string']
+ },
+ {
+ klass: 'tag-name',
process: Syntax.lib.webLinkProcess("site:http://httpd.apache.org/docs/trunk/ directive", true)
})
});
brush.push({
- pattern: /<\/(\w+).*?>/gi,
- matches: Syntax.extractMatches({klass: 'tag', allow: ['attribute']})
+ pattern: /(<\/(\w+).*?>)/gi,
+ matches: Syntax.extractMatches({klass: 'tag', allow: ['tag-name']}, {klass: 'tag-name'})
});
brush.push({
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.applescript.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.applescript.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.applescript.js
@@ -1,7 +1,7 @@
// brush: "applescript" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('applescript', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.asm.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.asm.js
+++ /dev/null
@@ -1,38 +0,0 @@
-// brush: "asm" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('asm', function(brush) {
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
-
- brush.push({
- pattern: /^\s+([a-zA-Z]+)/gm,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push({pattern: /\.[a-zA-Z_][a-zA-Z0-9_]*/gm, klass: 'directive'});
-
- brush.push({pattern: /^[a-zA-Z_][a-zA-Z0-9_]*:/gm, klass: 'label'});
-
- brush.push({pattern: /(-[0-9]+)|(\b[0-9]+)|(\$[0-9]+)/g, klass: 'constant'});
- brush.push({pattern: /(\-|\b|\$)(0x[0-9a-f]+|[0-9]+|[a-z0-9_]+)/gi, klass: 'constant'});
- brush.push({pattern: /$[a-zA-Z_][a-zA-Z0-9_]*:/gm, klass: 'label'});
-
- brush.push({pattern: /%\w+/g, klass: 'register'});
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Comments
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(Syntax.lib.webLink);
-});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.assembly.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.assembly.js
@@ -0,0 +1,37 @@
+// brush: "assembly" aliases: ["asm"]
+
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+Syntax.register('assembly', function(brush) {
+ brush.push(Syntax.lib.cStyleComment);
+ brush.push(Syntax.lib.cppStyleComment);
+
+ brush.push({pattern: /\.[a-zA-Z_][a-zA-Z0-9_]*/gm, klass: 'directive'});
+
+ brush.push({pattern: /^[a-zA-Z_][a-zA-Z0-9_]*:/gm, klass: 'label'});
+
+ brush.push({
+ pattern: /^\s*([a-zA-Z]+)/gm,
+ matches: Syntax.extractMatches({klass: 'function'})
+ });
+
+ brush.push({pattern: /(-[0-9]+)|(\b[0-9]+)|(\$[0-9]+)/g, klass: 'constant'});
+ brush.push({pattern: /(\-|\b|\$)(0x[0-9a-f]+|[0-9]+|[a-z0-9_]+)/gi, klass: 'constant'});
+
+ brush.push({pattern: /%\w+/g, klass: 'register'});
+
+ // Strings
+ brush.push(Syntax.lib.singleQuotedString);
+ brush.push(Syntax.lib.doubleQuotedString);
+ brush.push(Syntax.lib.stringEscape);
+
+ // Numbers
+ brush.push(Syntax.lib.decimalNumber);
+ brush.push(Syntax.lib.hexNumber);
+
+ // Comments
+ brush.push(Syntax.lib.perlStyleComment);
+ brush.push(Syntax.lib.webLink);
+});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.bash-script.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.bash-script.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.bash-script.js
@@ -1,39 +1,67 @@
// brush: "bash-script" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('bash-script', function(brush) {
- var keywords = ["break", "case", "continue", "do", "done", "elif", "else", "eq", "fi", "for", "function", "ge", "gt", "if", "in", "le", "lt", "ne", "return", "then", "until", "while"];
+ var operators = ["&&", "|", ";", "{", "}"];
+ brush.push(operators, {klass: 'operator'});
+ brush.push({
+ pattern: /(?:^|\||;|&&)\s*((?:"([^"]|\\")+"|'([^']|\\')+'|\\\n|.|[ \t])+?)(?=$|\||;|&&)/gmi,
+ matches: Syntax.extractMatches({brush: 'bash-statement'})
+ });
+});
+
+Syntax.register('bash-statement', function(brush) {
+ var keywords = ["break", "case", "continue", "do", "done", "elif", "else", "eq", "fi", "for", "function", "ge", "gt", "if", "in", "le", "lt", "ne", "return", "then", "until", "while"];
brush.push(keywords, {klass: 'keyword'});
- var operators = ["&", "|", ">", "<", "="];
-
+ var operators = [">", "<", "=", "`", "--", "{", "}", "(", ")", "[", "]"];
brush.push(operators, {klass: 'operator'});
- var commands = ["wget", "alias", "apropos", "awk", "basename", "bash", "bc", "bg", "builtin", "bzip2", "cal", "cat", "cd", "cfdisk", "chgrp", "chmod", "chown", "chrootcksum", "clear", "cmp", "comm", "command", "cp", "cron", "crontab", "csplit", "cut", "date", "dc", "dd", "ddrescue", "declare", "df", "diff", "diff3", "dig", "dir", "dircolors", "dirname", "dirs", "du", "echo", "egrep", "eject", "enable", "env", "ethtool", "eval", "exec", "exit", "expand", "export", "expr", "false", "fdformat", "fdisk", "fg", "fgrep", "file", "find", "fmt", "fold", "format", "free", "fsck", "ftp", "gawk", "getopts", "grep", "groups", "gzip", "hash", "head", "history", "hostname", "id", "ifconfig", "import", "install", "join", "kill", "less", "let", "ln", "local", "locate", "logname", "logout", "look", "lpc", "lpr", "lprint", "lprintd", "lprintq", "lprm", "ls", "lsof", "make", "man", "mkdir", "mkfifo", "mkisofs", "mknod", "more", "mount", "mtools", "mv", "netstat", "nice", "nl", "nohup", "nslookup", "op", "open", "passwd", "paste", "pathchk", "ping", "popd", "pr", "printcap", "printenv", "printf", "ps", "pushd", "pwd", "quota", "quotacheck", "quotactl", "ram", "rcp", "read", "readonly", "remsync", "renice", "rm", "rmdir", "rsync", "scp", "screen", "sdiff", "sed", "select", "seq", "set", "sftp", "shift", "shopt", "shutdown", "sleep", "sort", "source", "split", "ssh", "strace", "su", "sudo", "sum", "symlink", "sync", "tail", "tar", "tee", "test", "time", "times", "top", "touch", "tr", "traceroute", "trap", "true", "tsort", "tty", "type", "ulimit", "umask", "umount", "unalias", "uname", "unexpand", "uniq", "units", "unset", "unshar", "useradd", "usermod", "users", "uudecode", "uuencode", "v", "vdir", "vi", "watch", "wc", "whereis", "which", "who", "whoami", "xargs", "yes", "git", "svn", "ruby", "gem", "rails"];
+ brush.push({
+ pattern: /\(\((.*?)\)\)/gmi,
+ klass: 'expression',
+ allow: ['variable', 'string', 'operator', 'constant']
+ });
- var b = "[^\\B\\-\\w\\.]";
- var commandsPattern = "(" + b + ")(" + commands.join("|") + ")(?=" + b + ")";
+ brush.push({
+ pattern: /`([\s\S]+?)`/gmi,
+ matches: Syntax.extractMatches({brush: 'bash-script', debug: true})
+ });
+
+ brush.push(Syntax.lib.perlStyleComment);
+
+ // Probably need to write a real parser here rather than using regular expressions, it is too fragile
+ // and misses lots of edge cases (e.g. nested brackets, delimiters).
+ brush.push({
+ pattern: /^\s*((?:\S+?=\$?(?:\[[^\]]+\]|\(\(.*?\)\)|"(?:[^"]|\\")+"|'(?:[^']|\\')+'|\S+)\s*)*)((?:\S+)?)/gmi,
+ matches: Syntax.extractMatches(
+ {klass: 'env', allow: ['variable', 'string', 'operator', 'constant', 'expression']},
+ {klass: 'function', allow: ['variable', 'string']}
+ )
+ });
brush.push({
- pattern: new RegExp(commandsPattern, "g"),
- matches: Syntax.extractMatches({klass: 'function', index: 2})
+ pattern: /(\S+?)=/gmi,
+ matches: Syntax.extractMatches({klass: 'variable'}),
+ only: ['env']
});
brush.push({
pattern: /\$\w+/g,
klass: 'variable'
- })
+ });
brush.push({pattern: /\s\-+\w+/g, klass: 'option'})
-
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(jQuery.extend(Syntax.lib.singleQuotedString, {allow: '*'}));
- brush.push(jQuery.extend(Syntax.lib.doubleQuotedString, {allow: '*'}));
-
+
+ brush.push(Syntax.lib.singleQuotedString);
+ brush.push(Syntax.lib.doubleQuotedString);
+
+ brush.push(Syntax.lib.decimalNumber);
+ brush.push(Syntax.lib.hexNumber);
+
brush.push(Syntax.lib.webLink);
});
-
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.bash.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.bash.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.bash.js
@@ -1,22 +1,28 @@
// brush: "bash" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.brushes.dependency('bash', 'bash-script');
Syntax.register('bash', function(brush) {
brush.push({
- pattern: /^([\w@:~\s]*?[\$|\#])(.*?)$/gm,
+ pattern: /^([\w@:~ ]*?[\$|\#])\s+(.*?)$/gm,
matches: Syntax.extractMatches({klass: 'prompt'}, {brush: 'bash-script'})
});
brush.push({
- pattern: /\-\- .*$/gm,
+ pattern: /^\-\- .*$/gm,
klass: 'comment',
allow: ['href']
});
+ // Strings
+ brush.push(Syntax.lib.singleQuotedString);
+ brush.push(Syntax.lib.doubleQuotedString);
+ brush.push(Syntax.lib.stringEscape);
+
+ // Numbers
brush.push(Syntax.lib.webLink);
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.basic.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.basic.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.basic.js
@@ -1,17 +1,17 @@
// brush: "basic" aliases: ['vb']
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.lib.vbStyleComment = {pattern: /' .*$/gm, klass: 'comment', allow: ['href']};
Syntax.register('basic', function(brush) {
- var keywords = ["AddHandler", "AddressOf", "Alias", "And", "AndAlso", "Ansi", "As", "Assembly", "Auto", "ByRef", "ByVal", "Call", "Case", "Catch", "Declare", "Default", "Delegate", "Dim", "DirectCast", "Do", "Each", "Else", "ElseIf", "End", "Enum", "Erase", "Error", "Event", "Exit", "Finally", "For", "Function", "Get", "GetType", "GoSub", "GoTo", "Handles", "If", "Implements", "Imports", "In", "Inherits", "Interface", "Is", "Let", "Lib", "Like", "Loop", "Mod", "Module", "MustOverride", "Namespace", "New", "Next", "Not", "On", "Option", "Optional", "Or", "OrElse", "Overloads", "Overridable", "Overrides", "ParamArray", "Preserve", "Property", "RaiseEvent", "ReadOnly", "ReDim", "REM", "RemoveHandler", "Resume", "Return", "Select", "Set", "Static", "Step", "Stop", "Structure", "Sub", "SyncLock", "Then", "Throw", "To", "Try", "TypeOf", "Unicode", "Until", "When", "While", "With", "WithEvents", "WriteOnly", "Xor", "ExternalSource", "Region", "Print"];
+ var keywords = ["AddHandler", "AddressOf", "Alias", "And", "AndAlso", "Ansi", "As", "Assembly", "Auto", "ByRef", "ByVal", "Call", "Case", "Catch", "Declare", "Default", "Delegate", "Dim", "DirectCast", "Do", "Each", "Else", "ElseIf", "End", "Enum", "Erase", "Error", "Event", "Exit", "Finally", "For", "Function", "Get", "GetType", "GoSub", "GoTo", "Handles", "If", "Implements", "Imports", "In", "Inherits", "Interface", "Is", "Let", "Lib", "Like", "Loop", "Mod", "Module", "MustOverride", "Namespace", "New", "Next", "Not", "On", "Option", "Optional", "Or", "OrElse", "Overloads", "Overridable", "Overrides", "ParamArray", "Preserve", "Property", "RaiseEvent", "ReadOnly", "ReDim", "REM", "RemoveHandler", "Resume", "Return", "Select", "Set", "Static", "Step", "Stop", "Structure", "Sub", "SyncLock", "Then", "Throw", "To", "Try", "TypeOf", "Unicode", "Until", "When", "While", "With", "WithEvents", "WriteOnly", "Xor", "ExternalSource", "Region", "Print", "Class"];
var operators = ["-", "&", "&=", "*", "*=", "/", "/=", "\\", "\=", "^", "^=", "+", "+=", "=", "-="];
- var types = ["CBool", "CByte", "CChar", "CDate", "CDec", "CDbl", "Char", "CInt", "Class", "CLng", "CObj", "Const", "CShort", "CSng", "CStr", "CType", "Date", "Decimal", "Variant", "String", "Short", "Long", "Single", "Double", "Object", "Integer", "Boolean", "Byte", "Char"];
+ var types = ["CBool", "CByte", "CChar", "CDate", "CDec", "CDbl", "Char", "CInt", "CLng", "CObj", "Const", "CShort", "CSng", "CStr", "CType", "Date", "Decimal", "Variant", "String", "Short", "Long", "Single", "Double", "Object", "Integer", "Boolean", "Byte", "Char"];
var operators = ["+", "-", "*", "/", "+=", "-=", "*=", "/=", "=", ":=", "==", "!=", "!", "%", "?", ">", "<", ">=", "<=", "&&", "||", "&", "|", "^", ".", "~", "..", ">>", "<<", ">>>", "<<<", ">>=", "<<=", ">>>=", "<<<=", "%=", "^=", "@"];
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.clang.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.clang.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.clang.js
@@ -1,17 +1,17 @@
// brush: "clang" aliases: ["cpp", "c++", "c", "objective-c"]
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('clang', function(brush) {
- var keywords = ["@interface", "@implementation", "@protocol", "@end", "@try", "@throw", "@catch", "@finally", "@class", "@selector", "@encode", "@synchronized", "@property", "struct", "break", "continue", "else", "for", "switch", "case", "default", "enum", "goto", "register", "sizeof", "typedef", "volatile", "do", "extern", "if", "return", "static", "union", "while", "asm", "dynamic_cast", "namespace", "reinterpret_cast", "try", "explicit", "static_cast", "typeid", "catch", "operator", "template", "class", "const_cast", "inline", "throw", "virtual"];
+ var keywords = ["@interface", "@implementation", "@protocol", "@end", "@try", "@throw", "@catch", "@finally", "@class", "@selector", "@encode", "@synchronized", "@property", "@synthesize", "@dynamic", "struct", "break", "continue", "else", "for", "switch", "case", "default", "enum", "goto", "register", "sizeof", "typedef", "volatile", "do", "extern", "if", "return", "static", "union", "while", "asm", "dynamic_cast", "namespace", "reinterpret_cast", "try", "explicit", "static_cast", "typeid", "catch", "operator", "template", "class", "const_cast", "inline", "throw", "virtual", "IBOutlet"];
- var access = ["@private", "@protected", "@public", "private", "protected", "public", "friend", "using"];
+ var access = ["@private", "@protected", "@public", "@required", "@optional", "private", "protected", "public", "friend", "using"];
var types = ["mutable", "auto", "const", "double", "float", "int", "short", "char", "long", "signed", "unsigned", "bool", "void", "typename", "id", "register", "wchar_t"];
- var operators = ["@", "+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">", "[", "]", "new", "delete"];
+ var operators = ["+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">", "[", "]", "new", "delete", "in"];
var values = ["this", "true", "false", "NULL", "YES", "NO", "nil"];
@@ -21,6 +21,27 @@ Syntax.register('clang', function(brush)
brush.push(operators, {klass: 'operator'});
brush.push(access, {klass: 'access'});
+ // Objective-C properties
+ brush.push({
+ pattern: /@property\((.*)\)[^;]+;/gmi,
+ klass: 'objective-c-property',
+ allow: '*'
+ });
+
+ var propertyAttributes = ["getter", "setter", "readwrite", "readonly", "assign", "retain", "copy", "nonatomic"];
+
+ brush.push(propertyAttributes, {
+ klass: 'keyword',
+ only: ['objective-c-property']
+ })
+
+ // Objective-C strings
+
+ brush.push({
+ pattern: /@(?=")/g,
+ klass: 'string'
+ });
+
// Objective-C classes
brush.push(Syntax.lib.camelCaseType);
@@ -43,7 +64,7 @@ Syntax.register('clang', function(brush)
});
brush.push({
- pattern: /-\s*(\(.+?\))?\s*(\w+)\s*\{/g,
+ pattern: /-\s*(\([^\)]+?\))?\s*(\w+)\s*\{/g,
matches: Syntax.extractMatches({index: 2, klass: 'function'})
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.csharp.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.csharp.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.csharp.js
@@ -1,7 +1,7 @@
-// brush: "csharp" aliases: ["c#"]
+// brush: "csharp" aliases: ["c-sharp", "c#"]
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('csharp', function(brush) {
@@ -14,13 +14,20 @@ Syntax.register('csharp', function(brush
var operators = ["+", "-", "*", "/", "%", "&", "|", "^", "!", "~", "&&", "||", "++", "--", "<<", ">>", "==", "!=", "<", ">", "<=", ">=", "=", "?", "new", "as", "is", "sizeof", "typeof", "checked", "unchecked"];
var values = ["this", "true", "false", "null"];
-
+
brush.push(values, {klass: 'constant'});
brush.push(types, {klass: 'type'});
brush.push(keywords, {klass: 'keyword'});
brush.push(operators, {klass: 'operator'});
brush.push(access, {klass: 'access'});
+ // Functions
+ brush.push(Syntax.lib.cStyleFunction);
+ brush.push({
+ pattern: /(?:\.)([a-z_][a-z0-9_]+)/gi,
+ matches: Syntax.extractMatches({klass: 'function'})
+ });
+
// Camel Case Types
brush.push(Syntax.lib.camelCaseType);
@@ -36,7 +43,5 @@ Syntax.register('csharp', function(brush
brush.push(Syntax.lib.decimalNumber);
brush.push(Syntax.lib.hexNumber);
-
- brush.push(Syntax.lib.cStyleFunction);
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.css.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.css.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.css.js
@@ -1,13 +1,22 @@
// brush: "css" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('css', function(brush) {
- var colorNames = ["AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenRod", "DarkGray", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "Darkorange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue", "DarkSlateGray", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "GoldenRod", "Gray", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGrey", "LightGreen", "LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine", "MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen", "#[0-9a-f]{3,6}", "rgba?\\(.+?\\)", "hsla?\\(.+?\\)"];
+ var colorNames = ["AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenRod", "DarkGray", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "Darkorange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue", "DarkSlateGray", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "GoldenRod", "Gray", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGrey", "LightGreen", "LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine", "MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen"];
- var colorMatcher = new RegExp("(" + (colorNames.join(")|(")) + ")", "gi")
+ var colorPatterns = ["#[0-9a-f]{3,6}", "rgba?\\(.+?\\)", "hsla?\\(.+?\\)"];
+
+ var colorMatcher = [].concat(
+ jQuery.map(colorNames, function(pattern) {
+ return "(" + Syntax.Brush.convertStringToTokenPattern(pattern, true) + ")";
+ }),
+ jQuery.map(colorPatterns, function(pattern) {
+ return "(" + Syntax.Brush.convertStringToTokenPattern(pattern, false) + ")";
+ })
+ );
brush.push({
pattern: /\(.*?\)/g,
@@ -21,11 +30,11 @@ Syntax.register('css', function(brush) {
});
brush.push({
- pattern: colorMatcher,
+ pattern: new RegExp(colorMatcher.join("|"), "gi"),
klass: 'color',
process: function (element, match) {
var text = jQuery(element).text();
- var colorBox = jQuery('<span style="font-size: 0.5em; margin: 4px; border: 1px solid black">&nbsp;&nbsp;</span>').css('background-color', text);
+ var colorBox = jQuery('<span class="color-box"><span class="sample" style="background-color: ' + text + '"></span>&nbsp;&nbsp;</span>');
return jQuery(element).append(colorBox);
}
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.diff.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.diff.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.diff.js
@@ -1,7 +1,7 @@
// brush: "diff" aliases: ["patch"]
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('diff', function(brush) {
@@ -12,5 +12,13 @@ Syntax.register('diff', function(brush)
brush.push({pattern: /^\+[^\+]{1}.*$/gm, klass: 'insert'});
brush.push({pattern: /^\-[^\-]{1}.*$/gm, klass: 'remove'});
+
+ brush.postprocess = function (options, html, container) {
+ $('.insert', html).closest('.source').addClass('insert-line');
+ $('.remove', html).closest('.source').addClass('remove-line');
+ $('.offset', html).closest('.source').addClass('offset-line');
+
+ return html;
+ };
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.haskell.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.haskell.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.haskell.js
@@ -1,7 +1,7 @@
// brush: "haskell" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('haskell', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.html.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.html.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.html.js
@@ -1,9 +1,10 @@
-// brush: "html" aliases: ["xml"]
+// brush: "html" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
+Syntax.brushes.dependency('html', 'xml');
Syntax.brushes.dependency('html', 'javascript');
Syntax.brushes.dependency('html', 'css');
Syntax.brushes.dependency('html', 'php-script');
@@ -21,13 +22,23 @@ Syntax.register('html', function(brush)
});
brush.push({
- pattern: /(<\?php)((.|\n)*?)(\?>)/gm,
- matches: Syntax.extractMatches({klass: 'operator'}, {brush: 'php-script'}, null, {klass: 'operator'})
+ pattern: /((<\?php)([\s\S]*?)(\?>))/gm,
+ matches: Syntax.extractMatches(
+ {klass: 'php-tag', allow: ['keyword', 'php-script']},
+ {klass: 'keyword'},
+ {brush: 'php-script'},
+ {klass: 'keyword'}
+ )
});
brush.push({
- pattern: /(<\?rb?)((.|\n)*?)(\?>)/gm,
- matches: Syntax.extractMatches({klass: 'operator'}, {brush: 'ruby'}, null, {klass: 'operator'})
+ pattern: /((<\?rb?)([\s\S]*?)(\?>))/gm,
+ matches: Syntax.extractMatches(
+ {klass: 'ruby-tag', allow: ['keyword', 'ruby']},
+ {klass: 'keyword'},
+ {brush: 'ruby'},
+ {klass: 'keyword'}
+ )
});
brush.push({
@@ -37,36 +48,19 @@ Syntax.register('html', function(brush)
});
brush.push({
- pattern: /<(\!DOCTYPE(.*?))>/g,
+ pattern: /<\!(DOCTYPE(.*?))>/g,
matches: Syntax.extractMatches({klass: 'doctype'})
});
- brush.push({
- pattern: /<\/?((?:[\w]+:)?)([\w]+).*?>/g,
- matches: Syntax.extractMatches({klass: 'namespace', allow: ['attribute']}, {klass: 'tag', allow: ['attribute']})
- });
-
- brush.push({
- pattern: /(\w+)=(".*?"|'.*?'|\S+)/g,
- matches: Syntax.extractMatches({klass: 'attribute'}, {klass: 'string'})
- });
-
- brush.push({
- pattern: /&\w+;/g,
- klass: 'entity'
- });
-
+ // Is this rule still relevant?
brush.push({
pattern: /(%[0-9a-f]{2})/gi,
klass: 'percent-escape',
- only: ['html', 'string']
+ only: ['html']
});
-
- brush.push(Syntax.lib.xmlComment);
-
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.webLink);
+ // The position of this statement is important - it determines at what point the rules of the parent are processed.
+ // In this case, the rules for xml are processed after the rules for html.
+ brush.derives('xml');
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.io.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.io.js
@@ -0,0 +1,45 @@
+// brush: "io" aliases: []
+
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+Syntax.register('io', function(brush) {
+ brush.push(Syntax.lib.cStyleFunction);
+
+ var keywords = ["return"];
+
+ var operators = ["::=", ":=", "or", "and", "@", "+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">", "[", "]", "new", "delete"];
+
+ brush.push(keywords, {klass: 'keywords'});
+ brush.push(operators, {klass: 'operator'});
+
+ // Extract space delimited method invocations
+ brush.push({
+ pattern: /\b([ \t]+([a-z]+))/gi,
+ matches: Syntax.extractMatches({index: 2, klass: 'function'})
+ });
+
+ brush.push({
+ pattern: /\)([ \t]+([a-z]+))/gi,
+ matches: Syntax.extractMatches({index: 2, klass: 'function'})
+ });
+
+ // Objective-C classes
+ brush.push(Syntax.lib.camelCaseType);
+
+ brush.push(Syntax.lib.perlStyleComment);
+ brush.push(Syntax.lib.cStyleComment);
+ brush.push(Syntax.lib.cppStyleComment);
+ brush.push(Syntax.lib.webLink);
+
+ // Strings
+ brush.push(Syntax.lib.singleQuotedString);
+ brush.push(Syntax.lib.doubleQuotedString);
+ brush.push(Syntax.lib.stringEscape);
+
+ // Numbers
+ brush.push(Syntax.lib.decimalNumber);
+ brush.push(Syntax.lib.hexNumber);
+});
+
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.java.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.java.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.java.js
@@ -1,7 +1,7 @@
// brush: "java" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('java', function(brush) {
@@ -13,7 +13,7 @@ Syntax.register('java', function(brush)
var operators = ["++", "--", "++", "--", "+", "-", "~", "!", "*", "/", "%", "+", "-", "<<", ">>", ">>>", "<", ">", "<=", ">=", "==", "!=", "&", "^", "|", "&&", "||", "?", "=", "+=", "-=", "*=", "/=", "%=", "&=", "^=", "|=", "<<=", ">>=", ">>>=", "instanceof", "new", "delete"];
- var constants = ["this", "true", "false"];
+ var constants = ["this", "true", "false", "null"];
brush.push(constants, {klass: 'constant'});
brush.push(types, {klass: 'type'});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.javascript.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.javascript.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.javascript.js
@@ -1,19 +1,22 @@
// brush: "javascript" aliases: ["js", "actionscript"]
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('javascript', function(brush) {
- var keywords = ["break", "case", "catch", "continue", "default", "delete", "do", "else", "for", "if", "in", "instanceof", "new", "return", "super", "switch", "throw", "true", "try", "typeof", "var", "while", "with", "prototype"];
+ var keywords = ["function", "break", "case", "catch", "continue", "default", "delete", "do", "else", "for", "if", "in", "instanceof", "new", "return", "super", "switch", "throw", "true", "try", "typeof", "var", "while", "with", "prototype"];
var operators = ["+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">"];
- var values = ["function", "this", "true", "false", "null"];
-
+ var values = ["this", "true", "false", "null"];
+
brush.push(values, {klass: 'constant'});
brush.push(keywords, {klass: 'keyword'});
brush.push(operators, {klass: 'operator'});
+ // Regular expressions
+ brush.push(Syntax.lib.perlStyleRegularExpressions);
+
// Camel Case Types
brush.push(Syntax.lib.camelCaseType);
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.kai.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.kai.js
@@ -0,0 +1,29 @@
+// brush: "kai" aliases: []
+
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+Syntax.register('kai', function(brush) {
+ brush.push(['(', ')', '[', ']', '{', '}'], {klass: 'operator'});
+
+ brush.push(Syntax.lib.perlStyleComment);
+
+ brush.push(Syntax.lib.decimalNumber);
+ brush.push(Syntax.lib.webLink);
+
+ brush.push({
+ pattern: /\(([^\s\(\)]+)/gi,
+ matches: Syntax.extractMatches({klass: 'function'})
+ });
+
+ brush.push({
+ pattern: /`[a-z]*/gi,
+ klass: 'constant'
+ })
+
+ // Strings
+ brush.push(Syntax.lib.multiLineDoubleQuotedString);
+ brush.push(Syntax.lib.stringEscape);
+});
+
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.lisp.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.lisp.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.lisp.js
@@ -1,7 +1,7 @@
// brush: "lisp" aliases: ['scheme', 'clojure']
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.lib.lispStyleComment = {pattern: /(;+) .*$/gm, klass: 'comment', allow: ['href']};
@@ -13,22 +13,12 @@ Syntax.register('lisp', function(brush)
brush.push(Syntax.lib.lispStyleComment);
- // Hex, Octal and Binary numbers :)
- brush.push({
- pattern: /0x[0-9a-fA-F]+/g,
- klass: 'constant'
- });
-
+ brush.push(Syntax.lib.hexNumber);
brush.push(Syntax.lib.decimalNumber);
brush.push(Syntax.lib.webLink);
brush.push({
- pattern: /\(([^\s\(\)]+)/gi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push({
- pattern: /\(([^\s\(\)]+)/gi,
+ pattern: /\(\s*([^\s\(\)]+)/gmi,
matches: Syntax.extractMatches({klass: 'function'})
});
@@ -38,7 +28,7 @@ Syntax.register('lisp', function(brush)
})
// Strings
- brush.push(Syntax.lib.doubleQuotedString);
+ brush.push(Syntax.lib.multiLineDoubleQuotedString);
brush.push(Syntax.lib.stringEscape);
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.lua.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.lua.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.lua.js
@@ -1,7 +1,7 @@
// brush: "lua" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('lua', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.ooc.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.ooc.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.ooc.js
@@ -1,7 +1,7 @@
// brush: "ooc" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('ooc', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.pascal.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.pascal.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.pascal.js
@@ -1,7 +1,7 @@
// brush: "pascal" aliases: ["delphi"]
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
//
// Constructed using information from http://pascal.comsci.us/etymology/
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.perl5.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.perl5.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.perl5.js
@@ -1,7 +1,7 @@
// brush: "perl5" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('perl5', function(brush) {
@@ -18,6 +18,9 @@ Syntax.register('perl5', function(brush)
brush.push(operators, {klass: 'operator'});
brush.push(builtins, {klass: 'function'});
+ // Regular expressions
+ brush.push(Syntax.lib.perlStyleRegularExpressions);
+
// Comments
brush.push(Syntax.lib.perlStyleComment);
brush.push(Syntax.lib.webLink);
@@ -27,7 +30,13 @@ Syntax.register('perl5', function(brush)
pattern: /(\$|@|%)\w+/gi,
klass: 'variable'
});
-
+
+ // Enddoc
+ brush.push({
+ pattern: /__END__[\s\S]*/gm,
+ klass: 'comment'
+ });
+
// Strings
brush.push(Syntax.lib.singleQuotedString);
brush.push(Syntax.lib.doubleQuotedString);
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.php-script.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.php-script.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.php-script.js
@@ -1,7 +1,7 @@
// brush: "php-script" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('php-script', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.php.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.php.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.php.js
@@ -1,7 +1,7 @@
// brush: "php" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.brushes.dependency('php', 'php-script');
@@ -9,7 +9,7 @@ Syntax.brushes.dependency('php', 'php-sc
Syntax.register('php', function(brush) {
brush.push({
pattern: /(<\?(php)?)((.|\n)*?)(\?>)/gm,
- matches: Syntax.extractMatches({klass: 'operator'}, null, {brush: 'php-script'}, null, {klass: 'operator'})
+ matches: Syntax.extractMatches({klass: 'keyword'}, null, {brush: 'php-script'}, null, {klass: 'keyword'})
})
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.plain.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.plain.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.plain.js
@@ -1,7 +1,7 @@
// brush: "plain" aliases: ["text"]
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('plain', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.python.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.python.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.python.js
@@ -1,7 +1,7 @@
// brush: "python" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('python', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.ruby.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.ruby.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.ruby.js
@@ -1,22 +1,37 @@
// brush: "ruby" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.lib.rubyStyleFunction = {pattern: /(?:def\s+|\.)([a-z_][a-z0-9_]+)/gi, matches: Syntax.extractMatches({klass: 'function'})};
-Syntax.lib.rubyStyleSymbol = {pattern: /:\w+/g, klass: 'constant'};
+
+// We need to emulate negative lookbehind
+Syntax.lib.rubyStyleSymbol = {pattern: /([:]?):\w+/g, klass: 'constant', matches: function (match, expr) {
+ if (match[1] != '') return [];
+
+ return [new Syntax.Match(match.index, match[0].length, expr, match[0])];
+}};
Syntax.register('ruby', function(brush) {
- var keywords = ["alias", "and", "begin", "break", "case", "class", "def", "define_method", "defined", "do", "each", "else", "elsif", "end", "ensure", "false", "for", "if", "in", "module", "new", "next", "nil", "not", "or", "raise", "redo", "rescue", "retry", "return", "self", "super", "then", "throw", "true", "undef", "unless", "until", "when", "while", "yield"];
+ var keywords = ["alias", "and", "begin", "break", "case", "class", "def", "define_method", "defined?", "do", "else", "elsif", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", "raise", "redo", "rescue", "retry", "return", "then", "throw", "undef", "unless", "until", "when", "while", "yield", "block_given?"];
var operators = ["+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">"];
- var values = ["this", "true", "false", "nil"];
+ var values = ["self", "super", "true", "false", "nil"];
- var access = ["private", "public"];
+ var access = ["private", "protected", "public"];
brush.push(access, {klass: 'access'});
brush.push(values, {klass: 'constant'});
+
+ // Percent operator statements
+ brush.push({
+ pattern: /(\%[\S])(\{[\s\S]*?\})/g,
+ matches: Syntax.extractMatches({klass: 'function'}, {klass: 'constant'})
+ });
+
+ // Regular expressions
+ brush.push(Syntax.lib.perlStyleRegularExpressions);
brush.push({pattern: /(@+|\$)[\w]+/g, klass: 'variable'});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.smalltalk.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.smalltalk.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.smalltalk.js
@@ -1,7 +1,7 @@
// brush: "smalltalk" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('smalltalk', function(brush) {
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.sql.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.sql.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.sql.js
@@ -1,13 +1,13 @@
// brush: "sql" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.lib.sqlStyleComment = {pattern: /-- .*$/gm, klass: 'comment', allow: ['href']};
Syntax.register('sql', function(brush) {
- var keywords = ["A", "ABORT", "ABS", "ABSOLUTE", "ACCESS", "ACTION", "ADA", "ADD", "ADMIN", "AFTER", "AGGREGATE", "ALIAS", "ALL", "ALLOCATE", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", "ARE", "ARRAY", "AS", "ASC", "ASENSITIVE", "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "AT", "ATOMIC", "ATTRIBUTE", "ATTRIBUTES", "AUDIT", "AUTHORIZATION", "AUTO_INCREMENT", "AVG", "AVG_ROW_LENGTH", "BACKUP", "BACKWARD", "BEFORE", "BEGIN", "BERNOULLI", "BETWEEN", "BIGINT", "BINARY", "BIT", "BIT_LENGTH", "BITVAR", "BLOB", "BOOL", "BOOLEAN", "BOTH", "BREADTH", "BREAK", "BROWSE", "BULK", "BY", "C", "CACHE", "CALL", "CALLED", "CARDINALITY", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG", "CATALOG_NAME", "CEIL", "CEILING", "CHAIN", "CHANGE", "CHAR", "CHAR_LENGTH", "CHARACTER", "CHARACTER_LENGTH", "CHARACTER_SET_CATALOG", "CHARACTER_SET_NAME", "CHARACTER_SET_SCHEMA", "CHARACTERISTICS", "CHARACTERS", "CHECK", "CHECKED", "CHECKPOINT", "CHECKSUM", "CLASS", "CLASS_ORIGIN", "CLOB", "CLOSE", "CLUSTER", "CLUSTERED", "COALESCE", "COBOL", "COLLATE", "COLLATION", "COLLATION_CATALOG", "COLLATION_NAME", "COLLATION_SCHEMA", "COLLECT", "COLUMN", "COLUMN_NAME", "COLUMNS", "COMMAND_FUNCTION", "COMMAND_FUNCTION_CODE", "COMMENT", "COMMIT", "COMMITTED", "COMPLETION", "COMPRESS", "COMPUTE", "CONDITION", "CONDITION_NUMBER", "CONNECT", "CONNECTION", "CONNECTION_NAME", "CONSTRAINT", "CONSTRAINT_CATALOG", "CONSTRAINT_NAME", "CONSTRAINT_SCHEMA", "CONSTRAINTS", "CONSTRUCTOR", "CONTAINS", "CONTAINSTABLE", "CONTINUE", "CONVERSION", "CONVERT", "COPY", "CORR", "CORRESPONDING", "COUNT", "COVAR_POP", "COVAR_SAMP", "CREATE", "CREATEDB", "CREATEROLE", "CREATEUSER", "CROSS", "CSV", "CUBE", "CUME_DIST", "CURRENT", "CURRENT_DATE", "CURRENT_DEFAULT_TRANSFORM_GROUP", "CURRENT_PATH", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_TRANSFORM_GROUP_FOR_TYPE", "CURRENT_USER", "CURSOR", "CURSOR_NAME", "CYCLE", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", "DATETIME_INTERVAL_CODE", "DATETIME_INTERVAL_PRECISION", "DAY", "DAY_HOUR", "DAY_MICROSECOND", "DAY_MINUTE", "DAY_SECOND", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DBCC", "DEALLOCATE", "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINED", "DEFINER", "DEGREE", "DELAY_KEY_WRITE", "DELAYED", "DELETE", "DELIMITER", "DELIMITERS", "DENSE_RANK", "DENY", "DEPTH", "DEREF", "DERIVED", "DESC", "DESCRIBE", "DESCRIPTOR", "DESTROY", "DESTRUCTOR", "DETERMINISTIC", "DIAGNOSTICS", "DICTIONARY", "DISABLE", "DISCONNECT", "DISK", "DISPATCH", "DISTINCT", "DISTINCTROW", "DISTRIBUTED", "DIV", "DO", "DOMAIN", "DOUBLE", "DROP", "DUAL", "DUMMY", "DUMP", "DYNAMIC", "DYNAMIC_FUNCTION", "DYNAMIC_FUNCTION_CODE", "EACH", "ELEMENT", "ELSE", "ELSEIF", "ENABLE", "ENCLOSED", "ENCODING", "ENCRYPTED", "END", "END-EXEC", "ENUM", "EQUALS", "ERRLVL", "ESCAPE", "ESCAPED", "EVERY", "EXCEPT", "EXCEPTION", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXEC", "EXECUTE", "EXISTING", "EXISTS", "EXIT", "EXP", "EXPLAIN", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", "FIELDS", "FILE", "FILLFACTOR", "FILTER", "FINAL", "FIRST", "FLOAT", "FLOAT4", "FLOAT8", "FLOOR", "FLUSH", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORTRAN", "FORWARD", "FOUND", "FREE", "FREETEXT", "FREETEXTTABLE", "FREEZE", "FROM", "FULL", "FULLTEXT", "FUNCTION", "FUSION", "G", "GENERAL", "GENERATED", "GET", "GLOBAL", "GO", "GOTO", "GRANT", "GRANTED", "GRANTS", "GREATEST", "GROUP", "GROUPING", "HANDLER", "HAVING", "HEADER", "HEAP", "HIERARCHY", "HIGH_PRIORITY", "HOLD", "HOLDLOCK", "HOST", "HOSTS", "HOUR", "HOUR_MICROSECOND", "HOUR_MINUTE", "HOUR_SECOND", "IDENTIFIED", "IDENTITY", "IDENTITY_INSERT", "IDENTITYCOL", "IF", "IGNORE", "ILIKE", "IMMEDIATE", "IMMUTABLE", "IMPLEMENTATION", "IMPLICIT", "IN", "INCLUDE", "INCLUDING", "INCREMENT", "INDEX", "INDICATOR", "INFILE", "INFIX", "INHERIT", "INHERITS", "INITIAL", "INITIALIZE", "INITIALLY", "INNER", "INOUT", "INPUT", "INSENSITIVE", "INSERT", "INSERT_ID", "INSTANCE", "INSTANTIABLE", "INSTEAD", "INT", "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", "INTERSECT", "INTERSECTION", "INTERVAL", "INTO", "INVOKER", "IS", "ISAM", "ISNULL", "ISOLATION", "ITERATE", "JOIN", "K", "KEY", "KEY_MEMBER", "KEY_TYPE", "KEYS", "KILL", "LANCOMPILER", "LANGUAGE", "LARGE", "LAST", "LAST_INSERT_ID", "LATERAL", "LEADING", "LEAST", "LEAVE", "LEFT", "LENGTH", "LESS", "LEVEL", "LIKE", "LIMIT", "LINENO", "LINES", "LISTEN", "LN", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCATION", "LOCATOR", "LOCK", "LOGIN", "LOGS", "LONG", "LONGBLOB", "LONGTEXT", "LOOP", "LOW_PRIORITY", "LOWER", "M", "MAP", "MATCH", "MATCHED", "MAX", "MAX_ROWS", "MAXEXTENTS", "MAXVALUE", "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXT", "MEMBER", "MERGE", "MESSAGE_LENGTH", "MESSAGE_OCTET_LENGTH", "MESSAGE_TEXT", "METHOD", "MIDDLEINT", "MIN", "MIN_ROWS", "MINUS", "MINUTE", "MINUTE_MICROSECOND", "MINUTE_SECOND", "MINVALUE", "MLSLABEL", "MOD", "MODE", "MODIFIES", "MODIFY", "MODULE", "MONTH", "MONTHNAME", "MORE", "MOVE", "MULTISET", "MUMPS", "MYISAM", "NAME", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NCLOB", "NESTING", "NEW", "NEXT", "NO", "NO_WRITE_TO_BINLOG", "NOAUDIT", "NOCHECK", "NOCOMPRESS", "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", "NOLOGIN", "NONCLUSTERED", "NONE", "NORMALIZE", "NORMALIZED", "NOSUPERUSER", "NOT", "NOTHING", "NOTIFY", "NOTNULL", "NOWAIT", "NULL", "NULLABLE", "NULLIF", "NULLS", "NUMBER", "NUMERIC", "OBJECT", "OCTET_LENGTH", "OCTETS", "OF", "OFF", "OFFLINE", "OFFSET", "OFFSETS", "OIDS", "OLD", "ON", "ONLINE", "ONLY", "OPEN", "OPENDATASOURCE", "OPENQUERY", "OPENROWSET", "OPENXML", "OPERATION", "OPERATOR", "OPTIMIZE", "OPTION", "OPTIONALLY", "OPTIONS", "OR", "ORDER", "ORDERING", "ORDINALITY", "OTHERS", "OUT", "OUTER", "OUTFILE", "OUTPUT", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNER", "PACK_KEYS", "PAD", "PARAMETER", "PARAMETER_MODE", "PARAMETER_NAME", "PARAMETER_ORDINAL_POSITION", "PARAMETER_SPECIFIC_CATALOG", "PARAMETER_SPECIFIC_NAME", "PARAMETER_SPECIFIC_SCHEMA", "PARAMETERS", "PARTIAL", "PARTITION", "PASCAL", "PASSWORD", "PATH", "PCTFREE", "PERCENT", "PERCENT_RANK", "PERCENTILE_CONT", "PERCENTILE_DISC", "PLACING", "PLAN", "PLI", "POSITION", "POSTFIX", "POWER", "PRECEDING", "PRECISION", "PREFIX", "PREORDER", "PREPARE", "PREPARED", "PRESERVE", "PRIMARY", "PRINT", "PRIOR", "PRIVILEGES", "PROC", "PROCEDURAL", "PROCEDURE", "PROCESS", "PROCESSLIST", "PUBLIC", "PURGE", "QUOTE", "RAID0", "RAISERROR", "RANGE", "RANK", "RAW", "READ", "READS", "READTEXT", "REAL", "RECHECK", "RECONFIGURE", "RECURSIVE", "REF", "REFERENCES", "REFERENCING", "REGEXP", "REGR_AVGX", "REGR_AVGY", "REGR_COUNT", "REGR_INTERCEPT", "REGR_R2", "REGR_SLOPE", "REGR_SXX", "REGR_SXY", "REGR_SYY", "REINDEX", "RELATIVE", "RELEASE", "RELOAD", "RENAME", "REPEAT", "REPEATABLE", "REPLACE", "REPLICATION", "REQUIRE", "RESET", "RESIGNAL", "RESOURCE", "RESTART", "RESTORE", "RESTRICT", "RESULT", "RETURN", "RETURNED_CARDINALITY", "RETURNED_LENGTH", "RETURNED_OCTET_LENGTH", "RETURNED_SQLSTATE", "RETURNS", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLLBACK", "ROLLUP", "ROUTINE", "ROUTINE_CATALOG", "ROUTINE_NAME", "ROUTINE_SCHEMA", "ROW", "ROW_COUNT", "ROW_NUMBER", "ROWCOUNT", "ROWGUIDCOL", "ROWID", "ROWNUM", "ROWS", "RULE", "SAVE", "SAVEPOINT", "SCALE", "SCHEMA", "SCHEMA_NAME", "SCHEMAS", "SCOPE", "SCOPE_CATALOG", "SCOPE_NAME", "SCOPE_SCHEMA", "SCROLL", "SEARCH", "SECOND", "SECOND_MICROSECOND", "SECTION", "SECURITY", "SELECT", "SELF", "SENSITIVE", "SEPARATOR", "SEQUENCE", "SERIALIZABLE", "SERVER_NAME", "SESSION", "SESSION_USER", "SET", "SETOF", "SETS", "SETUSER", "SHARE", "SHOW", "SHUTDOWN", "SIGNAL", "SIMILAR", "SIMPLE", "SIZE", "SMALLINT", "SOME", "SONAME", "SOURCE", "SPACE", "SPATIAL", "SPECIFIC", "SPECIFIC_NAME", "SPECIFICTYPE", "SQL", "SQL_BIG_RESULT", "SQL_BIG_SELECTS", "SQL_BIG_TABLES", "SQL_CALC_FOUND_ROWS", "SQL_LOG_OFF", "SQL_LOG_UPDATE", "SQL_LOW_PRIORITY_UPDATES", "SQL_SELECT_LIMIT", "SQL_SMALL_RESULT", "SQL_WARNINGS", "SQLCA", "SQLCODE", "SQLERROR", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQRT", "SSL", "STABLE", "START", "STARTING", "STATE", "STATEMENT", "STATIC", "STATISTICS", "STATUS", "STDDEV_POP", "STDDEV_SAMP", "STDIN", "STDOUT", "STORAGE", "STRAIGHT_JOIN", "STRICT", "STRING", "STRUCTURE", "STYLE", "SUBCLASS_ORIGIN", "SUBLIST", "SUBMULTISET", "SUBSTRING", "SUCCESSFUL", "SUM", "SUPERUSER", "SYMMETRIC", "SYNONYM", "SYSDATE", "SYSID", "SYSTEM", "SYSTEM_USER", "TABLE", "TABLE_NAME", "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TERMINATE", "TERMINATED", "TEXT", "TEXTSIZE", "THAN", "THEN", "TIES", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TINYBLOB", "TINYINT", "TINYTEXT", "TO", "TOAST", "TOP", "TOP_LEVEL_COUNT", "TRAILING", "TRAN", "TRANSACTION", "TRANSACTION_ACTIVE", "TRANSACTIONS_COMMITTED", "TRANSACTIONS_ROLLED_BACK", "TRANSFORM", "TRANSFORMS", "TRANSLATE", "TRANSLATION", "TREAT", "TRIGGER", "TRIGGER_CATALOG", "TRIGGER_NAME", "TRIGGER_SCHEMA", "TRIM", "TRUE", "TRUNCATE", "TRUSTED", "TSEQUAL", "TYPE", "UESCAPE", "UID", "UNBOUNDED", "UNCOMMITTED", "UNDER", "UNDO", "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOCK", "UNNAMED", "UNNEST", "UNSIGNED", "UNTIL", "UPDATE", "UPDATETEXT", "UPPER", "USAGE", "USE", "USER", "USER_DEFINED_TYPE_CATALOG", "USER_DEFINED_TYPE_CODE", "USER_DEFINED_TYPE_NAME", "USER_DEFINED_TYPE_SCHEMA", "USING", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VALUE", "VALUES", "VAR_POP", "VAR_SAMP", "VARBINARY", "VARCHAR", "VARCHAR2", "VARCHARACTER", "VARIABLE", "VARIABLES", "VARYING", "VERBOSE", "VIEW", "VOLATILE", "WAITFOR", "WHEN", "WHENEVER", "WHERE", "WHILE", "WIDTH_BUCKET", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRITE", "WRITETEXT", "X509", "XOR", "YEAR", "YEAR_MONTH", "ZEROFILL", "ZONE"];
+ var keywords = ["A", "ABORT", "ABS", "ABSOLUTE", "ACCESS", "ACTION", "ADA", "ADD", "ADMIN", "AFTER", "AGGREGATE", "ALIAS", "ALL", "ALLOCATE", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", "ARE", "ARRAY", "AS", "ASC", "ASENSITIVE", "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "AT", "ATOMIC", "ATTRIBUTE", "ATTRIBUTES", "AUDIT", "AUTHORIZATION", "AUTO_INCREMENT", "AVG", "AVG_ROW_LENGTH", "BACKUP", "BACKWARD", "BEFORE", "BEGIN", "BERNOULLI", "BETWEEN", "BIGINT", "BINARY", "BIT", "BIT_LENGTH", "BITVAR", "BLOB", "BOOL", "BOOLEAN", "BOTH", "BREADTH", "BREAK", "BROWSE", "BULK", "BY", "C", "CACHE", "CALL", "CALLED", "CARDINALITY", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG", "CATALOG_NAME", "CEIL", "CEILING", "CHAIN", "CHANGE", "CHAR", "CHAR_LENGTH", "CHARACTER", "CHARACTER_LENGTH", "CHARACTER_SET_CATALOG", "CHARACTER_SET_NAME", "CHARACTER_SET_SCHEMA", "CHARACTERISTICS", "CHARACTERS", "CHECK", "CHECKED", "CHECKPOINT", "CHECKSUM", "CLASS", "CLASS_ORIGIN", "CLOB", "CLOSE", "CLUSTER", "CLUSTERED", "COALESCE", "COBOL", "COLLATE", "COLLATION", "COLLATION_CATALOG", "COLLATION_NAME", "COLLATION_SCHEMA", "COLLECT", "COLUMN", "COLUMN_NAME", "COLUMNS", "COMMAND_FUNCTION", "COMMAND_FUNCTION_CODE", "COMMENT", "COMMIT", "COMMITTED", "COMPLETION", "COMPRESS", "COMPUTE", "CONDITION", "CONDITION_NUMBER", "CONNECT", "CONNECTION", "CONNECTION_NAME", "CONSTRAINT", "CONSTRAINT_CATALOG", "CONSTRAINT_NAME", "CONSTRAINT_SCHEMA", "CONSTRAINTS", "CONSTRUCTOR", "CONTAINS", "CONTAINSTABLE", "CONTINUE", "CONVERSION", "CONVERT", "COPY", "CORR", "CORRESPONDING", "COUNT", "COVAR_POP", "COVAR_SAMP", "CREATE", "CREATEDB", "CREATEROLE", "CREATEUSER", "CROSS", "CSV", "CUBE", "CUME_DIST", "CURRENT", "CURRENT_DATE", "CURRENT_DEFAULT_TRANSFORM_GROUP", "CURRENT_PATH", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_TRANSFORM_GROUP_FOR_TYPE", "CURRENT_USER", "CURSOR", "CURSOR_NAME", "CYCLE", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", "DATETIME_INTERVAL_CODE", "DATETIME_INTERVAL_PRECISION", "DAY", "DAY_HOUR", "DAY_MICROSECOND", "DAY_MINUTE", "DAY_SECOND", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DBCC", "DEALLOCATE", "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINED", "DEFINER", "DEGREE", "DELAY_KEY_WRITE", "DELAYED", "DELETE", "DELIMITER", "DELIMITERS", "DENSE_RANK", "DENY", "DEPTH", "DEREF", "DERIVED", "DESC", "DESCRIBE", "DESCRIPTOR", "DESTROY", "DESTRUCTOR", "DETERMINISTIC", "DIAGNOSTICS", "DICTIONARY", "DISABLE", "DISCONNECT", "DISK", "DISPATCH", "DISTINCT", "DISTINCTROW", "DISTRIBUTED", "DIV", "DO", "DOMAIN", "DOUBLE", "DROP", "DUAL", "DUMMY", "DUMP", "DYNAMIC", "DYNAMIC_FUNCTION", "DYNAMIC_FUNCTION_CODE", "EACH", "ELEMENT", "ELSE", "ELSEIF", "ENABLE", "ENCLOSED", "ENCODING", "ENCRYPTED", "END", "END-EXEC", "ENUM", "EQUALS", "ERRLVL", "ESCAPE", "ESCAPED", "EVERY", "EXCEPT", "EXCEPTION", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXEC", "EXECUTE", "EXISTING", "EXISTS", "EXIT", "EXP", "EXPLAIN", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", "FIELDS", "FILE", "FILLFACTOR", "FILTER", "FINAL", "FIRST", "FLOAT", "FLOAT4", "FLOAT8", "FLOOR", "FLUSH", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORTRAN", "FORWARD", "FOUND", "FREE", "FREETEXT", "FREETEXTTABLE", "FREEZE", "FROM", "FULL", "FULLTEXT", "FUNCTION", "FUSION", "G", "GENERAL", "GENERATED", "GET", "GLOBAL", "GO", "GOTO", "GRANT", "GRANTED", "GRANTS", "GREATEST", "GROUP", "GROUPING", "HANDLER", "HAVING", "HEADER", "HEAP", "HIERARCHY", "HIGH_PRIORITY", "HOLD", "HOLDLOCK", "HOST", "HOSTS", "HOUR", "HOUR_MICROSECOND", "HOUR_MINUTE", "HOUR_SECOND", "IDENTIFIED", "IDENTITY", "IDENTITY_INSERT", "IDENTITYCOL", "IF", "IGNORE", "ILIKE", "IMMEDIATE", "IMMUTABLE", "IMPLEMENTATION", "IMPLICIT", "IN", "INCLUDE", "INCLUDING", "INCREMENT", "INDEX", "INDICATOR", "INFILE", "INFIX", "INHERIT", "INHERITS", "INITIAL", "INITIALIZE", "INITIALLY", "INNER", "INOUT", "INPUT", "INSENSITIVE", "INSERT", "INSERT_ID", "INSTANCE", "INSTANTIABLE", "INSTEAD", "INT", "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", "INTERSECT", "INTERSECTION", "INTERVAL", "INTO", "INVOKER", "IS", "ISAM", "ISNULL", "ISOLATION", "ITERATE", "JOIN", "K", "KEY", "KEY_MEMBER", "KEY_TYPE", "KEYS", "KILL", "LANCOMPILER", "LANGUAGE", "LARGE", "LAST", "LAST_INSERT_ID", "LATERAL", "LEADING", "LEAST", "LEAVE", "LEFT", "LENGTH", "LESS", "LEVEL", "LIKE", "LIMIT", "LINENO", "LINES", "LISTEN", "LN", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCATION", "LOCATOR", "LOCK", "LOGIN", "LOGS", "LONG", "LONGBLOB", "LONGTEXT", "LOOP", "LOW_PRIORITY", "LOWER", "M", "MAP", "MATCH", "MATCHED", "MAX", "MAX_ROWS", "MAXEXTENTS", "MAXVALUE", "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXT", "MEMBER", "MERGE", "MESSAGE_LENGTH", "MESSAGE_OCTET_LENGTH", "MESSAGE_TEXT", "METHOD", "MIDDLEINT", "MIN", "MIN_ROWS", "MINUS", "MINUTE", "MINUTE_MICROSECOND", "MINUTE_SECOND", "MINVALUE", "MLSLABEL", "MOD", "MODE", "MODIFIES", "MODIFY", "MODULE", "MONTH", "MONTHNAME", "MORE", "MOVE", "MULTISET", "MUMPS", "MYISAM", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NCLOB", "NESTING", "NEW", "NEXT", "NO", "NO_WRITE_TO_BINLOG", "NOAUDIT", "NOCHECK", "NOCOMPRESS", "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", "NOLOGIN", "NONCLUSTERED", "NONE", "NORMALIZE", "NORMALIZED", "NOSUPERUSER", "NOT", "NOTHING", "NOTIFY", "NOTNULL", "NOWAIT", "NULL", "NULLABLE", "NULLIF", "NULLS", "NUMBER", "NUMERIC", "OBJECT", "OCTET_LENGTH", "OCTETS", "OF", "OFF", "OFFLINE", "OFFSET", "OFFSETS", "OIDS", "OLD", "ON", "ONLINE", "ONLY", "OPEN", "OPENDATASOURCE", "OPENQUERY", "OPENROWSET", "OPENXML", "OPERATION", "OPERATOR", "OPTIMIZE", "OPTION", "OPTIONALLY", "OPTIONS", "OR", "ORDER", "ORDERING", "ORDINALITY", "OTHERS", "OUT", "OUTER", "OUTFILE", "OUTPUT", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNER", "PACK_KEYS", "PAD", "PARAMETER", "PARAMETER_MODE", "PARAMETER_NAME", "PARAMETER_ORDINAL_POSITION", "PARAMETER_SPECIFIC_CATALOG", "PARAMETER_SPECIFIC_NAME", "PARAMETER_SPECIFIC_SCHEMA", "PARAMETERS", "PARTIAL", "PARTITION", "PASCAL", "PASSWORD", "PATH", "PCTFREE", "PERCENT", "PERCENT_RANK", "PERCENTILE_CONT", "PERCENTILE_DISC", "PLACING", "PLAN", "PLI", "POSITION", "POSTFIX", "POWER", "PRECEDING", "PRECISION", "PREFIX", "PREORDER", "PREPARE", "PREPARED", "PRESERVE", "PRIMARY", "PRINT", "PRIOR", "PRIVILEGES", "PROC", "PROCEDURAL", "PROCEDURE", "PROCESS", "PROCESSLIST", "PUBLIC", "PURGE", "QUOTE", "RAID0", "RAISERROR", "RANGE", "RANK", "RAW", "READ", "READS", "READTEXT", "REAL", "RECHECK", "RECONFIGURE", "RECURSIVE", "REF", "REFERENCES", "REFERENCING", "REGEXP", "REGR_AVGX", "REGR_AVGY", "REGR_COUNT", "REGR_INTERCEPT", "REGR_R2", "REGR_SLOPE", "REGR_SXX", "REGR_SXY", "REGR_SYY", "REINDEX", "RELATIVE", "RELEASE", "RELOAD", "RENAME", "REPEAT", "REPEATABLE", "REPLACE", "REPLICATION", "REQUIRE", "RESET", "RESIGNAL", "RESOURCE", "RESTART", "RESTORE", "RESTRICT", "RESULT", "RETURN", "RETURNED_CARDINALITY", "RETURNED_LENGTH", "RETURNED_OCTET_LENGTH", "RETURNED_SQLSTATE", "RETURNS", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLLBACK", "ROLLUP", "ROUTINE", "ROUTINE_CATALOG", "ROUTINE_NAME", "ROUTINE_SCHEMA", "ROW", "ROW_COUNT", "ROW_NUMBER", "ROWCOUNT", "ROWGUIDCOL", "ROWID", "ROWNUM", "ROWS", "RULE", "SAVE", "SAVEPOINT", "SCALE", "SCHEMA", "SCHEMA_NAME", "SCHEMAS", "SCOPE", "SCOPE_CATALOG", "SCOPE_NAME", "SCOPE_SCHEMA", "SCROLL", "SEARCH", "SECOND", "SECOND_MICROSECOND", "SECTION", "SECURITY", "SELECT", "SELF", "SENSITIVE", "SEPARATOR", "SEQUENCE", "SERIALIZABLE", "SERVER_NAME", "SESSION", "SESSION_USER", "SET", "SETOF", "SETS", "SETUSER", "SHARE", "SHOW", "SHUTDOWN", "SIGNAL", "SIMILAR", "SIMPLE", "SIZE", "SMALLINT", "SOME", "SONAME", "SOURCE", "SPACE", "SPATIAL", "SPECIFIC", "SPECIFIC_NAME", "SPECIFICTYPE", "SQL", "SQL_BIG_RESULT", "SQL_BIG_SELECTS", "SQL_BIG_TABLES", "SQL_CALC_FOUND_ROWS", "SQL_LOG_OFF", "SQL_LOG_UPDATE", "SQL_LOW_PRIORITY_UPDATES", "SQL_SELECT_LIMIT", "SQL_SMALL_RESULT", "SQL_WARNINGS", "SQLCA", "SQLCODE", "SQLERROR", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQRT", "SSL", "STABLE", "START", "STARTING", "STATE", "STATEMENT", "STATIC", "STATISTICS", "STATUS", "STDDEV_POP", "STDDEV_SAMP", "STDIN", "STDOUT", "STORAGE", "STRAIGHT_JOIN", "STRICT", "STRING", "STRUCTURE", "STYLE", "SUBCLASS_ORIGIN", "SUBLIST", "SUBMULTISET", "SUBSTRING", "SUCCESSFUL", "SUM", "SUPERUSER", "SYMMETRIC", "SYNONYM", "SYSDATE", "SYSID", "SYSTEM", "SYSTEM_USER", "TABLE", "TABLE_NAME", "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TERMINATE", "TERMINATED", "TEXT", "TEXTSIZE", "THAN", "THEN", "TIES", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TINYBLOB", "TINYINT", "TINYTEXT", "TO", "TOAST", "TOP", "TOP_LEVEL_COUNT", "TRAILING", "TRAN", "TRANSACTION", "TRANSACTION_ACTIVE", "TRANSACTIONS_COMMITTED", "TRANSACTIONS_ROLLED_BACK", "TRANSFORM", "TRANSFORMS", "TRANSLATE", "TRANSLATION", "TREAT", "TRIGGER", "TRIGGER_CATALOG", "TRIGGER_NAME", "TRIGGER_SCHEMA", "TRIM", "TRUE", "TRUNCATE", "TRUSTED", "TSEQUAL", "TYPE", "UESCAPE", "UID", "UNBOUNDED", "UNCOMMITTED", "UNDER", "UNDO", "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOCK", "UNNAMED", "UNNEST", "UNSIGNED", "UNTIL", "UPDATE", "UPDATETEXT", "UPPER", "USAGE", "USE", "USER", "USER_DEFINED_TYPE_CATALOG", "USER_DEFINED_TYPE_CODE", "USER_DEFINED_TYPE_NAME", "USER_DEFINED_TYPE_SCHEMA", "USING", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VALUE", "VALUES", "VAR_POP", "VAR_SAMP", "VARBINARY", "VARCHAR", "VARCHAR2", "VARCHARACTER", "VARIABLE", "VARIABLES", "VARYING", "VERBOSE", "VIEW", "VOLATILE", "WAITFOR", "WHEN", "WHENEVER", "WHERE", "WHILE", "WIDTH_BUCKET", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRITE", "WRITETEXT", "X509", "XOR", "YEAR", "YEAR_MONTH", "ZEROFILL", "ZONE"];
var operators = ["=", "!=", "<", ">", "<=", ">=", "+", "-", "*", "/", "%"];
@@ -17,6 +17,15 @@ Syntax.register('sql', function(brush) {
brush.push(keywords, {klass: 'keyword', options: 'gi'});
+ // Strings
+ brush.push(Syntax.lib.singleQuotedString);
+ brush.push(Syntax.lib.doubleQuotedString);
+ brush.push(Syntax.lib.stringEscape);
+
+ // Numbers
+ brush.push(Syntax.lib.decimalNumber);
+ brush.push(Syntax.lib.hexNumber);
+
brush.push(Syntax.lib.webLink);
});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.xml.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.xml.js
@@ -0,0 +1,52 @@
+// brush: "xml" aliases: []
+
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+Syntax.register('xml', function(brush) {
+ brush.push({
+ pattern: /(<!(\[CDATA\[)([\s\S]*?)(\]\])>)/gm,
+ matches: Syntax.extractMatches(
+ {klass: 'cdata', allow: ['cdata-content', 'cdata-tag']},
+ {klass: 'cdata-tag'},
+ {klass: 'cdata-content'},
+ {klass: 'cdata-tag'}
+ )
+ });
+
+ brush.push(Syntax.lib.xmlComment);
+
+ // /[\s\S]/ means match anything... /./ doesn't match newlines
+ brush.push({
+ pattern: /<[^>]+>/g,
+ klass: 'tag',
+ allow: '*'
+ });
+
+ brush.push({
+ pattern: /<\/?((?:[^:\s>]+:)?)([^\s>]+)(\s[^>]*)?\/?>/g,
+ matches: Syntax.extractMatches({klass: 'namespace'}, {klass: 'tag-name'})
+ });
+
+ brush.push({
+ pattern: /([^=\s]+)=(".*?"|'.*?'|[^\s>]+)/g,
+ matches: Syntax.extractMatches({klass: 'attribute', only: ['tag']}, {klass: 'string', only: ['tag']})
+ });
+
+ brush.push({
+ pattern: /&\w+;/g,
+ klass: 'entity'
+ });
+
+ brush.push({
+ pattern: /(%[0-9a-f]{2})/gi,
+ klass: 'percent-escape',
+ only: ['string']
+ });
+
+ brush.push(Syntax.lib.singleQuotedString);
+ brush.push(Syntax.lib.doubleQuotedString);
+
+ brush.push(Syntax.lib.webLink);
+});
Index: yelp-xsl-3.0.1/js/jquery.syntax.brush.yaml.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.brush.yaml.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.brush.yaml.js
@@ -1,16 +1,14 @@
// brush: "yaml" aliases: []
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
Syntax.register('yaml', function(brush) {
brush.push({
- pattern: /^\s*(#.*)$/gm,
- matches: Syntax.extractMatches({
- klass: 'comment',
- allow: ['href']
- })
+ pattern: /^\s*#.*$/gm,
+ klass: 'comment',
+ allow: ['href']
});
brush.push(Syntax.lib.singleQuotedString);
Index: yelp-xsl-3.0.1/js/jquery.syntax.core.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.core.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.core.js
@@ -1,5 +1,5 @@
-// This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-// Copyright 2010 Samuel Williams. All rights reserved.
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
// See <jquery.syntax.js> for licensing details.
if (!RegExp.prototype.indexOf) {
@@ -53,7 +53,41 @@ Syntax.getCDATA = function (elems) {
return cdata.replace(/\r\n?/g, "\n");
}
-Syntax.layouts.plain = function (options, html, container) {
+// Convert to stack based implementation
+Syntax.extractElementMatches = function (elems, offset, tabWidth) {
+ var matches = [], current = [elems];
+ offset = offset || 0;
+ tabWidth = tabWidth || 4;
+
+ (function (elems) {
+ for (var i = 0; elems[i]; i++) {
+ var text = null, elem = elems[i];
+
+ if (elem.nodeType === 3 || elem.nodeType === 4) {
+ offset += elem.nodeValue.length;
+
+ } else if (elem.nodeType === 1) {
+ var text = Syntax.getCDATA(elem.childNodes);
+ var expr = {klass: elem.className, force: true, element: elem};
+
+ matches.push(new Syntax.Match(offset, text.length, expr, text));
+ }
+
+ // Traverse everything, except comment nodes
+ if (elem.nodeType !== 8) {
+ arguments.callee(elem.childNodes, offset);
+ }
+ }
+ })(elems);
+
+ // Remove the top level element, since this will be recreated based on the supplied configuration.
+ // Maybe there is a better way to achieve this?
+ matches.shift();
+
+ return matches;
+}
+
+Syntax.layouts.preformatted = function (options, html, container) {
return html;
};
@@ -62,7 +96,8 @@ Syntax.modeLineOptions = {
};
Syntax.convertTabsToSpaces = function (text, tabSize) {
- var space = [], pattern = /\r|\n|\t/g, tabOffset = 0;
+ var space = [], pattern = /\r|\n|\t/g, tabOffset = 0, offsets = [], totalOffset = 0;
+ tabSize = tabSize || 4
for (var i = ""; i.length <= tabSize; i = i + " ") {
space.push(i);
@@ -76,11 +111,58 @@ Syntax.convertTabsToSpaces = function (t
} else {
var width = tabSize - ((tabOffset + offset) % tabSize);
tabOffset += width - 1;
+
+ // Any match after this offset has been shifted right by totalOffset
+ totalOffset += width - 1
+ offsets.push([offset, width, totalOffset]);
+
return space[width];
}
});
- return text;
+ return {text: text, offsets: offsets};
+};
+
+Syntax.convertToLinearOffsets = function (offsets, length) {
+ var current = 0, changes = [];
+
+ // Anything with offset after offset[current][0] but smaller than offset[current+1][0]
+ // has been shifted right by offset[current][2]
+ for (var i = 0; i < length; i++) {
+ if (offsets[current] && i > offsets[current][0]) {
+ if (offsets[current+1] && i <= offsets[current+1][0]) {
+ changes.push(offsets[current][2]);
+ } else {
+ current += 1;
+ i -= 1;
+ }
+ } else {
+ changes.push(changes[changes.length-1] || 0);
+ }
+ }
+
+ return changes;
+}
+
+Syntax.updateMatchesWithOffsets = function (matches, linearOffsets, text) {
+ (function (matches) {
+ for (var i = 0; i < matches.length; i++) {
+ var match = matches[i];
+
+ // Calculate the new start and end points
+ var offset = match.offset + linearOffsets[match.offset];
+ var end = match.offset + match.length;
+ end += linearOffsets[end];
+
+ // Start, Length, Text
+ match.adjust(linearOffsets[match.offset], end - offset, text);
+
+ if (match.children.length > 0)
+ arguments.callee(match.children);
+ }
+ })(matches);
+
+ return matches;
};
Syntax.extractMatches = function() {
@@ -90,17 +172,19 @@ Syntax.extractMatches = function() {
var matches = [];
for (var i = 0; i < rules.length; i += 1) {
- var rule = rules[i];
+ var rule = rules[i], index = i+1;
if (rule == null) {
continue;
}
- if (rule.debug) {
- alert("'" + match[1] + "' : " + match[1].charCodeAt(0));
+ if (typeof(rule.index) != 'undefined') {
+ index = rule.index;
}
- var index = rule.index || (i+1);
+ if (rule.debug) {
+ Syntax.log("extractMatches", rule, index, match[index], match);
+ }
if (match[index].length > 0) {
if (rule.brush) {
@@ -123,7 +207,10 @@ Syntax.lib.webLinkProcess = function (qu
}
return function (element, match) {
- return jQuery('<a>').attr('href', queryURI + encodeURIComponent(element.text())).append(element);
+ return jQuery('<a>').
+ attr('href', queryURI + encodeURIComponent(element.text())).
+ attr('class', element.attr('class')).
+ append(element.contents());
};
};
@@ -138,14 +225,16 @@ Syntax.lib.cStyleComment = {pattern: /\/
Syntax.lib.cppStyleComment = {pattern: /\/\/.*$/gm, klass: 'comment', allow: ['href']};
Syntax.lib.perlStyleComment = {pattern: /#.*$/gm, klass: 'comment', allow: ['href']};
+Syntax.lib.perlStyleRegularExpressions = {pattern: /\B\/([^\/]|\\\/)*?\/[a-z]*(?=\s*[^\w\s'";\/])/g, klass: 'constant'};
+
Syntax.lib.cStyleFunction = {pattern: /([a-z_][a-z0-9_]*)\s*\(/gi, matches: Syntax.extractMatches({klass: 'function'})};
-Syntax.lib.camelCaseType = {pattern: /\b_*[A-Z_][\w]*\b/g, klass: 'type'};
+Syntax.lib.camelCaseType = {pattern: /\b_*[A-Z][\w]*\b/g, klass: 'type'};
Syntax.lib.xmlComment = {pattern: /(&lt;|<)!--[\s\S]*?--(&gt;|>)/gm, klass: 'comment'};
Syntax.lib.webLink = {pattern: /\w+:\/\/[\w\-.\/?%&=@:;#]*/g, klass: 'href'};
-Syntax.lib.hexNumber = {pattern: /0x[0-9a-fA-F]+/g, klass: 'constant'};
-Syntax.lib.decimalNumber = {pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/g, klass: 'constant'};
+Syntax.lib.hexNumber = {pattern: /\b0x[0-9a-fA-F]+/g, klass: 'constant'};
+Syntax.lib.decimalNumber = {pattern: /\b[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/g, klass: 'constant'};
Syntax.lib.doubleQuotedString = {pattern: /"([^\\"\n]|\\.)*"/g, klass: 'string'};
Syntax.lib.singleQuotedString = {pattern: /'([^\\'\n]|\\.)*'/g, klass: 'string'};
@@ -153,11 +242,11 @@ Syntax.lib.multiLineDoubleQuotedString =
Syntax.lib.multiLineSingleQuotedString = {pattern: /'([^\\']|\\.)*'/g, klass: 'string'};
Syntax.lib.stringEscape = {pattern: /\\./g, klass: 'escape', only: ['string']};
-Syntax.Match = function (offset, length, expr, value) {
+Syntax.Match = function (offset, length, expression, value) {
this.offset = offset;
this.endOffset = offset + length;
this.length = length;
- this.expression = expr;
+ this.expression = expression;
this.value = value;
this.children = [];
this.parent = null;
@@ -166,9 +255,28 @@ Syntax.Match = function (offset, length,
this.next = null;
};
-Syntax.Match.prototype.shift = function (x) {
- this.offset += x;
- this.endOffset += x;
+// Shifts an entire tree forward or backwards.
+Syntax.Match.prototype.shift = function (offset, text) {
+ this.adjust(offset, null, text);
+
+ for (var i = 0; i < this.children.length; i++) {
+ this.children[i].shift(offset, text)
+ }
+};
+
+// C the current match to have different offset and length.
+Syntax.Match.prototype.adjust = function (offset, length, text) {
+ this.offset += offset;
+ this.endOffset += offset;
+
+ if (length) {
+ this.length = length;
+ this.endOffset = this.offset + length;
+ }
+
+ if (text) {
+ this.value = text.substr(this.offset, this.length);
+ }
};
Syntax.Match.sort = function (a,b) {
@@ -203,6 +311,11 @@ Syntax.Match.prototype.reduce = function
for (var i = 0; i < this.children.length; i += 1) {
var child = this.children[i], end = child.offset;
+
+ if (child.offset < this.offset) {
+ Syntax.log("Syntax Warning: Offset of child", child, "is before offset of parent", this);
+ }
+
var text = this.value.substr(start - this.offset, end - start);
append(text, container);
@@ -216,7 +329,7 @@ Syntax.Match.prototype.reduce = function
} else if (start < this.endOffset) {
append(this.value.substr(start - this.offset, this.endOffset - start), container);
} else if (start > this.endOffset) {
- alert("Syntax Warning: Start position " + start + " exceeds end of value " + this.endOffset);
+ Syntax.log("Syntax Warning: Start position " + start + " exceeds end of value " + this.endOffset);
}
if (process) {
@@ -227,6 +340,12 @@ Syntax.Match.prototype.reduce = function
};
Syntax.Match.prototype.canContain = function (match) {
+ // This is a special conditional for explicitly added ranges by the user.
+ // Since user added it, we honour it no matter what.
+ if (match.expression.force) {
+ return true;
+ }
+
// Can't add anything into complete trees.
if (this.complete) {
return false;
@@ -257,19 +376,18 @@ Syntax.Match.prototype.canContain = func
return true;
}
- // else, false.
return false;
};
-Syntax.Match.prototype.canHaveChild = function (match) {
+Syntax.Match.prototype.canHaveChild = function(match) {
var only = match.expression.only;
// This condition is fairly slow
- if (match.expression.only) {
+ if (only) {
var cur = this;
while (cur !== null) {
- if (jQuery.inArray(cur.expression.klass, match.expression.only) !== -1) {
+ if (jQuery.inArray(cur.expression.klass, only) !== -1) {
return true;
}
@@ -291,17 +409,36 @@ Syntax.Match.prototype._splice = functio
if (this.canHaveChild(match)) {
this.children.splice(i, 0, match);
match.parent = this;
+
+ // For matches added using tags.
+ if (!match.expression.owner) {
+ match.expression.owner = this.expression.owner;
+ }
+
return this;
} else {
return null;
}
};
+// This function implements a full insertion procedure, and will break up the match to fit.
+// This operation is potentially very expensive, but is used to insert custom ranges into
+// the tree, if they are specified by the user. A custom <span> may cover multiple leafs in
+// the tree, thus naturally it needs to be broken up.
+// You should avoid using this function except in very specific cases.
+Syntax.Match.prototype.insert = function(match) {
+ if (!this.contains(match))
+ return null;
+
+ return this._insert(match);
+}
+
// This is not a general tree insertion function. It is optimised to run in almost constant
// time, but data must be inserted in sorted order, otherwise you will have problems.
+// This function also ensures that matches won't be broken up unless absolutely necessary.
Syntax.Match.prototype.insertAtEnd = function (match) {
if (!this.contains(match)) {
- alert("Syntax Error: Child is not contained in parent node!");
+ Syntax.log("Syntax Error: Child is not contained in parent node!");
return null;
}
@@ -314,43 +451,150 @@ Syntax.Match.prototype.insertAtEnd = fun
var child = this.children[i];
if (match.offset < child.offset) {
- if (match.endOffset <= child.offset) {
- // displacement = 'before'
- return this._splice(i, match);
+ // Displacement: Before or LHS Overlap
+ // This means that the match has actually occurred before the last child.
+ // This is a bit of an unusual situation because the matches SHOULD be in
+ // sorted order.
+ // However, we are sure that the match is contained in this node. This situation
+ // sometimes occurs when sorting existing branches with matches that are supposed
+ // to be within that branch. When we insert the match into the branch, there are
+ // matches that technically should have been inserted afterwards.
+ // Normal usage should avoid this case, and this is best for performance.
+ if (match.force) {
+ return this._insert(match);
} else {
- // displacement = 'left-overlap'
return null;
}
} else if (match.offset < child.endOffset) {
- if (match.endOffset <= child.endOffset) {
- // displacement = 'contains'
+ if (match.endOffset <= child.endOffset) {
+ // Displacement: Contains
+ //console.log("displacement => contains");
var result = child.insertAtEnd(match);
return result;
} else {
- // displacement = 'right-overlap'
- // If a match overlaps a previous one, we ignore it.
- return null;
+ // Displacement: RHS Overlap
+ if (match.force) {
+ return this._insert(match);
+ } else {
+ return null;
+ }
}
} else {
- // displacement = 'after'
+ // Displacement: After
return this._splice(i+1, match);
}
- // Could not find a suitable placement
+ // Could not find a suitable placement: this is probably an error.
return null;
} else {
+ // Displacement: Contains [but currently no children]
return this._splice(0, match);
}
};
-Syntax.Match.prototype.halfBisect = function(offset) {
- if (offset > this.offset && offset < this.endOffset) {
- return this.bisectAtOffsets([offset, this.endOffset]);
- } else {
- return null;
+// This insertion function is relatively complex because it is required to split the match over
+// several children.
+Syntax.Match.prototype._insert = function(match) {
+ if (this.children.length == 0)
+ return this._splice(0, match);
+
+ for (var i = 0; i < this.children.length; i += 1) {
+ var child = this.children[i];
+
+ // If the match ends before this child, it must be before it.
+ if (match.endOffset <= child.offset)
+ return this._splice(i, match);
+
+ // If the match starts after this child, we continue.
+ if (match.offset >= child.endOffset)
+ continue;
+
+ // There are four possibilities...
+ // ... with the possibility of overlapping children on the RHS.
+ // {------child------} {---possibly some other child---}
+ // |----------complete overlap---------|
+ // |--lhs overlap--|
+ // |--contains--|
+ // |--rhs overlap--|
+
+ // First, the easiest case:
+ if (child.contains(match)) {
+ return child._insert(match);
+ }
+
+ console.log("Bisect at offsets", match, child.offset, child.endOffset);
+ var parts = match.bisectAtOffsets([child.offset, child.endOffset]);
+ console.log("parts =", parts);
+ // We now have at most three parts
+ // {------child------} {---possibly some other child---}
+ // |--[0]--|-------[1]-------|--[2]--|
+
+ // console.log("parts", parts);
+
+ if (parts[0]) {
+ this._splice(i, parts[0])
+ }
+
+ if (parts[1]) {
+ child.insert(parts[1])
+ }
+
+ // Continue insertion at this level with remainder.
+ if (parts[2]) {
+ match = parts[2]
+ } else {
+ return this;
+ }
}
-};
+
+ // If we got this far, the match wasn't [completely] inserted into the list of existing children, so it must be on the end.
+ this._splice(this.children.length, match);
+}
+// This algorithm recursively bisects the tree at a given offset, but it does this efficiently by folding multiple bisections
+// at a time.
+// Splits: / / /
+// Tree: |-------------------------Top-------------------------|
+// |------------A--------------------| |------C-------|
+// |-------B----------|
+// Step (1):
+// Split Top into 4 parts:
+// |------/----------------/-------------------/---------|
+// For each part, check if there are any children that cover this part.
+// If there is a child, recursively call bisect with all splits.
+// Step (1-1):
+// Split A into parts:
+// |------/-----A----------/---------|
+// For each part, check if there are any children that cover this part.
+// If there is a child, recursively call bisect with all splits.
+// Step (1-1-1):
+// Split B into parts:
+// |-------B---/------|
+// No children covered by split. Return array of two parts, B1, B2.
+// Step (1-2):
+// Enumerate the results of splitting the child and merge piece-wise into own parts
+// |------/-----A----------/---------|
+// |------B1---|--B2--|
+// Finished merging children, return array of three parts, A1, A2, A3
+// Step (2):
+// Enumerate the results of splitting the child and merge piece-wise into own parts.
+// |------/----------------/-------------------/---------|
+// |--A1--|-------A2-------|----A3---|
+// |------B1---|--B2--|
+// Continue by splitting next child, C.
+// Once all children have been split and merged, return all parts, T1, T2, T3, T4.
+// The new tree:
+// |--T1--|-------T2-------|--------T3---------|---T4---|
+// |--A1--|-------A2-------|----A3---| |--C1--|---C2--|
+// |------B1---|--B2--|
+//
+// The new structure is as follows:
+// T1 <- A1
+// T2 <- A2 <- B1
+// T3 <- A3 <- B2
+// \- C1
+// T4 <- C2
+//
Syntax.Match.prototype.bisectAtOffsets = function(splits) {
var parts = [], start = this.offset, prev = null, children = jQuery.merge([], this.children);
@@ -364,13 +608,33 @@ Syntax.Match.prototype.bisectAtOffsets =
return a-b;
});
+ // We build a set of top level matches by looking at each split point and
+ // creating a new match from the end of the previous match to the split point.
for (var i = 0; i < splits.length; i += 1) {
var offset = splits[i];
- if (offset < this.offset || offset > this.endOffset || (offset - start) == 0) {
+ // The split offset is past the end of the match, so there are no more possible
+ // splits.
+ if (offset > this.endOffset) {
break;
}
+ // We keep track of null parts if the offset is less than the start
+ // so that things align up as expected with the requested splits.
+ if (
+ offset < this.offset // If the split point is less than the start of the match.
+ || (offset - start) == 0 // If the match would have effectively zero length.
+ ) {
+ parts.push(null); // Preserve alignment with splits.
+ start = offset;
+ continue;
+ }
+
+ // Even if the previous split was out to the left, we align up the start
+ // to be at the start of the match we are bisecting.
+ if (start < this.offset)
+ start = this.offset;
+
var match = new Syntax.Match(start, offset - start, this.expression);
match.value = this.value.substr(start - this.offset, match.length);
@@ -388,6 +652,9 @@ Syntax.Match.prototype.bisectAtOffsets =
splits.length = parts.length;
for (var i = 0; i < parts.length; i += 1) {
+ if (parts[i] == null)
+ continue;
+
var offset = splits[0];
while (children.length > 0) {
@@ -406,6 +673,8 @@ Syntax.Match.prototype.bisectAtOffsets =
// children_parts are the bisected children which need to be merged with parts
// in a linear fashion
for (; j < children_parts.length; j += 1) {
+ if (children_parts[j] == null) continue; // Preserve alignment with splits.
+
parts[i+j].children.push(children_parts[j]);
}
@@ -420,7 +689,7 @@ Syntax.Match.prototype.bisectAtOffsets =
}
if (children.length) {
- alert("Syntax Error: Children nodes not consumed, " + children.length + " remaining!");
+ Syntax.log("Syntax Error: Children nodes not consumed", children.length, " remaining!");
}
return parts;
@@ -433,15 +702,71 @@ Syntax.Match.prototype.split = function(
splits.push(pattern.lastIndex);
}
- return this.bisectAtOffsets(splits);
+ var matches = this.bisectAtOffsets(splits);
+
+ // Remove any null placeholders.
+ return jQuery.grep(matches, function(n,i){
+ return n;
+ });
};
Syntax.Brush = function () {
+ // The primary class of this brush. Must be unique.
this.klass = null;
+
+ // A sequential list of rules for extracting matches.
this.rules = [];
+
+ // A list of all parents that this brush derives from.
+ this.parents = [];
+
+ // A list of processes that may be run after extracting matches.
this.processes = {};
};
+Syntax.Brush.convertStringToTokenPattern = function (pattern, escape) {
+ var prefix = "\\b", postfix = "\\b";
+
+ if (!pattern.match(/^\w/)) {
+ if (!pattern.match(/\w$/)) {
+ prefix = postfix = "";
+ } else {
+ prefix = "\\B";
+ }
+ } else {
+ if (!pattern.match(/\w$/)) {
+ postfix = "\\B";
+ }
+ }
+
+ if (escape)
+ pattern = RegExp.escape(pattern)
+
+ return prefix + pattern + postfix;
+}
+
+// Add a parent to the brush. This brush should be loaded as a dependency.
+Syntax.Brush.prototype.derives = function (name) {
+ this.parents.push(name);
+ this.rules.push({
+ apply: function(text, expr, offset) {
+ return Syntax.brushes[name].getMatches(text, offset);
+ }
+ });
+}
+
+// Return an array of all classes that the brush consists of.
+// A derivied brush is its own klass + the klass of any and all parents.
+Syntax.Brush.prototype.allKlasses = function () {
+ var klasses = [this.klass];
+
+ for (var i = 0; i < this.parents.length; i += 1) {
+ klasses = klasses.concat(Syntax.brushes[this.parents[i]].allKlasses());
+ }
+
+ return klasses;
+}
+
Syntax.Brush.prototype.push = function () {
if (jQuery.isArray(arguments[0])) {
var patterns = arguments[0], rule = arguments[1];
@@ -454,21 +779,7 @@ Syntax.Brush.prototype.push = function (
if (typeof(rule.pattern) === 'string') {
rule.string = rule.pattern;
- var prefix = "\\b", postfix = "\\b";
-
- if (!rule.pattern.match(/^\w/)) {
- if (!rule.pattern.match(/\w$/)) {
- prefix = postfix = "";
- } else {
- prefix = "\\B";
- }
- } else {
- if (!rule.pattern.match(/\w$/)) {
- postfix = "\\B";
- }
- }
-
- rule.pattern = new RegExp(prefix + RegExp.escape(rule.pattern) + postfix, rule.options || 'g');
+ rule.pattern = new RegExp(Syntax.Brush.convertStringToTokenPattern(rule.string, true), rule.options || 'g')
}
if (typeof(XRegExp) !== 'undefined') {
@@ -478,19 +789,30 @@ Syntax.Brush.prototype.push = function (
if (rule.pattern && rule.pattern.global) {
this.rules.push(jQuery.extend({owner: this}, rule));
} else if (typeof(console) != "undefined") {
- console.log("Syntax Error: Malformed rule: ", rule);
+ Syntax.log("Syntax Error: Malformed rule: ", rule);
}
}
};
-Syntax.Brush.prototype.getMatchesForRule = function (text, expr, offset) {
+Syntax.Brush.prototype.getMatchesForRule = function (text, rule, offset) {
var matches = [], match = null;
- while((match = expr.pattern.exec(text)) !== null) {
- if (expr.matches) {
- matches = matches.concat(expr.matches(match, expr));
+ // Short circuit (user defined) function:
+ if (typeof rule.apply != "undefined") {
+ return rule.apply(text, rule, offset);
+ }
+
+ // Duplicate the pattern so that the function is reentrant.
+ var pattern = new RegExp;
+ pattern.compile(rule.pattern);
+
+ while((match = pattern.exec(text)) !== null) {
+ if (rule.matches) {
+ matches = matches.concat(rule.matches(match, rule));
+ } else if (rule.brush) {
+ matches.push(Syntax.brushes[rule.brush].buildTree(match[0], match.index));
} else {
- matches.push(new Syntax.Match(match.index, match[0].length, expr, match[0]));
+ matches.push(new Syntax.Match(match.index, match[0].length, rule, match[0]));
}
}
@@ -500,6 +822,10 @@ Syntax.Brush.prototype.getMatchesForRule
}
}
+ if (rule.debug) {
+ Syntax.log("matches", matches);
+ }
+
return matches;
};
@@ -513,14 +839,15 @@ Syntax.Brush.prototype.getMatches = func
return matches;
};
-Syntax.Brush.prototype.buildTree = function(text, offset) {
+Syntax.Brush.prototype.buildTree = function(text, offset, additionalMatches) {
offset = offset || 0;
// Fixes code that uses \r\n for line endings. /$/ matches both \r\n, which is a problem..
text = text.replace(/\r/g, "");
var matches = this.getMatches(text, offset);
- var top = new Syntax.Match(offset, text.length, {klass: this.klass, allow: '*', owner: this}, text);
+
+ var top = new Syntax.Match(offset, text.length, {klass: this.allKlasses().join(" "), allow: '*', owner: this}, text);
// This sort is absolutely key to the functioning of the tree insertion algorithm.
matches.sort(Syntax.Match.sort);
@@ -529,13 +856,20 @@ Syntax.Brush.prototype.buildTree = funct
top.insertAtEnd(matches[i]);
}
+ if (additionalMatches) {
+ for (var i = 0; i < additionalMatches.length; i += 1) {
+ top.insert(additionalMatches[i], true);
+ }
+ }
+
top.complete = true;
return top;
};
-Syntax.Brush.prototype.process = function(text) {
- var top = this.buildTree(text);
+// Matches is optional, and provides a set of pre-existing matches.
+Syntax.Brush.prototype.process = function(text, matches) {
+ var top = this.buildTree(text, 0, matches);
var lines = top.split(/\n/g);
@@ -568,7 +902,7 @@ Syntax.highlight = function (elements, o
options = {};
}
- options.layout = options.layout || 'plain';
+ options.layout = options.layout || 'preformatted';
if (typeof(options.tabWidth) === 'undefined') {
options.tabWidth = 4;
@@ -577,13 +911,15 @@ Syntax.highlight = function (elements, o
elements.each(function () {
var container = jQuery(this);
+ // We can augment the plain text to extract existing annotations.
+ var matches = Syntax.extractElementMatches(container);
var text = Syntax.getCDATA(container);
-
+
var match = text.match(/-\*- mode: (.+?);(.*?)-\*-/i);
var endOfSecondLine = text.indexOf("\n", text.indexOf("\n") + 1);
if (match && match.index < endOfSecondLine) {
- options.brush = match[1];
+ options.brush = options.brush || match[1];
var modeline = match[2];
var mode = /([a-z\-]+)\:(.*?)\;/gi;
@@ -598,16 +934,24 @@ Syntax.highlight = function (elements, o
}
var brushName = (options.brush || 'plain').toLowerCase();
+
brushName = Syntax.aliases[brushName] || brushName;
Syntax.brushes.get(brushName, function(brush) {
- container.addClass('syntax');
-
if (options.tabWidth) {
- text = Syntax.convertTabsToSpaces(text, options.tabWidth);
+ // Calculate the tab expansion and offsets
+ replacement = Syntax.convertTabsToSpaces(text, options.tabWidth);
+
+ // Update any existing matches
+ if (matches && matches.length) {
+ var linearOffsets = Syntax.convertToLinearOffsets(replacement.offsets, text.length);
+ matches = Syntax.updateMatchesWithOffsets(matches, linearOffsets, replacement.text);
+ }
+
+ text = replacement.text;
}
- var html = brush.process(text);
+ var html = brush.process(text, matches);
if (options.linkify !== false) {
jQuery('span.href', html).each(function(){
Index: yelp-xsl-3.0.1/js/jquery.syntax.js
===================================================================
--- yelp-xsl-3.0.1.orig/js/jquery.syntax.js
+++ yelp-xsl-3.0.1/js/jquery.syntax.js
@@ -1,20 +1,26 @@
/*
- This file is part of the "jQuery.Syntax" project, and is licensed under the GNU AGPLv3.
-
- Copyright 2010 Samuel Williams. All rights reserved.
-
+ This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
For more information, please see http://www.oriontransfer.co.nz/software/jquery-syntax
+
+ Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
- This program is free software: you can redistribute it and/or modify it under the terms
- of the GNU Affero General Public License as published by the Free Software Foundation,
- either version 3 of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License along with this
- program. If not, see <http://www.gnu.org/licenses/>.
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
*/
/*global Function: true, ResourceLoader: true, Syntax: true, alert: false, jQuery: true */
@@ -70,9 +76,12 @@ ResourceLoader.prototype._loaded = funct
}
};
+// This function must ensure that current cannot be completely loaded until next
+// is completely loaded.
ResourceLoader.prototype.dependency = function (current, next) {
- // if it is already loaded, it isn't a dependency
- if (this[next]) {
+ // If the resource has completely loaded, then we don't need to queue it
+ // as a dependency
+ if (this[next] && !this.loading[name]) {
return;
}
@@ -83,11 +92,12 @@ ResourceLoader.prototype.dependency = fu
}
};
+// This function must be reentrant for the same name and different callbacks.
ResourceLoader.prototype.get = function (name, callback) {
- if (this[name]) {
+ if (this.loading[name]) {
+ this.loading[name].push(callback)
+ } else if (this[name]) {
callback(this[name]);
- } else if (this.loading[name]) {
- this.loading[name].push(callback);
} else {
this.loading[name] = [callback];
this.loader(name, this._finish.bind(this, name));
@@ -95,12 +105,13 @@ ResourceLoader.prototype.get = function
};
var Syntax = {
- root: './',
+ root: null,
aliases: {},
styles: {},
lib: {},
defaultOptions: {
- cacheScripts: true
+ cacheScripts: true,
+ cacheStyleSheets: true
},
brushes: new ResourceLoader(function (name, callback) {
@@ -121,6 +132,10 @@ var Syntax = {
var link = jQuery('<link>');
jQuery("head").append(link);
+ if (!Syntax.defaultOptions.cacheStyleSheets) {
+ path = path + "?" + Math.random()
+ }
+
link.attr({
rel: "stylesheet",
type: "text/css",
@@ -129,14 +144,28 @@ var Syntax = {
},
getScript: function (path, callback) {
- jQuery.ajax({
- async: false,
- type: "GET",
- url: path,
- success: callback,
- dataType: "script",
- cache: Syntax.defaultOptions.cacheScripts
- });
+ var script = document.createElement('script');
+
+ // Internet Exploder
+ script.onreadystatechange = function() {
+ if (this.onload && (this.readyState == 'loaded' || this.readyState == 'complete')) {
+ this.onload();
+
+ // Ensure the function is only called once.
+ this.onload = null;
+ }
+ };
+
+ // Every other modern browser
+ script.onload = callback;
+ script.type = "text/javascript";
+
+ if (!Syntax.defaultOptions.cacheScripts)
+ path = path + '?' + Math.random()
+
+ script.src = path;
+
+ document.getElementsByTagName('head')[0].appendChild(script);
},
getResource: function (prefix, name, callback) {
@@ -204,10 +233,40 @@ var Syntax = {
}
return null;
+ },
+
+ detectRoot: function () {
+ if (Syntax.root == null) {
+ // Initialize root based on current script path.
+ var scripts = jQuery('script').filter(function(){
+ return this.src.match(/jquery\.syntax/);
+ });
+
+ var first = scripts.get(0);
+
+ if (first) {
+ // Calculate the basename for the given script src.
+ var root = first.src.match(/.*\//);
+
+ if (root) {
+ Syntax.root = root[0];
+ }
+ }
+ }
+ },
+
+ log: function() {
+ if (console && console.log) {
+ console.log.apply(console, arguments);
+ } else {
+ alert(arguments.join(" "));
+ }
}
};
jQuery.fn.syntax = function (options, callback) {
+ Syntax.detectRoot();
+
var elements = this;
Syntax.loader.get('core', function () {
@@ -221,6 +280,8 @@ jQuery.syntax = function (options, callb
if (options.root) {
Syntax.root = options.root;
+ } else {
+ Syntax.detectRoot();
}
options = jQuery.extend(Syntax.defaultOptions, options)
@@ -231,7 +292,9 @@ jQuery.syntax = function (options, callb
options.blockLayout = options.blockLayout || 'list';
options.inlineLayout = options.inlineLayout || 'inline';
- options.replace = true;
+ // Allow the user to specify callbacks without replacement.
+ if (typeof options.replace == "undefined")
+ options.replace = true;
jQuery(options.blockSelector, context).each(function () {
jQuery(this).syntax(jQuery.extend({}, options, {
Index: yelp-xsl-3.0.1/js/jquery.syntax.layout.fixed.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.layout.fixed.js
@@ -0,0 +1,70 @@
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+// This layout doesn't work correctly in IE6, but is fine in all other tested browsers.
+Syntax.layouts.fixed = function(options, code, container) {
+ var fixed = jQuery('<div class="fixed syntax highlighted">'), line = 1, space = /^\s*$/;
+ var toolbar = jQuery('<div class="toolbar">');
+
+ var rawCode = container.clone();
+ rawCode.addClass("raw syntax highlighted");
+
+ var codeTable = document.createElement('table');
+
+ var codeTableBody = document.createElement('tbody');
+ codeTable.appendChild(codeTableBody);
+
+ var numbersColumn = jQuery('<div class="numbers-column">');
+ var codeColumn = jQuery('<div class="code-column">');
+
+ // Source code
+ code.children().each(function() {
+ var lineNumber = document.createElement('div');
+ lineNumber.className = "line ln" + line
+ lineNumber.innerHTML = line;
+ numbersColumn.append(lineNumber);
+
+ var lineCode = document.createElement('td');
+ lineCode.className = "source " + this.className;
+
+ if (line % 2) {
+ lineCode.className += " alt";
+ }
+
+ if (lineCode == 1) {
+ lineNumber.className += " first"
+ }
+
+ // Thanks to Michael for suggesting the obvious :)
+ lineCode.appendChild(this);
+
+ var tr = document.createElement('tr');
+ tr.appendChild(lineCode);
+ codeTableBody.appendChild(tr);
+
+ line = line + 1;
+ });
+
+ codeColumn.append(codeTable);
+
+ fixed.append(numbersColumn);
+ fixed.append(codeColumn);
+
+ a = jQuery('<a href="#">View Raw Code</a>');
+ a.click(function (event) {
+ event.preventDefault();
+
+ if (jQuery(fixed).is(':visible')) {
+ rawCode.height(jQuery(fixed).height());
+ jQuery(fixed).replaceWith(rawCode);
+ } else {
+ jQuery(rawCode).replaceWith(fixed);
+ }
+ });
+
+ toolbar.append(a);
+ toolbar.append('<a href="http://www.oriontransfer.co.nz/software/jquery-syntax" target="oriontransfer">?</a>');
+
+ return jQuery('<div class="syntax-container">').append(toolbar).append(fixed);
+};
Index: yelp-xsl-3.0.1/js/jquery.syntax.layout.inline.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.layout.inline.js
@@ -0,0 +1,11 @@
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+Syntax.layouts.inline = function(options, code, container) {
+ var inline = jQuery('<code class="syntax highlighted"></code>');
+
+ inline.append(code.children());
+
+ return inline;
+};
Index: yelp-xsl-3.0.1/js/jquery.syntax.layout.list.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.layout.list.js
@@ -0,0 +1,54 @@
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+Syntax.layouts.list = function(options, code, container) {
+ var listTag = options.listTag || 'ol';
+
+ var list = jQuery('<' + listTag + ' class="syntax highlighted">'), line = 1, space = /^\s*$/;
+ var toolbar = jQuery('<div class="toolbar">');
+
+ var rawCode = container.clone();
+ rawCode.addClass("raw syntax highlighted");
+
+ // Source code
+ code.children().each(function() {
+ var li = document.createElement('li');
+ li.className = "line ln" + line
+
+ if (line % 2) {
+ li.className += " alt";
+ }
+
+ if (line == 1) {
+ li.className += " first"
+ }
+
+ var div = document.createElement('div');
+ div.className = "source " + this.className;
+
+ div.appendChild(this);
+
+ li.appendChild(div);
+ list[0].appendChild(li);
+
+ line = line + 1;
+ });
+
+ a = jQuery('<a href="#">View Raw Code</a>');
+ a.click(function (event) {
+ event.preventDefault();
+
+ if (jQuery(list).is(':visible')) {
+ rawCode.height(jQuery(list).height());
+ jQuery(list).replaceWith(rawCode);
+ } else {
+ jQuery(rawCode).replaceWith(list);
+ }
+ });
+
+ toolbar.append(a);
+ toolbar.append('<a href="http://www.oriontransfer.co.nz/software/jquery-syntax" target="oriontransfer">?</a>');
+
+ return jQuery('<div class="syntax-container">').append(toolbar).append(list);
+};
Index: yelp-xsl-3.0.1/js/jquery.syntax.layout.plain.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.layout.plain.js
@@ -0,0 +1,15 @@
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+// This layout doesn't work correctly in IE6, but is fine in all other tested browsers.
+Syntax.layouts.plain = function(options, code, container) {
+ var toolbar = jQuery('<div class="toolbar">');
+
+ var scrollContainer = jQuery('<div class="syntax plain highlighted">');
+ code.removeClass('syntax');
+
+ scrollContainer.append(code);
+
+ return jQuery('<div class="syntax-container">').append(toolbar).append(scrollContainer);
+};
Index: yelp-xsl-3.0.1/js/jquery.syntax.layout.table.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.layout.table.js
@@ -0,0 +1,58 @@
+// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
+// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
+// See <jquery.syntax.js> for licensing details.
+
+Syntax.layouts.table = function(options, code, container) {
+ var table = jQuery('<table class="syntax highlighted"></table>'), tr = null, td = null, a = null, line = 1;
+ var tbody = document.createElement('tbody');
+ var toolbar = jQuery('<div class="toolbar"></div>');
+
+ var rawCode = container.clone();
+ rawCode.addClass("raw syntax highlighted");
+
+ // Source code
+ code.children().each(function() {
+ tr = document.createElement('tr');
+ tr.className = "line ln" + line;
+
+ if (line % 2) {
+ tr.className += " alt";
+ }
+
+ td = document.createElement('td');
+ td.className = "number";
+
+ number = document.createElement('span');
+ number.innerHTML = line;
+ td.appendChild(number);
+ tr.appendChild(td);
+
+ td = document.createElement('td');
+ td.className = "source";
+
+ td.appendChild(this);
+ tr.appendChild(td);
+
+ tbody.appendChild(tr);
+ line = line + 1;
+ });
+
+ table.append(tbody);
+
+ a = jQuery('<a href="#">View Raw Code</a>');
+ a.click(function (event) {
+ event.preventDefault();
+
+ if (jQuery(table).is(':visible')) {
+ rawCode.height(jQuery(table).height());
+ jQuery(table).replaceWith(rawCode);
+ } else {
+ jQuery(rawCode).replaceWith(table);
+ }
+ });
+
+ toolbar.append(a);
+ toolbar.append('<a href="http://www.oriontransfer.co.nz/software/jquery-syntax" target="oriontransfer">?</a>');
+
+ return jQuery('<div class="syntax-container">').append(toolbar).append(table);
+};
Index: yelp-xsl-3.0.1/js/jquery.syntax.layout.yelp.js
===================================================================
--- /dev/null
+++ yelp-xsl-3.0.1/js/jquery.syntax.layout.yelp.js
@@ -0,0 +1,4 @@
+Syntax.layouts.yelp = function(options, code, container) {
+ code.addClass('contents');
+ return code;
+};
Index: yelp-xsl-3.0.1/xslt/common/html.xsl
===================================================================
--- yelp-xsl-3.0.1.orig/xslt/common/html.xsl
+++ yelp-xsl-3.0.1/xslt/common/html.xsl
@@ -1054,8 +1054,6 @@ All parameters can be automatically comp
</xsl:param>
<xsl:if test="$html.syntax.highlight">
<xsl:text>
-pre.syntax {
-}
pre.syntax span.function, pre.syntax span.keyword, pre.syntax span.tag {
color: </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
}
@@ -1464,9 +1462,7 @@ is included by *{html.js.syntax}.
<xsl:if test="$html.syntax.highlight">
<xsl:text><![CDATA[
$(document).ready( function () { jQuery.syntax({root: ']]></xsl:text>
-<xsl:value-of select="$html.js.root"/><xsl:text><![CDATA[', blockLayout: 'plain'},
-function (options, html, container)
-{ html.attr('class', container.attr('class')); return html; }); });
+<xsl:value-of select="$html.js.root"/><xsl:text><![CDATA[', blockLayout: 'yelp'}); });
]]></xsl:text>
</xsl:if>
</xsl:template>