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;
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 inline String make_schema(std::string* ptr, std::string desc) {
263 return {ptr, std::move(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:80
void set_pattern(const std::string &value)
Definition: string.cpp:54
size_t min_length() const
Definition: string.cpp:34
Environment * environment() const
Definition: string.cpp:72
void set_environment(Environment *env)
Definition: string.cpp:73
virtual Json to_json() const
Definition: interface.hpp:254
size_t max_length() const
Definition: string.cpp:46
void set_interpolate(bool value)
Definition: string.cpp:66
Json json_schema() const override
Definition: string.cpp:86
void set_min_length(size_t value)
Definition: string.cpp:35
void reset_ptr() override
Definition: string.cpp:137
const std::string & pattern() const
Definition: string.cpp:53
void set_max_length(size_t value)
Definition: string.cpp:47
String not_empty() &&
Definition: string.cpp:41
const std::vector< std::string > & enum_of() const
Definition: string.cpp:79
void from_conf(const Conf &c) override
Definition: string.cpp:151
bool validate(const Conf &c, std::optional< SchemaError > &err) const override
Definition: string.cpp:106
bool interpolate() const
Definition: string.cpp:65
String c_identifier() &&
Definition: string.cpp:60
nlohmann::json Json
Definition: fable_fwd.hpp:35
constexpr auto FABLE_REGEX_C_IDENTIFIER
Definition: string.hpp:44