Skip to content

Commit ccd7018

Browse files
DanShadersADKaster
authored andcommitted
Everywhere: Add deprecated_ prefix to JsonValue::to_byte_string
`JsonValue::to_byte_string` has peculiar type-erasure semantics which is not usually intended. Unfortunately, it also has a very stereotypical name which does not warn about unexpected behavior. So let's prefix it with `deprecated_` to make new code use `as_string` if it just wants to get string value or `serialized<StringBuilder>` if it needs to do proper serialization.
1 parent 4ed5287 commit ccd7018

File tree

20 files changed

+46
-50
lines changed

20 files changed

+46
-50
lines changed

AK/JsonValue.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class JsonValue {
8585
return alternative;
8686
}
8787

88-
ByteString to_byte_string() const
88+
ByteString deprecated_to_byte_string() const
8989
{
9090
if (is_string())
9191
return as_string();
@@ -290,7 +290,7 @@ template<>
290290
struct Formatter<JsonValue> : Formatter<StringView> {
291291
ErrorOr<void> format(FormatBuilder& builder, JsonValue const& value)
292292
{
293-
return Formatter<StringView>::format(builder, value.to_byte_string());
293+
return Formatter<StringView>::format(builder, value.serialized<StringBuilder>());
294294
}
295295
};
296296

Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ enum class ValueID;
7777
enum_generator.appendln("enum class @name:titlecase@ : @enum_type@ {");
7878

7979
for (auto& member : members.values()) {
80-
auto member_name = member.to_byte_string();
80+
auto member_name = member.as_string();
8181
// Don't include aliases in the enum.
8282
if (member_name.contains('='))
8383
continue;
@@ -126,7 +126,7 @@ Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID value_id)
126126

127127
for (auto& member : members.values()) {
128128
auto member_generator = enum_generator.fork();
129-
auto member_name = member.to_byte_string();
129+
auto member_name = member.as_string();
130130
if (member_name.contains('=')) {
131131
auto parts = member_name.split_view('=');
132132
member_generator.set("valueid:titlecase", title_casify(parts[0]));
@@ -154,7 +154,7 @@ ValueID to_value_id(@name:titlecase@ @name:snakecase@_value)
154154

155155
for (auto& member : members.values()) {
156156
auto member_generator = enum_generator.fork();
157-
auto member_name = member.to_byte_string();
157+
auto member_name = member.as_string();
158158
if (member_name.contains('='))
159159
continue;
160160
member_generator.set("member:titlecase", title_casify(member_name));
@@ -178,7 +178,7 @@ StringView to_string(@name:titlecase@ value)
178178

179179
for (auto& member : members.values()) {
180180
auto member_generator = enum_generator.fork();
181-
auto member_name = member.to_byte_string();
181+
auto member_name = member.as_string();
182182
if (member_name.contains('='))
183183
continue;
184184
member_generator.set("member:css", member_name);

Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ void replace_logical_aliases(JsonObject& properties)
7373
if (logical_alias_for.has_value()) {
7474
auto const& aliased_properties = logical_alias_for.value();
7575
for (auto const& aliased_property : aliased_properties.values()) {
76-
logical_aliases.set(name, aliased_property.to_byte_string());
76+
logical_aliases.set(name, aliased_property.as_string());
7777
}
7878
}
7979
});
@@ -768,7 +768,7 @@ size_t property_maximum_value_count(PropertyID property_id)
768768
VERIFY(max_values.has_value() && max_values->is_number() && !max_values->is_double());
769769
auto property_generator = generator.fork();
770770
property_generator.set("name:titlecase", title_casify(name));
771-
property_generator.set("max_values", max_values->to_byte_string());
771+
property_generator.set("max_values", max_values->template serialized<StringBuilder>());
772772
property_generator.append(R"~~~(
773773
case PropertyID::@name:titlecase@:
774774
return @max_values@;
@@ -834,7 +834,7 @@ Vector<PropertyID> longhands_for_shorthand(PropertyID property_id)
834834
first = false;
835835
else
836836
builder.append(", "sv);
837-
builder.appendff("PropertyID::{}", title_casify(longhand.to_byte_string()));
837+
builder.appendff("PropertyID::{}", title_casify(longhand.as_string()));
838838
return IterationDecision::Continue;
839839
});
840840
property_generator.set("longhands", builder.to_byte_string());

Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSTransformFunctions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ TransformFunctionMetadata transform_function_metadata(TransformFunction transfor
195195
member_generator.append(first ? " "sv : ", "sv);
196196
first = false;
197197

198-
member_generator.append(MUST(String::formatted("{{ TransformFunctionParameterType::{}, {}}}", parameter_type, value.as_object().get("required"sv)->to_byte_string())));
198+
member_generator.append(MUST(String::formatted("{{ TransformFunctionParameterType::{}, {}}}", parameter_type, value.as_object().get("required"sv)->as_bool())));
199199
});
200200

201201
member_generator.append(R"~~~( }

Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ enum class ValueID {
5757

5858
identifier_data.for_each([&](auto& name) {
5959
auto member_generator = generator.fork();
60-
member_generator.set("name:titlecase", title_casify(name.to_byte_string()));
60+
member_generator.set("name:titlecase", title_casify(name.as_string()));
6161

6262
member_generator.append(R"~~~(
6363
@name:titlecase@,
@@ -105,8 +105,8 @@ HashMap<StringView, ValueID, AK::CaseInsensitiveASCIIStringViewTraits> g_stringv
105105

106106
identifier_data.for_each([&](auto& name) {
107107
auto member_generator = generator.fork();
108-
member_generator.set("name", name.to_byte_string());
109-
member_generator.set("name:titlecase", title_casify(name.to_byte_string()));
108+
member_generator.set("name", name.as_string());
109+
member_generator.set("name:titlecase", title_casify(name.as_string()));
110110
member_generator.append(R"~~~(
111111
{"@name@"sv, ValueID::@name:titlecase@},
112112
)~~~");
@@ -126,8 +126,8 @@ StringView string_from_value_id(ValueID value_id) {
126126

127127
identifier_data.for_each([&](auto& name) {
128128
auto member_generator = generator.fork();
129-
member_generator.set("name", name.to_byte_string());
130-
member_generator.set("name:titlecase", title_casify(name.to_byte_string()));
129+
member_generator.set("name", name.as_string());
130+
member_generator.set("name:titlecase", title_casify(name.as_string()));
131131
member_generator.append(R"~~~(
132132
case ValueID::@name:titlecase@:
133133
return "@name@"sv;

Tests/AK/TestJSON.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ TEST_CASE(json_duplicate_keys)
115115
TEST_CASE(json_u64_roundtrip)
116116
{
117117
auto big_value = 0xffffffffffffffffull;
118-
auto json = JsonValue(big_value).to_byte_string();
118+
auto json = JsonValue(big_value).serialized<StringBuilder>();
119119
auto value = JsonValue::from_string(json);
120120
EXPECT_EQ_FORCE(value.is_error(), false);
121121
EXPECT_EQ(value.value().as_u64(), big_value);

Userland/Applications/Presenter/Presentation.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ HashMap<ByteString, ByteString> Presentation::parse_metadata(JsonObject const& m
133133
HashMap<ByteString, ByteString> metadata;
134134

135135
metadata_object.for_each_member([&](auto const& key, auto const& value) {
136-
metadata.set(key, value.to_byte_string());
136+
// FIXME: Do not serialize values here just to convert them back to proper types later.
137+
metadata.set(key, value.deprecated_to_byte_string());
137138
});
138139

139140
return metadata;

Userland/Applications/Presenter/SlideObject.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ void SlideObject::set_property(StringView name, JsonValue value)
5858
void GraphicsObject::set_property(StringView name, JsonValue value)
5959
{
6060
if (name == "color"sv) {
61-
if (auto color = Gfx::Color::from_string(value.to_byte_string()); color.has_value()) {
61+
if (auto color = Gfx::Color::from_string(value.as_string()); color.has_value()) {
6262
m_color = color.release_value();
6363
}
6464
}
@@ -68,27 +68,27 @@ void GraphicsObject::set_property(StringView name, JsonValue value)
6868
void Text::set_property(StringView name, JsonValue value)
6969
{
7070
if (name == "text"sv) {
71-
m_text = value.to_byte_string();
71+
m_text = value.as_string();
7272
} else if (name == "font"sv) {
73-
m_font_family = value.to_byte_string();
73+
m_font_family = value.as_string();
7474
} else if (name == "font-weight"sv) {
75-
m_font_weight = Gfx::name_to_weight(value.to_byte_string());
75+
m_font_weight = Gfx::name_to_weight(value.as_string());
7676
} else if (name == "font-size"sv) {
7777
m_font_size_in_pt = value.to_float();
7878
} else if (name == "text-alignment"sv) {
79-
m_text_align = value.to_byte_string();
79+
m_text_align = value.as_string();
8080
}
8181
GraphicsObject::set_property(name, move(value));
8282
}
8383

8484
void Image::set_property(StringView name, JsonValue value)
8585
{
8686
if (name == "path"sv) {
87-
m_src = value.to_byte_string();
87+
m_src = value.as_string();
8888
} else if (name == "scaling-mode"sv) {
89-
if (value.to_byte_string() == "nearest-neighbor"sv)
89+
if (value.as_string() == "nearest-neighbor"sv)
9090
m_image_rendering = "crisp-edges"sv;
91-
else if (value.to_byte_string() == "smooth-pixels"sv)
91+
else if (value.as_string() == "smooth-pixels"sv)
9292
m_image_rendering = "pixelated"sv;
9393
}
9494
SlideObject::set_property(name, move(value));

Userland/Applications/Spreadsheet/HelpWindow.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ ByteString HelpWindow::render(StringView key)
166166
markdown_builder.append("No required arguments.\n"sv);
167167

168168
for (size_t i = 0; i < argc; ++i)
169-
markdown_builder.appendff("- `{}`\n", argnames.at(i).to_byte_string());
169+
markdown_builder.appendff("- `{}`\n", argnames.at(i).as_string());
170170

171171
if (argc > 0)
172172
markdown_builder.append("\n"sv);
@@ -175,7 +175,7 @@ ByteString HelpWindow::render(StringView key)
175175
auto opt_count = argnames.size() - argc;
176176
markdown_builder.appendff("{} optional argument(s):\n", opt_count);
177177
for (size_t i = argc; i < (size_t)argnames.size(); ++i)
178-
markdown_builder.appendff("- `{}`\n", argnames.at(i).to_byte_string());
178+
markdown_builder.appendff("- `{}`\n", argnames.at(i).as_string());
179179
markdown_builder.append("\n"sv);
180180
}
181181

@@ -188,8 +188,8 @@ ByteString HelpWindow::render(StringView key)
188188
VERIFY(examples.has_value());
189189
markdown_builder.append("# EXAMPLES\n"sv);
190190
examples->for_each_member([&](auto& text, auto& description_value) {
191-
dbgln("```js\n{}\n```\n\n- {}\n", text, description_value.to_byte_string());
192-
markdown_builder.appendff("```js\n{}\n```\n\n- {}\n", text, description_value.to_byte_string());
191+
dbgln("```js\n{}\n```\n\n- {}\n", text, description_value.as_string());
192+
markdown_builder.appendff("```js\n{}\n```\n\n- {}\n", text, description_value.as_string());
193193
});
194194
}
195195

Userland/Applications/Spreadsheet/Spreadsheet.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,7 @@ ByteString Sheet::generate_inline_documentation_for(StringView function, size_t
731731
builder.append('<');
732732
else if (i >= argc)
733733
builder.append('[');
734-
builder.append(argnames[i].to_byte_string());
734+
builder.append(argnames[i].as_string());
735735
if (i == argument_index)
736736
builder.append('>');
737737
else if (i >= argc)

0 commit comments

Comments
 (0)