diff options
author | david_williams | 2005-04-10 01:59:51 +0000 |
---|---|---|
committer | david_williams | 2005-04-10 01:59:51 +0000 |
commit | 63219a2d13dec9a190adcbeab4038d788ff4358f (patch) | |
tree | d9a3e98042fc2819c0be32393eba4dae9865ed76 /bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/parserz/CSSTextParser.java | |
parent | d349d70aa97a92d92705fcf5b7c3dd3d3cb1cf93 (diff) | |
download | webtools.sourceediting-63219a2d13dec9a190adcbeab4038d788ff4358f.tar.gz webtools.sourceediting-63219a2d13dec9a190adcbeab4038d788ff4358f.tar.xz webtools.sourceediting-63219a2d13dec9a190adcbeab4038d788ff4358f.zip |
java doc and specification and internalization
Diffstat (limited to 'bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/parserz/CSSTextParser.java')
-rw-r--r-- | bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/parserz/CSSTextParser.java | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/parserz/CSSTextParser.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/parserz/CSSTextParser.java new file mode 100644 index 0000000000..922c3f1b41 --- /dev/null +++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/parserz/CSSTextParser.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.css.core.internal.parserz; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.util.Collections; +import java.util.List; + +import org.eclipse.wst.css.core.internal.parser.CSSTokenizer; + + + +public class CSSTextParser { + public static final int MODE_STYLESHEET = 0; + public static final int MODE_DECLARATION = 1; + public static final int MODE_DECLARATION_VALUE = 2; + + public CSSTextParser(int parserMode) { + initializeParserMode(parserMode); + } + + public CSSTextParser(int parserMode, Reader reader) { + initializeParserMode(parserMode); + reset(reader); + } + + public CSSTextParser(int parserMode, String input) { + initializeParserMode(parserMode); + reset(input); + } + + public void reset(Reader reader) { + getTokenizer().reset(reader, 0); + } + + public void reset(String input) { + getTokenizer().reset(new StringReader(input), 0); + } + + public CSSTextToken[] getTokens() { + List tokenList = getTokenList(); + CSSTextToken[] tokens = new CSSTextToken[tokenList.size()]; + return (CSSTextToken[]) tokenList.toArray(tokens); + } + + public List getTokenList() { + List tokens; + try { + tokens = getTokenizer().parseText(); + } + catch (IOException e) { + tokens = Collections.EMPTY_LIST; + } + return tokens; + } + + private void initializeParserMode(int parserMode) { + int initialState; + int bufsize; + switch (parserMode) { + case MODE_STYLESHEET : + initialState = CSSTokenizer.YYINITIAL; + bufsize = CSSTokenizer.BUFFER_SIZE_NORMAL; + break; + case MODE_DECLARATION : + initialState = CSSTokenizer.ST_DECLARATION; + bufsize = CSSTokenizer.BUFFER_SIZE_NORMAL; + break; + case MODE_DECLARATION_VALUE : + initialState = CSSTokenizer.ST_DECLARATION_PRE_VALUE; + bufsize = CSSTokenizer.BUFFER_SIZE_SMALL; + break; + default : + return; + } + if (0 < initialState) { + CSSTokenizer tokenizer = getTokenizer(); + tokenizer.setInitialState(initialState); + tokenizer.setInitialBufferSize(bufsize); + } + } + + private CSSTokenizer getTokenizer() { + if (fTokenizer == null) { + fTokenizer = new CSSTokenizer(); + } + return fTokenizer; + } + + private CSSTokenizer fTokenizer = null; +}
\ No newline at end of file |