1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:08:12 +00:00

LibWeb: Extract MediaType to/from_string() logic into functions

This commit is contained in:
Sam Atkins 2022-04-27 14:58:25 +01:00 committed by Andreas Kling
parent 1f114eaebe
commit 28278efafb
3 changed files with 62 additions and 57 deletions

View file

@ -326,41 +326,7 @@ String MediaQuery::to_string() const
builder.append("not ");
if (m_negated || m_media_type != MediaType::All || !m_media_condition) {
switch (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;
}
builder.append(CSS::to_string(m_media_type));
if (m_media_condition)
builder.append(" and ");
}
@ -478,4 +444,60 @@ bool is_media_feature_name(StringView name)
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();
}
}