HTMLTokenizerHelpers.cpp 830 B

12345678910111213141516171819202122232425262728293031
  1. /*
  2. * Copyright (c) 2024, Andrew Kaster <akaster@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibTextCodec/Decoder.h>
  7. #include <LibWeb/HTML/Parser/HTMLTokenizerHelpers.h>
  8. namespace Web::HTML {
  9. OptionalString decode_to_utf8(StringView text, StringView encoding)
  10. {
  11. auto decoder = TextCodec::decoder_for(encoding);
  12. if (!decoder.has_value())
  13. return std::nullopt;
  14. auto decoded_or_error = decoder.value().to_utf8(text);
  15. if (decoded_or_error.is_error())
  16. return std::nullopt;
  17. return decoded_or_error.release_value();
  18. }
  19. OptionalEntityMatch match_entity_for_named_character_reference(StringView entity)
  20. {
  21. auto entity_match = code_points_from_entity(entity);
  22. if (entity_match.has_value())
  23. return entity_match.release_value();
  24. return std::nullopt;
  25. }
  26. }