初始化
修改了上一个版本的一些错误,第一次提交
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
/**
|
||||
* Google高亮代码
|
||||
*
|
||||
* @package Google Code Prettify
|
||||
* @author qining
|
||||
* @version 1.0.0
|
||||
* @dependence 9.9.2-*
|
||||
* @link http://typecho.org
|
||||
*/
|
||||
class GoogleCodePrettify_Plugin implements Typecho_Plugin_Interface
|
||||
{
|
||||
/**
|
||||
* 激活插件方法,如果激活失败,直接抛出异常
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @throws Typecho_Plugin_Exception
|
||||
*/
|
||||
public static function activate()
|
||||
{
|
||||
Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('GoogleCodePrettify_Plugin', 'parse');
|
||||
Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('GoogleCodePrettify_Plugin', 'parse');
|
||||
Typecho_Plugin::factory('Widget_Abstract_Comments')->contentEx = array('GoogleCodePrettify_Plugin', 'parse');
|
||||
Typecho_Plugin::factory('Widget_Archive')->header = array('GoogleCodePrettify_Plugin', 'header');
|
||||
Typecho_Plugin::factory('Widget_Archive')->footer = array('GoogleCodePrettify_Plugin', 'footer');
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁用插件方法,如果禁用失败,直接抛出异常
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
* @throws Typecho_Plugin_Exception
|
||||
*/
|
||||
public static function deactivate(){}
|
||||
|
||||
/**
|
||||
* 获取插件配置面板
|
||||
*
|
||||
* @access public
|
||||
* @param Typecho_Widget_Helper_Form $form 配置面板
|
||||
* @return void
|
||||
*/
|
||||
public static function config(Typecho_Widget_Helper_Form $form){}
|
||||
|
||||
/**
|
||||
* 个人用户的配置面板
|
||||
*
|
||||
* @access public
|
||||
* @param Typecho_Widget_Helper_Form $form
|
||||
* @return void
|
||||
*/
|
||||
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
|
||||
|
||||
/**
|
||||
* 输出头部css
|
||||
*
|
||||
* @access public
|
||||
* @param unknown $header
|
||||
* @return unknown
|
||||
*/
|
||||
public static function header() {
|
||||
$cssUrl = Helper::options()->pluginUrl . '/GoogleCodePrettify/src/prettify.css';
|
||||
echo '<link rel="stylesheet" type="text/css" href="' . $cssUrl . '" />';
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出尾部js
|
||||
*
|
||||
* @access public
|
||||
* @param unknown $header
|
||||
* @return unknown
|
||||
*/
|
||||
public static function footer() {
|
||||
$jsUrl = Helper::options()->pluginUrl . '/GoogleCodePrettify/src/prettify.js';
|
||||
echo '<script type="text/javascript" src="'. $jsUrl .'"></script>';
|
||||
echo '<script type="text/javascript">window.onload = function () {
|
||||
prettyPrint();
|
||||
}</script>';
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析
|
||||
*
|
||||
* @access public
|
||||
* @param array $matches 解析值
|
||||
* @return string
|
||||
*/
|
||||
public static function parseCallback($matches)
|
||||
{
|
||||
$language = trim($matches[2]);
|
||||
|
||||
$map = array(
|
||||
'js' => 'javascript',
|
||||
'as' => 'actionscript',
|
||||
'as3' => 'actionscript3'
|
||||
);
|
||||
|
||||
if (!empty($language) && isset($map[$language])) {
|
||||
$language = $map[$language];
|
||||
}
|
||||
|
||||
$source = '<div class="prettyprint-box"><table class="prettyprint-table"><tr>';
|
||||
$numberItem = '<td width="2%" class="number"><table>';
|
||||
$sourceItem = '<td width="98%" class="code"><pre' . (empty($language) ? '' : ' id="' . $language . '"') . ' class="prettyprint"><table>';
|
||||
|
||||
$sourceList = explode("\n", trim($matches[3]));
|
||||
foreach ($sourceList as $key => $sourceLine) {
|
||||
$numberItem .= '<tr><td>' . ($key + 1) . '</td></tr>';
|
||||
$sourceItem .= '<tr><td class="source">' . htmlspecialchars($sourceLine) . '</td></tr>';
|
||||
}
|
||||
|
||||
$numberItem .= '</table></td>';
|
||||
$sourceItem .= '</table></pre></td>';
|
||||
|
||||
return $source . $numberItem . $sourceItem . '</tr></table></div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件实现方法
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function parse($text, $widget, $lastResult)
|
||||
{
|
||||
$text = empty($lastResult) ? $text : $lastResult;
|
||||
|
||||
if ($widget instanceof Widget_Archive || $widget instanceof Widget_Abstract_Comments) {
|
||||
return preg_replace_callback("/<(code|pre)(\s*[^>]*)>(.*?)<\/\\1>/is", array('GoogleCodePrettify_Plugin', 'parseCallback'), $text);
|
||||
} else {
|
||||
return $text;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
// Copyright (C) 2009 Onno Hommes.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for the AGC/AEA Assembly Language as described
|
||||
* at http://virtualagc.googlecode.com
|
||||
* <p>
|
||||
* This file could be used by goodle code to allow syntax highlight for
|
||||
* Virtual AGC SVN repository or if you don't want to commonize
|
||||
* the header for the agc/aea html assembly listing.
|
||||
*
|
||||
* @author ohommes@alumni.cmu.edu
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
// A line comment that starts with ;
|
||||
[PR.PR_COMMENT, /^#[^\r\n]*/, null, '#'],
|
||||
// Whitespace
|
||||
[PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
|
||||
// A double quoted, possibly multi-line, string.
|
||||
[PR.PR_STRING, /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"']
|
||||
],
|
||||
[
|
||||
[PR.PR_KEYWORD, /^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,null],
|
||||
[PR.PR_TYPE, /^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],
|
||||
// A single quote possibly followed by a word that optionally ends with
|
||||
// = ! or ?.
|
||||
[PR.PR_LITERAL,
|
||||
/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],
|
||||
// Any word including labels that optionally ends with = ! or ?.
|
||||
[PR.PR_PLAIN,
|
||||
/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],
|
||||
// A printable non-space non-special character
|
||||
[PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0()\"\\\';]+/]
|
||||
]),
|
||||
['apollo', 'agc', 'aea']);
|
||||
@@ -0,0 +1,78 @@
|
||||
// Copyright (C) 2009 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for CSS.
|
||||
*
|
||||
*
|
||||
* To use, include prettify.js and this file in your HTML page.
|
||||
* Then put your code in an HTML tag like
|
||||
* <pre class="prettyprint lang-css"></pre>
|
||||
*
|
||||
*
|
||||
* http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
|
||||
* grammar. This scheme does not recognize keywords containing escapes.
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
// The space production <s>
|
||||
[PR.PR_PLAIN, /^[ \t\r\n\f]+/, null, ' \t\r\n\f']
|
||||
],
|
||||
[
|
||||
// Quoted strings. <string1> and <string2>
|
||||
[PR.PR_STRING,
|
||||
/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null],
|
||||
[PR.PR_STRING,
|
||||
/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null],
|
||||
['lang-css-str', /^url\(([^\)\"\']*)\)/i],
|
||||
[PR.PR_KEYWORD,
|
||||
/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
|
||||
null],
|
||||
// A property name -- an identifier followed by a colon.
|
||||
['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
|
||||
// A C style block comment. The <comment> production.
|
||||
[PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
|
||||
// Escaping text spans
|
||||
[PR.PR_COMMENT, /^(?:<!--|-->)/],
|
||||
// A number possibly containing a suffix.
|
||||
[PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
|
||||
// A hex color
|
||||
[PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i],
|
||||
// An identifier
|
||||
[PR.PR_PLAIN,
|
||||
/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],
|
||||
// A run of punctuation
|
||||
[PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/]
|
||||
]),
|
||||
['css']);
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer([],
|
||||
[
|
||||
[PR.PR_KEYWORD,
|
||||
/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]
|
||||
]),
|
||||
['css-kw']);
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer([],
|
||||
[
|
||||
[PR.PR_STRING, /^[^\)\"\']+/]
|
||||
]),
|
||||
['css-str']);
|
||||
@@ -0,0 +1,101 @@
|
||||
// Copyright (C) 2009 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for Haskell.
|
||||
*
|
||||
*
|
||||
* To use, include prettify.js and this file in your HTML page.
|
||||
* Then put your code in an HTML tag like
|
||||
* <pre class="prettyprint lang-hs">(my lisp code)</pre>
|
||||
* The lang-cl class identifies the language as common lisp.
|
||||
* This file supports the following language extensions:
|
||||
* lang-cl - Common Lisp
|
||||
* lang-el - Emacs Lisp
|
||||
* lang-lisp - Lisp
|
||||
* lang-scm - Scheme
|
||||
*
|
||||
*
|
||||
* I used http://www.informatik.uni-freiburg.de/~thiemann/haskell/haskell98-report-html/syntax-iso.html
|
||||
* as the basis, but ignore the way the ncomment production nests since this
|
||||
* makes the lexical grammar irregular. It might be possible to support
|
||||
* ncomments using the lookbehind filter.
|
||||
*
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
// Whitespace
|
||||
// whitechar -> newline | vertab | space | tab | uniWhite
|
||||
// newline -> return linefeed | return | linefeed | formfeed
|
||||
[PR.PR_PLAIN, /^[\t\n\x0B\x0C\r ]+/, null, '\t\n\x0B\x0C\r '],
|
||||
// Single line double and single-quoted strings.
|
||||
// char -> ' (graphic<' | \> | space | escape<\&>) '
|
||||
// string -> " {graphic<" | \> | space | escape | gap}"
|
||||
// escape -> \ ( charesc | ascii | decimal | o octal
|
||||
// | x hexadecimal )
|
||||
// charesc -> a | b | f | n | r | t | v | \ | " | ' | &
|
||||
[PR.PR_STRING, /^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,
|
||||
null, '"'],
|
||||
[PR.PR_STRING, /^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,
|
||||
null, "'"],
|
||||
// decimal -> digit{digit}
|
||||
// octal -> octit{octit}
|
||||
// hexadecimal -> hexit{hexit}
|
||||
// integer -> decimal
|
||||
// | 0o octal | 0O octal
|
||||
// | 0x hexadecimal | 0X hexadecimal
|
||||
// float -> decimal . decimal [exponent]
|
||||
// | decimal exponent
|
||||
// exponent -> (e | E) [+ | -] decimal
|
||||
[PR.PR_LITERAL,
|
||||
/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,
|
||||
null, '0123456789']
|
||||
],
|
||||
[
|
||||
// Haskell does not have a regular lexical grammar due to the nested
|
||||
// ncomment.
|
||||
// comment -> dashes [ any<symbol> {any}] newline
|
||||
// ncomment -> opencom ANYseq {ncomment ANYseq}closecom
|
||||
// dashes -> '--' {'-'}
|
||||
// opencom -> '{-'
|
||||
// closecom -> '-}'
|
||||
[PR.PR_COMMENT, /^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],
|
||||
// reservedid -> case | class | data | default | deriving | do
|
||||
// | else | if | import | in | infix | infixl | infixr
|
||||
// | instance | let | module | newtype | of | then
|
||||
// | type | where | _
|
||||
[PR.PR_KEYWORD, /^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, null],
|
||||
// qvarid -> [ modid . ] varid
|
||||
// qconid -> [ modid . ] conid
|
||||
// varid -> (small {small | large | digit | ' })<reservedid>
|
||||
// conid -> large {small | large | digit | ' }
|
||||
// modid -> conid
|
||||
// small -> ascSmall | uniSmall | _
|
||||
// ascSmall -> a | b | ... | z
|
||||
// uniSmall -> any Unicode lowercase letter
|
||||
// large -> ascLarge | uniLarge
|
||||
// ascLarge -> A | B | ... | Z
|
||||
// uniLarge -> any uppercase or titlecase Unicode letter
|
||||
[PR.PR_PLAIN, /^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],
|
||||
// matches the symbol production
|
||||
[PR.PR_PUNCTUATION, /^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]
|
||||
]),
|
||||
['hs']);
|
||||
@@ -0,0 +1,93 @@
|
||||
// Copyright (C) 2008 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for Common Lisp and related languages.
|
||||
*
|
||||
*
|
||||
* To use, include prettify.js and this file in your HTML page.
|
||||
* Then put your code in an HTML tag like
|
||||
* <pre class="prettyprint lang-lisp">(my lisp code)</pre>
|
||||
* The lang-cl class identifies the language as common lisp.
|
||||
* This file supports the following language extensions:
|
||||
* lang-cl - Common Lisp
|
||||
* lang-el - Emacs Lisp
|
||||
* lang-lisp - Lisp
|
||||
* lang-scm - Scheme
|
||||
*
|
||||
*
|
||||
* I used http://www.devincook.com/goldparser/doc/meta-language/grammar-LISP.htm
|
||||
* as the basis, but added line comments that start with ; and changed the atom
|
||||
* production to disallow unquoted semicolons.
|
||||
*
|
||||
* "Name" = 'LISP'
|
||||
* "Author" = 'John McCarthy'
|
||||
* "Version" = 'Minimal'
|
||||
* "About" = 'LISP is an abstract language that organizes ALL'
|
||||
* | 'data around "lists".'
|
||||
*
|
||||
* "Start Symbol" = [s-Expression]
|
||||
*
|
||||
* {Atom Char} = {Printable} - {Whitespace} - [()"\'']
|
||||
*
|
||||
* Atom = ( {Atom Char} | '\'{Printable} )+
|
||||
*
|
||||
* [s-Expression] ::= [Quote] Atom
|
||||
* | [Quote] '(' [Series] ')'
|
||||
* | [Quote] '(' [s-Expression] '.' [s-Expression] ')'
|
||||
*
|
||||
* [Series] ::= [s-Expression] [Series]
|
||||
* |
|
||||
*
|
||||
* [Quote] ::= '' !Quote = do not evaluate
|
||||
* |
|
||||
*
|
||||
*
|
||||
* I used <a href="http://gigamonkeys.com/book/">Practical Common Lisp</a> as
|
||||
* the basis for the reserved word list.
|
||||
*
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
['opn', /^\(/, null, '('],
|
||||
['clo', /^\)/, null, ')'],
|
||||
// A line comment that starts with ;
|
||||
[PR.PR_COMMENT, /^;[^\r\n]*/, null, ';'],
|
||||
// Whitespace
|
||||
[PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
|
||||
// A double quoted, possibly multi-line, string.
|
||||
[PR.PR_STRING, /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"']
|
||||
],
|
||||
[
|
||||
[PR.PR_KEYWORD, /^(?:block|c[ad]+r|catch|cons|defun|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, null],
|
||||
[PR.PR_LITERAL,
|
||||
/^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],
|
||||
// A single quote possibly followed by a word that optionally ends with
|
||||
// = ! or ?.
|
||||
[PR.PR_LITERAL,
|
||||
/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],
|
||||
// A word that optionally ends with = ! or ?.
|
||||
[PR.PR_PLAIN,
|
||||
/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],
|
||||
// A printable non-space non-special character
|
||||
[PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0()\"\\\';]+/]
|
||||
]),
|
||||
['cl', 'el', 'lisp', 'scm']);
|
||||
@@ -0,0 +1,59 @@
|
||||
// Copyright (C) 2008 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for Lua.
|
||||
*
|
||||
*
|
||||
* To use, include prettify.js and this file in your HTML page.
|
||||
* Then put your code in an HTML tag like
|
||||
* <pre class="prettyprint lang-lua">(my Lua code)</pre>
|
||||
*
|
||||
*
|
||||
* I used http://www.lua.org/manual/5.1/manual.html#2.1
|
||||
* Because of the long-bracket concept used in strings and comments, Lua does
|
||||
* not have a regular lexical grammar, but luckily it fits within the space
|
||||
* of irregular grammars supported by javascript regular expressions.
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
// Whitespace
|
||||
[PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
|
||||
// A double or single quoted, possibly multi-line, string.
|
||||
[PR.PR_STRING, /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\'']
|
||||
],
|
||||
[
|
||||
// A comment is either a line comment that starts with two dashes, or
|
||||
// two dashes preceding a long bracketed block.
|
||||
[PR.PR_COMMENT, /^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],
|
||||
// A long bracketed block not preceded by -- is a string.
|
||||
[PR.PR_STRING, /^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],
|
||||
[PR.PR_KEYWORD, /^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/, null],
|
||||
// A number is a hex integer literal, a decimal real literal, or in
|
||||
// scientific notation.
|
||||
[PR.PR_LITERAL,
|
||||
/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
|
||||
// An identifier
|
||||
[PR.PR_PLAIN, /^[a-z_]\w*/i],
|
||||
// A run of punctuation
|
||||
[PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]
|
||||
]),
|
||||
['lua']);
|
||||
@@ -0,0 +1,56 @@
|
||||
// Copyright (C) 2008 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for OCaml, SML, F# and similar languages.
|
||||
*
|
||||
* Based on the lexical grammar at
|
||||
* http://research.microsoft.com/fsharp/manual/spec2.aspx#_Toc202383715
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
// Whitespace is made up of spaces, tabs and newline characters.
|
||||
[PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
|
||||
// #if ident/#else/#endif directives delimit conditional compilation
|
||||
// sections
|
||||
[PR.PR_COMMENT,
|
||||
/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,
|
||||
null, '#'],
|
||||
// A double or single quoted, possibly multi-line, string.
|
||||
// F# allows escaped newlines in strings.
|
||||
[PR.PR_STRING, /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\'']
|
||||
],
|
||||
[
|
||||
// Block comments are delimited by (* and *) and may be
|
||||
// nested. Single-line comments begin with // and extend to
|
||||
// the end of a line.
|
||||
// TODO: (*...*) comments can be nested. This does not handle that.
|
||||
[PR.PR_COMMENT, /^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],
|
||||
[PR.PR_KEYWORD, /^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
|
||||
// A number is a hex integer literal, a decimal real literal, or in
|
||||
// scientific notation.
|
||||
[PR.PR_LITERAL,
|
||||
/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
|
||||
[PR.PR_PLAIN, /^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],
|
||||
// A printable non-space non-special character
|
||||
[PR.PR_PUNCTUATION, /^[^\t\n\r \xA0\"\'\w]+/]
|
||||
]),
|
||||
['fs', 'ml']);
|
||||
@@ -0,0 +1,35 @@
|
||||
// Copyright (C) 2006 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for Protocol Buffers as described at
|
||||
* http://code.google.com/p/protobuf/.
|
||||
*
|
||||
* Based on the lexical grammar at
|
||||
* http://research.microsoft.com/fsharp/manual/spec2.aspx#_Toc202383715
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(PR.sourceDecorator({
|
||||
keywords: (
|
||||
'bool bytes default double enum extend extensions false fixed32 '
|
||||
+ 'fixed64 float group import int32 int64 max message option '
|
||||
+ 'optional package repeated required returns rpc service '
|
||||
+ 'sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 '
|
||||
+ 'uint64'),
|
||||
cStyleComments: true
|
||||
}), ['proto']);
|
||||
@@ -0,0 +1,57 @@
|
||||
// Copyright (C) 2008 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for SQL.
|
||||
*
|
||||
*
|
||||
* To use, include prettify.js and this file in your HTML page.
|
||||
* Then put your code in an HTML tag like
|
||||
* <pre class="prettyprint lang-sql">(my SQL code)</pre>
|
||||
*
|
||||
*
|
||||
* http://savage.net.au/SQL/sql-99.bnf.html is the basis for the grammar, and
|
||||
* http://msdn.microsoft.com/en-us/library/aa238507(SQL.80).aspx as the basis
|
||||
* for the keyword list.
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
// Whitespace
|
||||
[PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
|
||||
// A double or single quoted, possibly multi-line, string.
|
||||
[PR.PR_STRING, /^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/, null,
|
||||
'"\'']
|
||||
],
|
||||
[
|
||||
// A comment is either a line comment that starts with two dashes, or
|
||||
// two dashes preceding a long bracketed block.
|
||||
[PR.PR_COMMENT, /^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],
|
||||
[PR.PR_KEYWORD, /^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i, null],
|
||||
// A number is a hex integer literal, a decimal real literal, or in
|
||||
// scientific notation.
|
||||
[PR.PR_LITERAL,
|
||||
/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
|
||||
// An identifier
|
||||
[PR.PR_PLAIN, /^[a-z_][\w-]*/i],
|
||||
// A run of punctuation
|
||||
[PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]
|
||||
]),
|
||||
['sql']);
|
||||
@@ -0,0 +1,61 @@
|
||||
// Copyright (C) 2009 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* Registers a language handler for various flavors of basic.
|
||||
*
|
||||
*
|
||||
* To use, include prettify.js and this file in your HTML page.
|
||||
* Then put your code in an HTML tag like
|
||||
* <pre class="prettyprint lang-vb"></pre>
|
||||
*
|
||||
*
|
||||
* http://msdn.microsoft.com/en-us/library/aa711638(VS.71).aspx defines the
|
||||
* visual basic grammar lexical grammar.
|
||||
*
|
||||
* @author mikesamuel@gmail.com
|
||||
*/
|
||||
|
||||
PR.registerLangHandler(
|
||||
PR.createSimpleLexer(
|
||||
[
|
||||
// Whitespace
|
||||
[PR.PR_PLAIN, /^[\t\n\r \xA0\u2028\u2029]+/, null, '\t\n\r \xA0\u2028\u2029'],
|
||||
// A double quoted string with quotes escaped by doubling them.
|
||||
// A single character can be suffixed with C.
|
||||
[PR.PR_STRING, /^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i, null,
|
||||
'"\u201C\u201D'],
|
||||
// A comment starts with a single quote and runs until the end of the
|
||||
// line.
|
||||
[PR.PR_COMMENT, /^[\'\u2018\u2019][^\r\n\u2028\u2029]*/, null, '\'\u2018\u2019']
|
||||
],
|
||||
[
|
||||
[PR.PR_KEYWORD, /^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, null],
|
||||
// A second comment form
|
||||
[PR.PR_COMMENT, /^REM[^\r\n\u2028\u2029]*/i],
|
||||
// A boolean, numeric, or date literal.
|
||||
[PR.PR_LITERAL,
|
||||
/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],
|
||||
// An identifier?
|
||||
[PR.PR_PLAIN, /^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],
|
||||
// A run of punctuation
|
||||
[PR.PR_PUNCTUATION,
|
||||
/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],
|
||||
// Square brackets
|
||||
[PR.PR_PUNCTUATION, /^(?:\[|\])/]
|
||||
]),
|
||||
['vb', 'vbs']);
|
||||
@@ -0,0 +1,53 @@
|
||||
// Copyright (C) 2009 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
/**
|
||||
* @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']);
|
||||
@@ -0,0 +1,32 @@
|
||||
/* Pretty printing styles. Used with prettify.js. */
|
||||
|
||||
.str { color: #B1D631; font-style: italic; }
|
||||
.kwd { color: #527AA2; }
|
||||
.com { color: #666; font-style: italic; }
|
||||
.typ { color: #FAF4C6; }
|
||||
.lit { color: #527AA2; }
|
||||
.pun { color: #FF8613; }
|
||||
.pln { color: #FAF4C6; }
|
||||
.tag { color: #527AA2; }
|
||||
.atn { color: #FAF4C6; }
|
||||
.atv { color: #B1D631; }
|
||||
.dec { color: #FAF4C6; }
|
||||
table.prettyprint-table { padding: 2px; border: 1px solid #000; background: #222; color: #eee; font-size: 13px; margin: 0; font: 12px/1.5 'andale mono','lucida console',monospace; }
|
||||
table.prettyprint-table pre, table.prettyprint-table table {margin: 0; background: #222; border: none; font-size: 13px;}
|
||||
pre.prettyprint tr:hover td {background: #333}
|
||||
table.prettyprint-table td.number {color: #666; font-family: "Courier New",Courier,monospace }
|
||||
.prettyprint-box {width: 100%; display: block; overflow-x: auto}
|
||||
table.prettyprint-table td {padding: 2px 4px}
|
||||
|
||||
@media print {
|
||||
.str { color: #060; }
|
||||
.kwd { color: #006; font-weight: bold; }
|
||||
.com { color: #600; font-style: italic; }
|
||||
.typ { color: #404; font-weight: bold; }
|
||||
.lit { color: #044; }
|
||||
.pun { color: #440; }
|
||||
.pln { color: #000; }
|
||||
.tag { color: #006; font-weight: bold; }
|
||||
.atn { color: #404; }
|
||||
.atv { color: #060; }
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user