mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 19:25:10 +00:00
LibWeb: Generate the CSS::ValueID enum and its helper functions
This commit is contained in:
parent
92d8e559ba
commit
17c529e6c5
11 changed files with 421 additions and 550 deletions
|
@ -71,119 +71,6 @@ bool ParsingContext::in_quirks_mode() const
|
|||
|
||||
}
|
||||
|
||||
static Optional<CSS::ValueID> value_id_for_palette_string(const StringView& string)
|
||||
{
|
||||
if (string.equals_ignoring_case("desktop-background"))
|
||||
return CSS::ValueID::VendorSpecificPaletteDesktopBackground;
|
||||
if (string.equals_ignoring_case("active-window-border1"))
|
||||
return CSS::ValueID::VendorSpecificPaletteActiveWindowBorder1;
|
||||
if (string.equals_ignoring_case("active-window-border2"))
|
||||
return CSS::ValueID::VendorSpecificPaletteActiveWindowBorder2;
|
||||
if (string.equals_ignoring_case("active-window-title"))
|
||||
return CSS::ValueID::VendorSpecificPaletteActiveWindowTitle;
|
||||
if (string.equals_ignoring_case("inactive-window-border1"))
|
||||
return CSS::ValueID::VendorSpecificPaletteInactiveWindowBorder1;
|
||||
if (string.equals_ignoring_case("inactive-window-border2"))
|
||||
return CSS::ValueID::VendorSpecificPaletteInactiveWindowBorder2;
|
||||
if (string.equals_ignoring_case("inactive-window-title"))
|
||||
return CSS::ValueID::VendorSpecificPaletteInactiveWindowTitle;
|
||||
if (string.equals_ignoring_case("moving-window-border1"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMovingWindowBorder1;
|
||||
if (string.equals_ignoring_case("moving-window-border2"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMovingWindowBorder2;
|
||||
if (string.equals_ignoring_case("moving-window-title"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMovingWindowTitle;
|
||||
if (string.equals_ignoring_case("highlight-window-border1"))
|
||||
return CSS::ValueID::VendorSpecificPaletteHighlightWindowBorder1;
|
||||
if (string.equals_ignoring_case("highlight-window-border2"))
|
||||
return CSS::ValueID::VendorSpecificPaletteHighlightWindowBorder2;
|
||||
if (string.equals_ignoring_case("highlight-window-title"))
|
||||
return CSS::ValueID::VendorSpecificPaletteHighlightWindowTitle;
|
||||
if (string.equals_ignoring_case("menu-stripe"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMenuStripe;
|
||||
if (string.equals_ignoring_case("menu-base"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMenuBase;
|
||||
if (string.equals_ignoring_case("menu-base-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMenuBaseText;
|
||||
if (string.equals_ignoring_case("menu-selection"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMenuSelection;
|
||||
if (string.equals_ignoring_case("menu-selection-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteMenuSelectionText;
|
||||
if (string.equals_ignoring_case("window"))
|
||||
return CSS::ValueID::VendorSpecificPaletteWindow;
|
||||
if (string.equals_ignoring_case("window-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteWindowText;
|
||||
if (string.equals_ignoring_case("button"))
|
||||
return CSS::ValueID::VendorSpecificPaletteButton;
|
||||
if (string.equals_ignoring_case("button-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteButtonText;
|
||||
if (string.equals_ignoring_case("base"))
|
||||
return CSS::ValueID::VendorSpecificPaletteBase;
|
||||
if (string.equals_ignoring_case("base-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteBaseText;
|
||||
if (string.equals_ignoring_case("threed-highlight"))
|
||||
return CSS::ValueID::VendorSpecificPaletteThreedHighlight;
|
||||
if (string.equals_ignoring_case("threed-shadow1"))
|
||||
return CSS::ValueID::VendorSpecificPaletteThreedShadow1;
|
||||
if (string.equals_ignoring_case("threed-shadow2"))
|
||||
return CSS::ValueID::VendorSpecificPaletteThreedShadow2;
|
||||
if (string.equals_ignoring_case("hover-highlight"))
|
||||
return CSS::ValueID::VendorSpecificPaletteHoverHighlight;
|
||||
if (string.equals_ignoring_case("selection"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSelection;
|
||||
if (string.equals_ignoring_case("selection-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSelectionText;
|
||||
if (string.equals_ignoring_case("inactive-selection"))
|
||||
return CSS::ValueID::VendorSpecificPaletteInactiveSelection;
|
||||
if (string.equals_ignoring_case("inactive-selection-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteInactiveSelectionText;
|
||||
if (string.equals_ignoring_case("rubber-band-fill"))
|
||||
return CSS::ValueID::VendorSpecificPaletteRubberBandFill;
|
||||
if (string.equals_ignoring_case("rubber-band-border"))
|
||||
return CSS::ValueID::VendorSpecificPaletteRubberBandBorder;
|
||||
if (string.equals_ignoring_case("link"))
|
||||
return CSS::ValueID::VendorSpecificPaletteLink;
|
||||
if (string.equals_ignoring_case("active-link"))
|
||||
return CSS::ValueID::VendorSpecificPaletteActiveLink;
|
||||
if (string.equals_ignoring_case("visited-link"))
|
||||
return CSS::ValueID::VendorSpecificPaletteVisitedLink;
|
||||
if (string.equals_ignoring_case("ruler"))
|
||||
return CSS::ValueID::VendorSpecificPaletteRuler;
|
||||
if (string.equals_ignoring_case("ruler-border"))
|
||||
return CSS::ValueID::VendorSpecificPaletteRulerBorder;
|
||||
if (string.equals_ignoring_case("ruler-active-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteRulerActiveText;
|
||||
if (string.equals_ignoring_case("ruler-inactive-text"))
|
||||
return CSS::ValueID::VendorSpecificPaletteRulerInactiveText;
|
||||
if (string.equals_ignoring_case("text-cursor"))
|
||||
return CSS::ValueID::VendorSpecificPaletteTextCursor;
|
||||
if (string.equals_ignoring_case("focus-outline"))
|
||||
return CSS::ValueID::VendorSpecificPaletteFocusOutline;
|
||||
if (string.equals_ignoring_case("syntax-comment"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxComment;
|
||||
if (string.equals_ignoring_case("syntax-number"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxNumber;
|
||||
if (string.equals_ignoring_case("syntax-string"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxString;
|
||||
if (string.equals_ignoring_case("syntax-type"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxType;
|
||||
if (string.equals_ignoring_case("syntax-punctuation"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxPunctuation;
|
||||
if (string.equals_ignoring_case("syntax-operator"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxOperator;
|
||||
if (string.equals_ignoring_case("syntax-keyword"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxKeyword;
|
||||
if (string.equals_ignoring_case("syntax-control-keyword"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxControlKeyword;
|
||||
if (string.equals_ignoring_case("syntax-identifier"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxIdentifier;
|
||||
if (string.equals_ignoring_case("syntax-preprocessor-statement"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxPreprocessorStatement;
|
||||
if (string.equals_ignoring_case("syntax-preprocessor-value"))
|
||||
return CSS::ValueID::VendorSpecificPaletteSyntaxPreprocessorValue;
|
||||
return {};
|
||||
}
|
||||
|
||||
static Optional<Color> parse_css_color(const CSS::ParsingContext&, const StringView& view)
|
||||
{
|
||||
if (view.equals_ignoring_case("transparent"))
|
||||
|
@ -342,141 +229,6 @@ static bool takes_integer_value(CSS::PropertyID property_id)
|
|||
return property_id == CSS::PropertyID::ZIndex || property_id == CSS::PropertyID::FontWeight;
|
||||
}
|
||||
|
||||
static Optional<CSS::ValueID> value_id_from_string(const String& string)
|
||||
{
|
||||
// FIXME: Handle all identifiers
|
||||
// FIXME: Generate this code
|
||||
if (string.equals_ignoring_case("bold"))
|
||||
return CSS::ValueID::Bold;
|
||||
if (string.equals_ignoring_case("bolder"))
|
||||
return CSS::ValueID::Bolder;
|
||||
if (string.equals_ignoring_case("center"))
|
||||
return CSS::ValueID::Center;
|
||||
if (string.equals_ignoring_case("justify"))
|
||||
return CSS::ValueID::Justify;
|
||||
if (string.equals_ignoring_case("large"))
|
||||
return CSS::ValueID::Large;
|
||||
if (string.equals_ignoring_case("larger"))
|
||||
return CSS::ValueID::Larger;
|
||||
if (string.equals_ignoring_case("left"))
|
||||
return CSS::ValueID::Left;
|
||||
if (string.equals_ignoring_case("lighter"))
|
||||
return CSS::ValueID::Lighter;
|
||||
if (string.equals_ignoring_case("medium"))
|
||||
return CSS::ValueID::Medium;
|
||||
if (string.equals_ignoring_case("normal"))
|
||||
return CSS::ValueID::Normal;
|
||||
if (string.equals_ignoring_case("small"))
|
||||
return CSS::ValueID::Small;
|
||||
if (string.equals_ignoring_case("right"))
|
||||
return CSS::ValueID::Right;
|
||||
if (string.equals_ignoring_case("smaller"))
|
||||
return CSS::ValueID::Smaller;
|
||||
if (string.equals_ignoring_case("x-large"))
|
||||
return CSS::ValueID::XLarge;
|
||||
if (string.equals_ignoring_case("x-small"))
|
||||
return CSS::ValueID::XSmall;
|
||||
if (string.equals_ignoring_case("xx-large"))
|
||||
return CSS::ValueID::XxLarge;
|
||||
if (string.equals_ignoring_case("xx-small"))
|
||||
return CSS::ValueID::XxSmall;
|
||||
if (string.equals_ignoring_case("xxx-large"))
|
||||
return CSS::ValueID::XxxLarge;
|
||||
if (string.equals_ignoring_case("-libweb-center"))
|
||||
return CSS::ValueID::VendorSpecificCenter;
|
||||
if (string.equals_ignoring_case("-libweb-link"))
|
||||
return CSS::ValueID::VendorSpecificLink;
|
||||
if (string.equals_ignoring_case("static"))
|
||||
return CSS::ValueID::Static;
|
||||
if (string.equals_ignoring_case("relative"))
|
||||
return CSS::ValueID::Relative;
|
||||
if (string.equals_ignoring_case("absolute"))
|
||||
return CSS::ValueID::Absolute;
|
||||
if (string.equals_ignoring_case("fixed"))
|
||||
return CSS::ValueID::Fixed;
|
||||
if (string.equals_ignoring_case("sticky"))
|
||||
return CSS::ValueID::Sticky;
|
||||
if (string.equals_ignoring_case("none"))
|
||||
return CSS::ValueID::None;
|
||||
if (string.equals_ignoring_case("both"))
|
||||
return CSS::ValueID::Both;
|
||||
if (string.equals_ignoring_case("hidden"))
|
||||
return CSS::ValueID::Hidden;
|
||||
if (string.equals_ignoring_case("dotted"))
|
||||
return CSS::ValueID::Dotted;
|
||||
if (string.equals_ignoring_case("dashed"))
|
||||
return CSS::ValueID::Dashed;
|
||||
if (string.equals_ignoring_case("solid"))
|
||||
return CSS::ValueID::Solid;
|
||||
if (string.equals_ignoring_case("double"))
|
||||
return CSS::ValueID::Double;
|
||||
if (string.equals_ignoring_case("groove"))
|
||||
return CSS::ValueID::Groove;
|
||||
if (string.equals_ignoring_case("ridge"))
|
||||
return CSS::ValueID::Ridge;
|
||||
if (string.equals_ignoring_case("inset"))
|
||||
return CSS::ValueID::Inset;
|
||||
if (string.equals_ignoring_case("outset"))
|
||||
return CSS::ValueID::Outset;
|
||||
if (string.equals_ignoring_case("nowrap"))
|
||||
return CSS::ValueID::Nowrap;
|
||||
if (string.equals_ignoring_case("pre"))
|
||||
return CSS::ValueID::Pre;
|
||||
if (string.equals_ignoring_case("pre-line"))
|
||||
return CSS::ValueID::PreLine;
|
||||
if (string.equals_ignoring_case("pre-wrap"))
|
||||
return CSS::ValueID::PreWrap;
|
||||
if (string.equals_ignoring_case("block"))
|
||||
return CSS::ValueID::Block;
|
||||
if (string.equals_ignoring_case("inline"))
|
||||
return CSS::ValueID::Inline;
|
||||
if (string.equals_ignoring_case("inline-block"))
|
||||
return CSS::ValueID::InlineBlock;
|
||||
if (string.equals_ignoring_case("list-item"))
|
||||
return CSS::ValueID::ListItem;
|
||||
if (string.equals_ignoring_case("table"))
|
||||
return CSS::ValueID::Table;
|
||||
if (string.equals_ignoring_case("table-row"))
|
||||
return CSS::ValueID::TableRow;
|
||||
if (string.equals_ignoring_case("table-cell"))
|
||||
return CSS::ValueID::TableCell;
|
||||
if (string.equals_ignoring_case("table-row-group"))
|
||||
return CSS::ValueID::TableRowGroup;
|
||||
if (string.equals_ignoring_case("table-header-group"))
|
||||
return CSS::ValueID::TableHeaderGroup;
|
||||
if (string.equals_ignoring_case("table-footer-group"))
|
||||
return CSS::ValueID::TableFooterGroup;
|
||||
if (string.equals_ignoring_case("underline"))
|
||||
return CSS::ValueID::Underline;
|
||||
if (string.equals_ignoring_case("overline"))
|
||||
return CSS::ValueID::Overline;
|
||||
if (string.equals_ignoring_case("line-through"))
|
||||
return CSS::ValueID::LineThrough;
|
||||
if (string.equals_ignoring_case("blink"))
|
||||
return CSS::ValueID::Blink;
|
||||
if (string.equals_ignoring_case("capitalize"))
|
||||
return CSS::ValueID::Capitalize;
|
||||
if (string.equals_ignoring_case("uppercase"))
|
||||
return CSS::ValueID::Uppercase;
|
||||
if (string.equals_ignoring_case("lowercase"))
|
||||
return CSS::ValueID::Lowercase;
|
||||
if (string.equals_ignoring_case("full-width"))
|
||||
return CSS::ValueID::FullWidth;
|
||||
if (string.equals_ignoring_case("full-size-kana"))
|
||||
return CSS::ValueID::FullSizeKana;
|
||||
if (string.equals_ignoring_case("disc"))
|
||||
return CSS::ValueID::Disc;
|
||||
if (string.equals_ignoring_case("circle"))
|
||||
return CSS::ValueID::Circle;
|
||||
if (string.equals_ignoring_case("square"))
|
||||
return CSS::ValueID::Square;
|
||||
if (string.equals_ignoring_case("decimal"))
|
||||
return CSS::ValueID::Decimal;
|
||||
if (string.starts_with("-libweb-palette-", CaseSensitivity::CaseInsensitive))
|
||||
return value_id_for_palette_string(string.substring_view(16, string.length() - 16));
|
||||
return {};
|
||||
}
|
||||
|
||||
RefPtr<CSS::StyleValue> parse_css_value(const CSS::ParsingContext& context, const StringView& string, CSS::PropertyID property_id)
|
||||
{
|
||||
bool is_bad_length = false;
|
||||
|
@ -500,9 +252,9 @@ RefPtr<CSS::StyleValue> parse_css_value(const CSS::ParsingContext& context, cons
|
|||
if (string.equals_ignoring_case("auto"))
|
||||
return CSS::LengthStyleValue::create(CSS::Length::make_auto());
|
||||
|
||||
auto value_id = value_id_from_string(string);
|
||||
if (value_id.has_value())
|
||||
return CSS::IdentifierStyleValue::create(value_id.value());
|
||||
auto value_id = CSS::value_id_from_string(string);
|
||||
if (value_id != CSS::ValueID::Invalid)
|
||||
return CSS::IdentifierStyleValue::create(value_id);
|
||||
|
||||
auto color = parse_css_color(context, string);
|
||||
if (color.has_value())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue