Serenity Operating System
at master 47 lines 1.7 kB view raw
1/* 2 * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/String.h> 10#include <AK/StringBuilder.h> 11#include <AK/StringView.h> 12#include <AK/Vector.h> 13#include <LibGfx/Color.h> 14#include <LibWeb/CSS/UnicodeRange.h> 15 16namespace Web::CSS { 17 18ErrorOr<void> escape_a_character(StringBuilder&, u32 character); 19ErrorOr<void> escape_a_character_as_code_point(StringBuilder&, u32 character); 20ErrorOr<void> serialize_an_identifier(StringBuilder&, StringView ident); 21ErrorOr<void> serialize_a_string(StringBuilder&, StringView string); 22ErrorOr<void> serialize_a_url(StringBuilder&, StringView url); 23ErrorOr<void> serialize_a_local(StringBuilder&, StringView path); 24ErrorOr<void> serialize_unicode_ranges(StringBuilder&, Vector<UnicodeRange> const& unicode_ranges); 25ErrorOr<void> serialize_a_srgb_value(StringBuilder&, Color color); 26 27ErrorOr<String> escape_a_character(u32 character); 28ErrorOr<String> escape_a_character_as_code_point(u32 character); 29ErrorOr<String> serialize_an_identifier(StringView ident); 30ErrorOr<String> serialize_a_string(StringView string); 31ErrorOr<String> serialize_a_url(StringView url); 32ErrorOr<String> serialize_a_srgb_value(Color color); 33 34template<typename T, typename SerializeItem> 35ErrorOr<void> serialize_a_comma_separated_list(StringBuilder& builder, Vector<T> const& items, SerializeItem serialize_item) 36{ 37 for (size_t i = 0; i < items.size(); i++) { 38 auto& item = items.at(i); 39 TRY(serialize_item(builder, item)); 40 if ((i + 1) < items.size()) { 41 TRY(builder.try_append(",\n"sv)); 42 } 43 } 44 return {}; 45} 46 47}