36 namespace fable::schema {
62 using Type = std::string;
64 String(Type* ptr, std::string desc) :
Base(JsonType::string, std::move(desc)), ptr_(ptr) {}
125 [[nodiscard]]
const std::string&
pattern()
const;
217 [[nodiscard]]
const std::vector<std::string>&
enum_of()
const;
228 [[nodiscard]]
String enum_of(std::vector<std::string>&& init) &&;
242 bool validate(
const Conf& c, std::optional<SchemaError>& err)
const override;
246 [[nodiscard]]
Json serialize(
const Type& x)
const;
247 [[nodiscard]] Type deserialize(
const Conf& c)
const;
248 void serialize_into(
Json& j,
const Type& x)
const { j = serialize(x); }
249 void deserialize_into(
const Conf& c, Type& x)
const { x = deserialize(c); }
253 bool interpolate_{
false};
254 size_t min_length_{0};
255 size_t max_length_{std::numeric_limits<size_t>::max()};
256 std::string pattern_{};
257 std::vector<std::string> enum_{};
262 template <
typename S>
263 String make_schema(std::string* ptr, S&& desc) {
264 return {ptr, std::forward<S>(desc)};
Definition: environment.hpp:34
Definition: interface.hpp:398
virtual Json to_json() const
Definition: interface.hpp:254
Definition: string.hpp:60
void set_enum_of(std::vector< std::string > &&init)
Definition: string.cpp:81
void set_pattern(const std::string &value)
Definition: string.cpp:55
size_t min_length() const
Definition: string.cpp:35
Environment * environment() const
Definition: string.cpp:73
void set_environment(Environment *env)
Definition: string.cpp:74
virtual Json to_json() const
Definition: interface.hpp:254
size_t max_length() const
Definition: string.cpp:47
void set_interpolate(bool value)
Definition: string.cpp:67
Json json_schema() const override
Definition: string.cpp:87
void set_min_length(size_t value)
Definition: string.cpp:36
void reset_ptr() override
Definition: string.cpp:138
const std::string & pattern() const
Definition: string.cpp:54
void set_max_length(size_t value)
Definition: string.cpp:48
String not_empty() &&
Definition: string.cpp:42
const std::vector< std::string > & enum_of() const
Definition: string.cpp:80
void from_conf(const Conf &c) override
Definition: string.cpp:152
bool validate(const Conf &c, std::optional< SchemaError > &err) const override
Definition: string.cpp:107
bool interpolate() const
Definition: string.cpp:66
String c_identifier() &&
Definition: string.cpp:61
nlohmann::json Json
Definition: fable_fwd.hpp:35
constexpr auto FABLE_REGEX_C_IDENTIFIER
Definition: string.hpp:44