/src/serenity/Userland/Libraries/LibRegex/RegexError.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2020, Emanuel Sprung <emanuel.sprung@gmail.com> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #pragma once |
8 | | |
9 | | #include "RegexDefs.h" |
10 | | #include <AK/StringView.h> |
11 | | #include <AK/Types.h> |
12 | | |
13 | | namespace regex { |
14 | | |
15 | | enum class Error : u8 { |
16 | | NoError = __Regex_NoError, |
17 | | InvalidPattern = __Regex_InvalidPattern, // Invalid regular expression. |
18 | | InvalidCollationElement = __Regex_InvalidCollationElement, // Invalid collating element referenced. |
19 | | InvalidCharacterClass = __Regex_InvalidCharacterClass, // Invalid character class type referenced. |
20 | | InvalidTrailingEscape = __Regex_InvalidTrailingEscape, // Trailing \ in pattern. |
21 | | InvalidNumber = __Regex_InvalidNumber, // Number in \digit invalid or in error. |
22 | | MismatchingBracket = __Regex_MismatchingBracket, // [ ] imbalance. |
23 | | MismatchingParen = __Regex_MismatchingParen, // ( ) imbalance. |
24 | | MismatchingBrace = __Regex_MismatchingBrace, // { } imbalance. |
25 | | InvalidBraceContent = __Regex_InvalidBraceContent, // Content of {} invalid: not a number, number too large, more than two numbers, first larger than second. |
26 | | InvalidBracketContent = __Regex_InvalidBracketContent, // Content of [] invalid. |
27 | | InvalidRange = __Regex_InvalidRange, // Invalid endpoint in range expression. |
28 | | InvalidRepetitionMarker = __Regex_InvalidRepetitionMarker, // ?, * or + not preceded by valid regular expression. |
29 | | ReachedMaxRecursion = __Regex_ReachedMaxRecursion, // MaximumRecursion has been reached. |
30 | | EmptySubExpression = __Regex_EmptySubExpression, // Sub expression has empty content. |
31 | | InvalidCaptureGroup = __Regex_InvalidCaptureGroup, // Content of capture group is invalid. |
32 | | InvalidNameForCaptureGroup = __Regex_InvalidNameForCaptureGroup, // Name of capture group is invalid. |
33 | | InvalidNameForProperty = __Regex_InvalidNameForProperty, // Name of property is invalid. |
34 | | DuplicateNamedCapture = __Regex_DuplicateNamedCapture, // Name of property is invalid. |
35 | | InvalidCharacterClassEscape = __Regex_InvalidCharacterClassEscape, // Invalid escaped entity in character class. |
36 | | }; |
37 | | |
38 | | inline StringView get_error_string(Error error) |
39 | 2.49k | { |
40 | 2.49k | switch (error) { |
41 | 0 | case Error::NoError: |
42 | 0 | return "No error"sv; |
43 | 303 | case Error::InvalidPattern: |
44 | 303 | return "Invalid regular expression."sv; |
45 | 0 | case Error::InvalidCollationElement: |
46 | 0 | return "Invalid collating element referenced."sv; |
47 | 0 | case Error::InvalidCharacterClass: |
48 | 0 | return "Invalid character class type referenced."sv; |
49 | 0 | case Error::InvalidTrailingEscape: |
50 | 0 | return "Trailing \\ in pattern."sv; |
51 | 38 | case Error::InvalidNumber: |
52 | 38 | return "Number in \\digit invalid or in error."sv; |
53 | 15 | case Error::MismatchingBracket: |
54 | 15 | return "[ ] imbalance."sv; |
55 | 484 | case Error::MismatchingParen: |
56 | 484 | return "( ) imbalance."sv; |
57 | 0 | case Error::MismatchingBrace: |
58 | 0 | return "{ } imbalance."sv; |
59 | 0 | case Error::InvalidBraceContent: |
60 | 0 | return "Content of {} invalid: not a number, number too large, more than two numbers, first larger than second."sv; |
61 | 0 | case Error::InvalidBracketContent: |
62 | 0 | return "Content of [] invalid."sv; |
63 | 7 | case Error::InvalidRange: |
64 | 7 | return "Invalid endpoint in range expression."sv; |
65 | 0 | case Error::InvalidRepetitionMarker: |
66 | 0 | return "?, * or + not preceded by valid regular expression."sv; |
67 | 0 | case Error::ReachedMaxRecursion: |
68 | 0 | return "Maximum recursion has been reached."sv; |
69 | 0 | case Error::EmptySubExpression: |
70 | 0 | return "Sub expression has empty content."sv; |
71 | 27 | case Error::InvalidCaptureGroup: |
72 | 27 | return "Content of capture group is invalid."sv; |
73 | 1.62k | case Error::InvalidNameForCaptureGroup: |
74 | 1.62k | return "Name of capture group is invalid."sv; |
75 | 0 | case Error::InvalidNameForProperty: |
76 | 0 | return "Name of property is invalid."sv; |
77 | 0 | case Error::DuplicateNamedCapture: |
78 | 0 | return "Duplicate capture group name"sv; |
79 | 0 | case Error::InvalidCharacterClassEscape: |
80 | 0 | return "Invalid escaped entity in character class."sv; |
81 | 2.49k | } |
82 | 0 | return "Undefined error."sv; |
83 | 2.49k | } |
84 | | } |
85 | | |
86 | | using regex::get_error_string; |