mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 10:07:34 +00:00
LibWeb: Extract MediaType to/from_string() logic into functions
This commit is contained in:
parent
1f114eaebe
commit
28278efafb
3 changed files with 62 additions and 57 deletions
|
@ -326,41 +326,7 @@ String MediaQuery::to_string() const
|
||||||
builder.append("not ");
|
builder.append("not ");
|
||||||
|
|
||||||
if (m_negated || m_media_type != MediaType::All || !m_media_condition) {
|
if (m_negated || m_media_type != MediaType::All || !m_media_condition) {
|
||||||
switch (m_media_type) {
|
builder.append(CSS::to_string(m_media_type));
|
||||||
case MediaType::All:
|
|
||||||
builder.append("all");
|
|
||||||
break;
|
|
||||||
case MediaType::Aural:
|
|
||||||
builder.append("aural");
|
|
||||||
break;
|
|
||||||
case MediaType::Braille:
|
|
||||||
builder.append("braille");
|
|
||||||
break;
|
|
||||||
case MediaType::Embossed:
|
|
||||||
builder.append("embossed");
|
|
||||||
break;
|
|
||||||
case MediaType::Handheld:
|
|
||||||
builder.append("handheld");
|
|
||||||
break;
|
|
||||||
case MediaType::Print:
|
|
||||||
builder.append("print");
|
|
||||||
break;
|
|
||||||
case MediaType::Projection:
|
|
||||||
builder.append("projection");
|
|
||||||
break;
|
|
||||||
case MediaType::Screen:
|
|
||||||
builder.append("screen");
|
|
||||||
break;
|
|
||||||
case MediaType::Speech:
|
|
||||||
builder.append("speech");
|
|
||||||
break;
|
|
||||||
case MediaType::TTY:
|
|
||||||
builder.append("tty");
|
|
||||||
break;
|
|
||||||
case MediaType::TV:
|
|
||||||
builder.append("tv");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (m_media_condition)
|
if (m_media_condition)
|
||||||
builder.append(" and ");
|
builder.append(" and ");
|
||||||
}
|
}
|
||||||
|
@ -478,4 +444,60 @@ bool is_media_feature_name(StringView name)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Optional<MediaQuery::MediaType> media_type_from_string(StringView name)
|
||||||
|
{
|
||||||
|
if (name.equals_ignoring_case("all"sv))
|
||||||
|
return MediaQuery::MediaType::All;
|
||||||
|
if (name.equals_ignoring_case("aural"sv))
|
||||||
|
return MediaQuery::MediaType::Aural;
|
||||||
|
if (name.equals_ignoring_case("braille"sv))
|
||||||
|
return MediaQuery::MediaType::Braille;
|
||||||
|
if (name.equals_ignoring_case("embossed"sv))
|
||||||
|
return MediaQuery::MediaType::Embossed;
|
||||||
|
if (name.equals_ignoring_case("handheld"sv))
|
||||||
|
return MediaQuery::MediaType::Handheld;
|
||||||
|
if (name.equals_ignoring_case("print"sv))
|
||||||
|
return MediaQuery::MediaType::Print;
|
||||||
|
if (name.equals_ignoring_case("projection"sv))
|
||||||
|
return MediaQuery::MediaType::Projection;
|
||||||
|
if (name.equals_ignoring_case("screen"sv))
|
||||||
|
return MediaQuery::MediaType::Screen;
|
||||||
|
if (name.equals_ignoring_case("speech"sv))
|
||||||
|
return MediaQuery::MediaType::Speech;
|
||||||
|
if (name.equals_ignoring_case("tty"sv))
|
||||||
|
return MediaQuery::MediaType::TTY;
|
||||||
|
if (name.equals_ignoring_case("tv"sv))
|
||||||
|
return MediaQuery::MediaType::TV;
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
StringView to_string(MediaQuery::MediaType media_type)
|
||||||
|
{
|
||||||
|
switch (media_type) {
|
||||||
|
case MediaQuery::MediaType::All:
|
||||||
|
return "all"sv;
|
||||||
|
case MediaQuery::MediaType::Aural:
|
||||||
|
return "aural"sv;
|
||||||
|
case MediaQuery::MediaType::Braille:
|
||||||
|
return "braille"sv;
|
||||||
|
case MediaQuery::MediaType::Embossed:
|
||||||
|
return "embossed"sv;
|
||||||
|
case MediaQuery::MediaType::Handheld:
|
||||||
|
return "handheld"sv;
|
||||||
|
case MediaQuery::MediaType::Print:
|
||||||
|
return "print"sv;
|
||||||
|
case MediaQuery::MediaType::Projection:
|
||||||
|
return "projection"sv;
|
||||||
|
case MediaQuery::MediaType::Screen:
|
||||||
|
return "screen"sv;
|
||||||
|
case MediaQuery::MediaType::Speech:
|
||||||
|
return "speech"sv;
|
||||||
|
case MediaQuery::MediaType::TTY:
|
||||||
|
return "tty"sv;
|
||||||
|
case MediaQuery::MediaType::TV:
|
||||||
|
return "tv"sv;
|
||||||
|
}
|
||||||
|
VERIFY_NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,6 +258,9 @@ String serialize_a_media_query_list(NonnullRefPtrVector<MediaQuery> const&);
|
||||||
|
|
||||||
bool is_media_feature_name(StringView name);
|
bool is_media_feature_name(StringView name);
|
||||||
|
|
||||||
|
Optional<MediaQuery::MediaType> media_type_from_string(StringView);
|
||||||
|
StringView to_string(MediaQuery::MediaType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace AK {
|
namespace AK {
|
||||||
|
|
|
@ -1202,28 +1202,8 @@ Optional<MediaQuery::MediaType> Parser::parse_media_type(TokenStream<ComponentVa
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ident = token.token().ident();
|
auto ident = token.token().ident();
|
||||||
if (ident.equals_ignoring_case("all")) {
|
if (auto media_type = media_type_from_string(ident); media_type.has_value()) {
|
||||||
return MediaQuery::MediaType::All;
|
return media_type.release_value();
|
||||||
} else if (ident.equals_ignoring_case("aural")) {
|
|
||||||
return MediaQuery::MediaType::Aural;
|
|
||||||
} else if (ident.equals_ignoring_case("braille")) {
|
|
||||||
return MediaQuery::MediaType::Braille;
|
|
||||||
} else if (ident.equals_ignoring_case("embossed")) {
|
|
||||||
return MediaQuery::MediaType::Embossed;
|
|
||||||
} else if (ident.equals_ignoring_case("handheld")) {
|
|
||||||
return MediaQuery::MediaType::Handheld;
|
|
||||||
} else if (ident.equals_ignoring_case("print")) {
|
|
||||||
return MediaQuery::MediaType::Print;
|
|
||||||
} else if (ident.equals_ignoring_case("projection")) {
|
|
||||||
return MediaQuery::MediaType::Projection;
|
|
||||||
} else if (ident.equals_ignoring_case("screen")) {
|
|
||||||
return MediaQuery::MediaType::Screen;
|
|
||||||
} else if (ident.equals_ignoring_case("speech")) {
|
|
||||||
return MediaQuery::MediaType::Speech;
|
|
||||||
} else if (ident.equals_ignoring_case("tty")) {
|
|
||||||
return MediaQuery::MediaType::TTY;
|
|
||||||
} else if (ident.equals_ignoring_case("tv")) {
|
|
||||||
return MediaQuery::MediaType::TV;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tokens.rewind_to_position(position);
|
tokens.rewind_to_position(position);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue