Serenity Operating System
at master 64 lines 1.8 kB view raw
1/* 2 * Copyright (c) 2019-2021, Andreas Kling <kling@serenityos.org> 3 * Copyright (c) 2022, Samuel Atkins <atkinssj@serenityos.org> 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include <AK/DeprecatedString.h> 11#include <AK/JsonObject.h> 12#include <AK/Vector.h> 13#include <LibCore/File.h> 14#include <ctype.h> 15 16DeprecatedString title_casify(DeprecatedString const& dashy_name) 17{ 18 auto parts = dashy_name.split('-'); 19 StringBuilder builder; 20 for (auto& part : parts) { 21 if (part.is_empty()) 22 continue; 23 builder.append(toupper(part[0])); 24 if (part.length() == 1) 25 continue; 26 builder.append(part.substring_view(1, part.length() - 1)); 27 } 28 return builder.to_deprecated_string(); 29} 30 31DeprecatedString camel_casify(StringView dashy_name) 32{ 33 auto parts = dashy_name.split_view('-'); 34 StringBuilder builder; 35 bool first = true; 36 for (auto& part : parts) { 37 if (part.is_empty()) 38 continue; 39 char ch = part[0]; 40 if (!first) 41 ch = toupper(ch); 42 else 43 first = false; 44 builder.append(ch); 45 if (part.length() == 1) 46 continue; 47 builder.append(part.substring_view(1, part.length() - 1)); 48 } 49 return builder.to_deprecated_string(); 50} 51 52DeprecatedString snake_casify(DeprecatedString const& dashy_name) 53{ 54 return dashy_name.replace("-"sv, "_"sv, ReplaceMode::All); 55} 56 57ErrorOr<JsonValue> read_entire_file_as_json(StringView filename) 58{ 59 auto file = TRY(Core::File::open(filename, Core::File::OpenMode::Read)); 60 auto json_size = TRY(file->size()); 61 auto json_data = TRY(ByteBuffer::create_uninitialized(json_size)); 62 TRY(file->read_until_filled(json_data.bytes())); 63 return JsonValue::from_string(json_data); 64}