mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 01:17:35 +00:00
AK: Introduce fallible SourceGenerator API
This commit is contained in:
parent
747d1aaa98
commit
f902d4d5e7
1 changed files with 29 additions and 21 deletions
|
@ -49,11 +49,6 @@ public:
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void set(StringView key, DeprecatedString value)
|
|
||||||
{
|
|
||||||
MUST(set(key, MUST(String::from_deprecated_string(value))));
|
|
||||||
}
|
|
||||||
|
|
||||||
String get(StringView key) const
|
String get(StringView key) const
|
||||||
{
|
{
|
||||||
auto result = m_mapping.get(key);
|
auto result = m_mapping.get(key);
|
||||||
|
@ -66,12 +61,12 @@ public:
|
||||||
|
|
||||||
StringView as_string_view() const { return m_builder.string_view(); }
|
StringView as_string_view() const { return m_builder.string_view(); }
|
||||||
|
|
||||||
void append(StringView pattern)
|
ErrorOr<void> try_append(StringView pattern)
|
||||||
{
|
{
|
||||||
GenericLexer lexer { pattern };
|
GenericLexer lexer { pattern };
|
||||||
|
|
||||||
while (!lexer.is_eof()) {
|
while (!lexer.is_eof()) {
|
||||||
m_builder.append(lexer.consume_until(m_opening));
|
TRY(m_builder.try_append(lexer.consume_until(m_opening)));
|
||||||
|
|
||||||
if (lexer.consume_specific(m_opening)) {
|
if (lexer.consume_specific(m_opening)) {
|
||||||
auto const placeholder = lexer.consume_until(m_closing);
|
auto const placeholder = lexer.consume_until(m_closing);
|
||||||
|
@ -79,17 +74,19 @@ public:
|
||||||
if (!lexer.consume_specific(m_closing))
|
if (!lexer.consume_specific(m_closing))
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
|
|
||||||
m_builder.append(get(placeholder));
|
TRY(m_builder.try_append(get(placeholder)));
|
||||||
} else {
|
} else {
|
||||||
VERIFY(lexer.is_eof());
|
VERIFY(lexer.is_eof());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void appendln(StringView pattern)
|
ErrorOr<void> try_appendln(StringView pattern)
|
||||||
{
|
{
|
||||||
append(pattern);
|
TRY(try_append(pattern));
|
||||||
m_builder.append('\n');
|
TRY(m_builder.try_append('\n'));
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<size_t N>
|
template<size_t N>
|
||||||
|
@ -98,12 +95,6 @@ public:
|
||||||
return get(StringView { key, N - 1 });
|
return get(StringView { key, N - 1 });
|
||||||
}
|
}
|
||||||
|
|
||||||
template<size_t N>
|
|
||||||
void set(char const (&key)[N], DeprecatedString value)
|
|
||||||
{
|
|
||||||
set(StringView { key, N - 1 }, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<size_t N>
|
template<size_t N>
|
||||||
ErrorOr<void> set(char const (&key)[N], String value)
|
ErrorOr<void> set(char const (&key)[N], String value)
|
||||||
{
|
{
|
||||||
|
@ -111,17 +102,34 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
template<size_t N>
|
template<size_t N>
|
||||||
void append(char const (&pattern)[N])
|
ErrorOr<void> try_append(char const (&pattern)[N])
|
||||||
{
|
{
|
||||||
append(StringView { pattern, N - 1 });
|
return try_append(StringView { pattern, N - 1 });
|
||||||
}
|
}
|
||||||
|
|
||||||
template<size_t N>
|
template<size_t N>
|
||||||
void appendln(char const (&pattern)[N])
|
ErrorOr<void> try_appendln(char const (&pattern)[N])
|
||||||
{
|
{
|
||||||
appendln(StringView { pattern, N - 1 });
|
return try_appendln(StringView { pattern, N - 1 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: These are deprecated.
|
||||||
|
void set(StringView key, DeprecatedString value)
|
||||||
|
{
|
||||||
|
MUST(set(key, MUST(String::from_deprecated_string(value))));
|
||||||
|
}
|
||||||
|
template<size_t N>
|
||||||
|
void set(char const (&key)[N], DeprecatedString value)
|
||||||
|
{
|
||||||
|
set(StringView { key, N - 1 }, value);
|
||||||
|
}
|
||||||
|
void append(StringView pattern) { MUST(try_append(pattern)); }
|
||||||
|
void appendln(StringView pattern) { MUST(try_appendln(pattern)); }
|
||||||
|
template<size_t N>
|
||||||
|
void append(char const (&pattern)[N]) { MUST(try_append(pattern)); }
|
||||||
|
template<size_t N>
|
||||||
|
void appendln(char const (&pattern)[N]) { MUST(try_appendln(pattern)); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
StringBuilder& m_builder;
|
StringBuilder& m_builder;
|
||||||
MappingType m_mapping;
|
MappingType m_mapping;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue