From 48d7424647b146a66c5bde93ee836919933a4150 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Fri, 11 Dec 2009 01:16:01 +0100 Subject: added geshi syntax highlighter --- .../javascript/class.javascriptkeywordgetter.php | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 paste/include/geshi/scripts/get-keywords/languages/javascript/class.javascriptkeywordgetter.php (limited to 'paste/include/geshi/scripts/get-keywords/languages/javascript/class.javascriptkeywordgetter.php') diff --git a/paste/include/geshi/scripts/get-keywords/languages/javascript/class.javascriptkeywordgetter.php b/paste/include/geshi/scripts/get-keywords/languages/javascript/class.javascriptkeywordgetter.php new file mode 100644 index 0000000..b25c26e --- /dev/null +++ b/paste/include/geshi/scripts/get-keywords/languages/javascript/class.javascriptkeywordgetter.php @@ -0,0 +1,121 @@ + + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL + * @copyright (C) 2005 Nigel McNie + * @version 1.1.0 + * + */ + +/** Get the Javascript XML parser used for getting Javascript keywords */ +require_once 'class.javascriptxmlparser.php'; + +/** + * Implementation of KeywordGetterStrategy for the Javascript language. + * + * @package scripts + * @author Nigel McNie + * @since 0.1.1 + * @version 1.1.0 + * @see KeywordGetterStrategy + */ +class javascriptKeywordGetterStrategy extends KeywordGetterStrategy +{ + + /** + * Extra keywords missed by the language file + * + * @var array + * @access private + */ + var $_missedKeywords = array( + 'keywords' => array( + 'null' + ), + 'methods' => array( + 'getElementById' + ) + ); + + /** + * Creates a new Javascript Keyword Getter Strategy. Defines allowed + * keyword groups for Javascript. + */ + function javascriptKeywordGetterStrategy () + { + $this->_language = 'Javascript'; + $this->_validKeywordGroups = array( + 'keywords', 'functions', 'objects', 'math', 'events', 'methods' + ); + } + + /** + * Implementation of abstract method {@link KeywordGetterStrategy::getKeywords()} + * to get keywords for Javascript + * + * @param string The keyword group to get keywords for. If not a valid keyword + * group an error is returned + * @return array The keywords for Javascript for the specified keyword group + * @throws KeywordGetterError + */ + function getKeywords ($keyword_group) + { + // Check that keyword group listed is valid + $group_valid = $this->keywordGroupIsValid($keyword_group); + if (KeywordGetter::isError($group_valid)) { + return $group_valid; + } + + $xml_parser =& new Javascript_XML_Parser; + $xml_parser->setKeywordGroup($keyword_group); + + // Set the file to parse to Nigel's local Javascript syntax file. + $result =& $xml_parser->setInputFile('/usr/share/apps/katepart/syntax/javascript.xml'); + if (PEAR::isError($result)) { + return new KeywordGetterError(FILE_UNAVAILABLE, $this->_language, + array('{FILENAME}' => '/usr/share/apps/katepart/syntax/javascript.xml')); + } + + $result =& $xml_parser->parse(); + if (PEAR::isError($result)) { + return new KeywordGetterError(PARSE_ERROR, $this->_language, + array('{PARSE_ERROR}' => $result->getMessage())); + } + + $keywords =& $xml_parser->getKeywords(); + //@todo [blocking 1.1.1] move missedkeywords functionality into common place + // as well as unique and sorts + if (isset($this->_missedKeywords[$keyword_group])) { + $keywords = array_merge($keywords, $this->_missedKeywords[$keyword_group]); + } + sort($keywords); + return array_unique($keywords); + } +} + +?> -- cgit v1.2.3