mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:47:46 +00:00
AK: Make debugging URLParser easier
This patch adds a state_name method to URLParser to convert a state to a string. With this, the debugging statements now display the state names. Furthermore, this fixes a bug where non-ASCII code points were formatted as characters, which fails an assertion in the formatting system.
This commit is contained in:
parent
99d5555134
commit
97425c7dfb
2 changed files with 45 additions and 24 deletions
|
@ -12,38 +12,57 @@
|
|||
|
||||
namespace AK {
|
||||
|
||||
#define ENUMERATE_STATES \
|
||||
STATE(SchemeStart) \
|
||||
STATE(Scheme) \
|
||||
STATE(NoScheme) \
|
||||
STATE(SpecialRelativeOrAuthority) \
|
||||
STATE(PathOrAuthority) \
|
||||
STATE(Relative) \
|
||||
STATE(RelativeSlash) \
|
||||
STATE(SpecialAuthoritySlashes) \
|
||||
STATE(SpecialAuthorityIgnoreSlashes) \
|
||||
STATE(Authority) \
|
||||
STATE(Host) \
|
||||
STATE(Hostname) \
|
||||
STATE(Port) \
|
||||
STATE(File) \
|
||||
STATE(FileSlash) \
|
||||
STATE(FileHost) \
|
||||
STATE(PathStart) \
|
||||
STATE(Path) \
|
||||
STATE(CannotBeABaseUrlPath) \
|
||||
STATE(Query) \
|
||||
STATE(Fragment)
|
||||
|
||||
class URLParser {
|
||||
public:
|
||||
enum class State {
|
||||
SchemeStart,
|
||||
Scheme,
|
||||
NoScheme,
|
||||
SpecialRelativeOrAuthority,
|
||||
PathOrAuthority,
|
||||
Relative,
|
||||
RelativeSlash,
|
||||
SpecialAuthoritySlashes,
|
||||
SpecialAuthorityIgnoreSlashes,
|
||||
Authority,
|
||||
Host,
|
||||
Hostname,
|
||||
Port,
|
||||
File,
|
||||
FileSlash,
|
||||
FileHost,
|
||||
PathStart,
|
||||
Path,
|
||||
CannotBeABaseUrlPath,
|
||||
Query,
|
||||
Fragment
|
||||
#define STATE(state) state,
|
||||
ENUMERATE_STATES
|
||||
#undef STATE
|
||||
};
|
||||
|
||||
static char const* state_name(State const& state)
|
||||
{
|
||||
switch (state) {
|
||||
#define STATE(state) \
|
||||
case State::state: \
|
||||
return #state;
|
||||
ENUMERATE_STATES
|
||||
#undef STATE
|
||||
}
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
static URL parse(Badge<URL>, StringView const& input, URL const* base_url = nullptr);
|
||||
|
||||
private:
|
||||
static Optional<URL> parse_data_url(StringView const& raw_input);
|
||||
};
|
||||
|
||||
#undef ENUMERATE_STATES
|
||||
|
||||
}
|
||||
|
||||
using AK::URLParser;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue