From 46421d33d125089146108a06de8f2cce01a5c71a310d27281834eb5b059d0d26 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Tue, 17 May 2011 16:19:22 +0000 Subject: [PATCH] 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 --- yelp-xsl-update-jquery-syntax.patch | 2443 +++++++++++++++++++++++++++ yelp-xsl.changes | 8 + yelp-xsl.spec | 7 +- 3 files changed, 2457 insertions(+), 1 deletion(-) create mode 100644 yelp-xsl-update-jquery-syntax.patch diff --git a/yelp-xsl-update-jquery-syntax.patch b/yelp-xsl-update-jquery-syntax.patch new file mode 100644 index 0000000..4bf0f0d --- /dev/null +++ b/yelp-xsl-update-jquery-syntax.patch @@ -0,0 +1,2443 @@ +From 80e58d62f9b33c4b57edd8ed486910407293cc77 Mon Sep 17 00:00:00 2001 +From: Frederic Crozat +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. + // See 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. + // See 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 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. ++// See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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('  ').css('background-color', text); ++ var colorBox = jQuery('  '); + 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. + // See 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. + // See 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. + // See 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. ++// See 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. + // See 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. + // See 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. ++// See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. + // See 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. ++// See for licensing details. ++ ++Syntax.register('xml', function(brush) { ++ brush.push({ ++ pattern: /()/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. + // See 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. + // See 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('').attr('href', queryURI + encodeURIComponent(element.text())).append(element); ++ return jQuery(''). ++ 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: /(<|<)!--[\s\S]*?--(>|>)/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 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. + +- 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 . ++ 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(''); + 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. ++// See 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('
'), line = 1, space = /^\s*$/; ++ var toolbar = jQuery('
'); ++ ++ 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('
'); ++ var codeColumn = jQuery('
'); ++ ++ // 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('View Raw Code'); ++ 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('?'); ++ ++ return jQuery('
').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. ++// See for licensing details. ++ ++Syntax.layouts.inline = function(options, code, container) { ++ var inline = jQuery(''); ++ ++ 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. ++// See 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('
'); ++ ++ 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('View Raw Code'); ++ 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('?'); ++ ++ return jQuery('
').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. ++// See 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('
'); ++ ++ var scrollContainer = jQuery('
'); ++ code.removeClass('syntax'); ++ ++ scrollContainer.append(code); ++ ++ return jQuery('
').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. ++// See for licensing details. ++ ++Syntax.layouts.table = function(options, code, container) { ++ var table = jQuery('
'), tr = null, td = null, a = null, line = 1; ++ var tbody = document.createElement('tbody'); ++ var toolbar = jQuery('
'); ++ ++ 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('View Raw Code'); ++ 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('?'); ++ ++ return jQuery('
').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 + + + +-pre.syntax { +-} + pre.syntax span.function, pre.syntax span.keyword, pre.syntax span.tag { + color: ; + } +@@ -1464,9 +1462,7 @@ is included by *{html.js.syntax}. + + +- + + diff --git a/yelp-xsl.changes b/yelp-xsl.changes index 8584c29..0eea1e2 100644 --- a/yelp-xsl.changes +++ b/yelp-xsl.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Tue May 17 15:23:46 UTC 2011 - fcrozat@suse.com + +- 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. + ------------------------------------------------------------------- Tue Apr 26 14:05:53 UTC 2011 - fcrozat@novell.com diff --git a/yelp-xsl.spec b/yelp-xsl.spec index aa43029..c870811 100644 --- a/yelp-xsl.spec +++ b/yelp-xsl.spec @@ -21,10 +21,12 @@ Name: yelp-xsl Version: 3.0.1 Release: 1 -License: GPLv2+, LGPLv2.1+ +License: GPLv2+, LGPLv2.1+, MIT Summary: XSL stylesheets for the yelp help browser Group: System/Libraries Source: %{name}-%{version}.tar.bz2 +# PATCH-FIX-UPSTREAM yelp-xsl-update-jquery-syntax.patch bnc#693971 bgo#650308 fcrozat@suse.com -- update jquery.syntax to latest version (from git) +Patch0: yelp-xsl-update-jquery-syntax.patch BuildRequires: intltool BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(libxslt) @@ -37,8 +39,11 @@ This package contains XSL stylesheets that are used by the yelp help browser. %lang_package %prep %setup -q +%patch0 -p1 %build +#needed by patch0 +autoreconf %configure %__make %{?_smp_mflags}