* @license http://www.gnu.org/copyleft/gpl.html GNU GPL * @copyright (C) 2005 Nigel McNie * @version 1.1.0 * */ /** Get the CSS XML parser used for getting CSS keywords */ require_once 'class.cssxmlparser.php'; /** * Implementation of KeywordGetterStrategy for the CSS language. * * @package scripts * @author Nigel McNie * @since 0.1.0 * @version 1.1.0 * @see KeywordGetterStrategy */ class cssKeywordGetterStrategy extends KeywordGetterStrategy { /** * Creates a new CSS Keyword Getter Strategy. Defines allowed * keyword groups for CSS. */ function cssKeywordGetterStrategy () { $this->_language = 'CSS'; $this->_validKeywordGroups = array( 'properties', 'types', 'colors', 'paren', 'mediatypes', 'pseudoclasses' ); } /** * Implementation of abstract method {@link KeywordGetterStrategy::getKeywords()} * to get keywords for CSS * * @param string The keyword group to get keywords for. If not a valid keyword * group an error is returned * @return array The keywords for CSS 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 CSS_XML_Parser; $xml_parser->setKeywordGroup($keyword_group); // Set the file to parse to Nigel's local CSS syntax file. // @todo [blocking 1.1.9] Find online if possible (check kde.org) and link to that // @todo [blocking 1.1.9] Make configurable the file? Have at least hardcoded ones for me and for the web $result =& $xml_parser->setInputFile('/usr/share/apps/katepart/syntax/css.xml'); if (PEAR::isError($result)) { return new KeywordGetterError(FILE_UNAVAILABLE, $this->_language, array('{FILENAME}' => '/usr/share/apps/katepart/syntax/css.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(); return array_unique($keywords); } } ?>