/** | |
* @fileoverview | |
* Registers a language handler for Wiki pages. | |
* | |
* Based on WikiSyntax at http://code.google.com/p/support/wiki/WikiSyntax | |
* | |
* @author mikesamuel@gmail.com | |
*/ | |
PR.registerLangHandler( | |
PR.createSimpleLexer( | |
[ | |
// Whitespace | |
[PR.PR_PLAIN, /^[\t \xA0a-gi-z0-9]+/, null, | |
'\t \xA0abcdefgijklmnopqrstuvwxyz0123456789'], | |
// Wiki formatting | |
[PR.PR_PUNCTUATION, /^[=*~\^\[\]]+/, null, '=*~^[]'] | |
], | |
[ | |
// Meta-info like #summary, #labels, etc. | |
['lang-wiki.meta', /(?:^^|\r\n?|\n)(#[a-z]+)\b/], | |
// A WikiWord | |
[PR.PR_LITERAL, /^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/ | |
], | |
// A preformatted block in an unknown language | |
['lang-', /^\{\{\{([\s\S]+?)\}\}\}/], | |
// A block of source code in an unknown language | |
['lang-', /^`([^\r\n`]+)`/], | |
// An inline URL. | |
[PR.PR_STRING, | |
/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i], | |
[PR.PR_PLAIN, /^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/] | |
]), | |
['wiki']); | |
PR.registerLangHandler( | |
PR.createSimpleLexer([[PR.PR_KEYWORD, /^#[a-z]+/i, null, '#']], []), | |
['wiki.meta']); |