Skip to content

Commit b7d68e2

Browse files
authored
Merge pull request glideapps#3403 from glideapps/fix/ruby-datetime-schema
fix(ruby): validate date-time schema strings
2 parents b486fbd + 86d3d7d commit b7d68e2

3 files changed

Lines changed: 9 additions & 3 deletions

File tree

‎packages/quicktype-core/src/language/Ruby/RubyRenderer.ts‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,10 @@ export class RubyRenderer extends ConvenienceRenderer {
190190
optional,
191191
];
192192
},
193-
(_transformed) => [
194-
"Types::String.constrained(format: /\\A[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}\\z/i)",
193+
(transformed) => [
194+
transformed.kind === "uuid"
195+
? "Types::String.constrained(format: /\\A[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}\\z/i)"
196+
: "Types::String.constrained(format: /\\A\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d+)?(?:Z|[+-]\\d\\d:\\d\\d)\\z/i)",
195197
optional,
196198
],
197199
);

‎packages/quicktype-core/src/language/Ruby/language.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ export class RubyTargetLanguage extends TargetLanguage<
5656
}
5757

5858
public get stringTypeMapping() {
59-
return new Map([["uuid", "uuid"] as const]);
59+
return new Map([
60+
["uuid", "uuid"] as const,
61+
["date-time", "date-time"] as const,
62+
]);
6063
}
6164

6265
public get supportsOptionalClassProperties(): boolean {

‎test/languages.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,7 @@ export const RubyLanguage: Language = {
471471
"pattern",
472472
"strict-optional",
473473
"uuid",
474+
"date-time",
474475
],
475476
output: "TopLevel.rb",
476477
topLevel: "TopLevel",

0 commit comments

Comments
 (0)