Serialize.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/String.h>
  8. #include <AK/StringBuilder.h>
  9. #include <AK/StringView.h>
  10. #include <AK/Vector.h>
  11. #include <LibGfx/Color.h>
  12. #include <LibGfx/Font/UnicodeRange.h>
  13. namespace Web::CSS {
  14. void escape_a_character(StringBuilder&, u32 character);
  15. void escape_a_character_as_code_point(StringBuilder&, u32 character);
  16. void serialize_an_identifier(StringBuilder&, StringView ident);
  17. void serialize_a_string(StringBuilder&, StringView string);
  18. void serialize_a_url(StringBuilder&, StringView url);
  19. void serialize_a_local(StringBuilder&, StringView path);
  20. void serialize_unicode_ranges(StringBuilder&, Vector<Gfx::UnicodeRange> const& unicode_ranges);
  21. void serialize_a_srgb_value(StringBuilder&, Color color);
  22. String escape_a_character(u32 character);
  23. String escape_a_character_as_code_point(u32 character);
  24. String serialize_an_identifier(StringView ident);
  25. String serialize_a_string(StringView string);
  26. String serialize_a_url(StringView url);
  27. String serialize_a_srgb_value(Color color);
  28. // https://www.w3.org/TR/cssom/#serialize-a-comma-separated-list
  29. template<typename T, typename SerializeItem>
  30. void serialize_a_comma_separated_list(StringBuilder& builder, Vector<T> const& items, SerializeItem serialize_item)
  31. {
  32. // To serialize a comma-separated list concatenate all items of the list in list order
  33. // while separating them by ", ", i.e., COMMA (U+002C) followed by a single SPACE (U+0020).
  34. for (size_t i = 0; i < items.size(); i++) {
  35. auto& item = items.at(i);
  36. serialize_item(builder, item);
  37. if ((i + 1) < items.size()) {
  38. builder.append(", "sv);
  39. }
  40. }
  41. }
  42. }