* @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); } } ?>