1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CSSParserToken_h
#define CSSParserToken_h
#include "core/css/CSSPrimitiveValue.h"
#include "wtf/text/WTFString.h"
namespace blink {
enum CSSParserTokenType {
IdentToken = 0,
FunctionToken,
AtKeywordToken,
HashToken,
UrlToken,
BadUrlToken,
DelimiterToken,
NumberToken,
PercentageToken,
DimensionToken,
IncludeMatchToken,
DashMatchToken,
PrefixMatchToken,
SuffixMatchToken,
SubstringMatchToken,
ColumnToken,
UnicodeRangeToken,
WhitespaceToken,
ColonToken,
SemicolonToken,
CommaToken,
LeftParenthesisToken,
RightParenthesisToken,
LeftBracketToken,
RightBracketToken,
LeftBraceToken,
RightBraceToken,
StringToken,
BadStringToken,
EOFToken,
CommentToken,
};
enum NumericValueType {
IntegerValueType,
NumberValueType,
};
enum HashTokenType {
HashTokenId,
HashTokenUnrestricted,
};
class CSSParserToken {
public:
enum BlockType {
NotBlock,
BlockStart,
BlockEnd,
};
CSSParserToken(CSSParserTokenType, BlockType = NotBlock);
CSSParserToken(CSSParserTokenType, String value, BlockType = NotBlock);
CSSParserToken(CSSParserTokenType, UChar); // for DelimiterToken
CSSParserToken(CSSParserTokenType, double, NumericValueType); // for NumberToken
CSSParserToken(CSSParserTokenType, UChar32, UChar32); // for UnicodeRangeToken
CSSParserToken(HashTokenType, String);
// Converts NumberToken to DimensionToken.
void convertToDimensionWithUnit(String);
// Converts NumberToken to PercentageToken.
void convertToPercentage();
CSSParserTokenType type() const { return m_type; }
String value() const { return m_value; }
UChar delimiter() const;
NumericValueType numericValueType() const;
double numericValue() const;
HashTokenType hashTokenType() const { ASSERT(m_type == HashToken); return m_hashTokenType; }
BlockType blockType() const { return m_blockType; }
CSSPrimitiveValue::UnitType unitType() const { return m_unit; }
UChar32 unicodeRangeStart() const { ASSERT(m_type == UnicodeRangeToken); return m_unicodeRangeStart; }
UChar32 unicodeRangeEnd() const { ASSERT(m_type == UnicodeRangeToken); return m_unicodeRangeEnd; }
CSSPropertyID parseAsCSSPropertyID() const;
private:
CSSParserTokenType m_type;
String m_value;
// This could be a union to save space
UChar m_delimiter;
HashTokenType m_hashTokenType;
NumericValueType m_numericValueType;
double m_numericValue;
CSSPrimitiveValue::UnitType m_unit;
UChar32 m_unicodeRangeStart;
UChar32 m_unicodeRangeEnd;
BlockType m_blockType;
};
} // namespace
#endif // CSSSParserToken_h
|