diff options
Diffstat (limited to 'application/libraries/geshi/yaml.php')
-rw-r--r-- | application/libraries/geshi/yaml.php | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/application/libraries/geshi/yaml.php b/application/libraries/geshi/yaml.php new file mode 100644 index 000000000..1b3ce96f2 --- /dev/null +++ b/application/libraries/geshi/yaml.php @@ -0,0 +1,150 @@ +<?php +/************************************************************************************* + * yaml.php + * -------- + * Author: Josh Ventura (JoshV10@gmail.com) + * Copyright: (c) 2010 Josh Ventura + * Release Version: 1.0.8.10 + * Date Started: 2010/12/14 + * + * YAML language file for GeSHi. + * + * YAML gets hairy sometimes. If anything needs fixed, drop me an email and + * I'll probably spit up on it. This is, in general, not a long format. + * + * CHANGES + * --------- + * 2010/12/14 + * - Started project in rage over GML support but not YAML support. WTFH? + * 2010/12/15 + * - Submitted to Ben. + * + * TODO (not updated since release) + * ---------------------------------- + * - Field testing and necessary corrections: this grammar file is usable, but not + * completely accurate. There are, in fact, multiple cases in which it will mess + * up, and some of it may need moved around. It is the most temperamental parser + * I have ever associated my name with. Points of interest follow: + * * Improvised support for | and >: since PHP offers no variable-width lookbehind, + * these blocks will still be highlighted even when commented out. As it happens, + * any line ending with | or > could result in the unintentional highlighting of + * all remaining lines in the file, just because I couldn't check for this regex + * as a lookbehind: '/:(\s+)(!!(\w+)(\s+))?/' + * If there is a workaround for that, it needs implemented. + * * I may be missing some operators. I deliberately omitted inline array notation + * as, in general, it's ugly and tends to conflict with plain-text. Ensuring all + * highlighted list delimiters are not plain text would be as simple as checking + * that they follow a colon directly. Alas, without variable-length lookbehinds, + * if there is a way to do so in GeSHi I am unaware of it. + * * I kind of whored the comment regexp array. It seemed like a safe bet, so it's + * where I crammed everything. Some of it may need moved elsewhere for neatness. + * * The !!typename highlight needs not to interfere with ": |" and ": >": Pairing + * key: !!type | value is perfectly legal, but again due to lookbehind issues, I + * can't add a case for that. Also, it is likely that multiple spaces can be put + * between the colon and pipe symbol, which would also break it. + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'YAML', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array(), + //Keys + 'COMMENT_REGEXP' => array( // ENTRY ZERO SHOULD CHECK FOR (\n(\s*)([^#%]+?):(\s+)(!!(\w+)(\s+))?) AS A LOOKBEHIND, BUT IT CAN'T. + 0 => '/(?<=\s[\|>]\n)(\s+)(.*)((?=[\n$])(([\n^](\1(.*)|(?=[\n$])))*)|$)/', // Pipe blocks and > blocks. + 1 => '/#(.*)/', // Blue # comments + 2 => '/%(.*)/', // Red % comments + 3 => '/(^|\n)([^#%^\n]+?)(?=: )/', // Key-value names + 4 => '/(^|\n)([^#%^\n]+?)(?=:\n)/',// Key-group names + 5 => '/(?<=^---)(\s*)!(\S+)/', // Comments after --- + 6 => '/(?<=: )(\s*)\&(\S+)/', // References + 7 => '/(?<=: )(\s*)\*(\S+)/', // Dereferences + 8 => '/!!(\w+)/', // Types + //9 => '/(?<=\n)(\s*)-(?!-)/', // List items: This needs to search within comments 3 and 4, but I don't know how. + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'all','any','none', "yes", "no" + ), + ), + 'SYMBOLS' => array( + 1 => array('---', '...'), + 2 => array(': ', ">\n", "|\n", '<<:', ":\n") // It'd be nice if I could specify that the colon must + // follow comment 3 or 4 to be considered, and the > and | + // must follow such a colon. + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'font-weight: bold;' + ), + 'COMMENTS' => array( + 0 => 'color: #303050;background-color: #F5F5F5', + 1 => 'color: blue;', + 2 => 'font-weight: bold; color: red;', + 3 => 'color: green;', + 4 => 'color: #007F45;', + 5 => 'color: #7f7fFF;', + 6 => 'color: #FF7000;', + 7 => 'color: #FF45C0;', + 8 => 'font-weight: bold; color: #005F5F;', + //9 => 'font-weight: bold; color: #000000;', + ), + 'ESCAPE_CHAR' => array( + ), + 'BRACKETS' => array( + ), + 'STRINGS' => array( + 0 => 'color: #CF00CF;' + ), + 'NUMBERS' => array( + // 0 => 'color: #33f;' // Don't highlight numbers, really... + ), + 'METHODS' => array( + 1 => '', + 2 => '' + ), + 'SYMBOLS' => array( + 1 => 'color: cyan;', + 2 => 'font-weight: bold; color: brown;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '' + ) + ), + 'URLS' => array(1 => ''), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( ), + 'REGEXPS' => array( ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( ), + 'HIGHLIGHT_STRICT_BLOCK' => array( ) +); + +?>
\ No newline at end of file |