diff --git a/packages/quicktype-core/src/language/CPlusPlus/language.ts b/packages/quicktype-core/src/language/CPlusPlus/language.ts index c040e2e29..11947da0f 100644 --- a/packages/quicktype-core/src/language/CPlusPlus/language.ts +++ b/packages/quicktype-core/src/language/CPlusPlus/language.ts @@ -13,6 +13,7 @@ import { CPlusPlusRenderer } from "./CPlusPlusRenderer"; // FIXME: share with CJSON const namingStyles = { "pascal-case": "pascal", + "original-case": "original", "underscore-case": "underscore", "camel-case": "camel", "upper-underscore-case": "upper-underscore", diff --git a/packages/quicktype-core/src/support/Strings.ts b/packages/quicktype-core/src/support/Strings.ts index 0c4fd2175..4647c6ddc 100644 --- a/packages/quicktype-core/src/support/Strings.ts +++ b/packages/quicktype-core/src/support/Strings.ts @@ -11,7 +11,8 @@ export type NamingStyle = | "underscore" | "upper-underscore" | "pascal-upper-acronyms" - | "camel-upper-acronyms"; + | "camel-upper-acronyms" + | "original"; function computeAsciiMap(mapper: (codePoint: number) => string): { charNoEscapeMap: number[]; @@ -598,7 +599,8 @@ export function makeNameStyle( namingStyle === "pascal" || namingStyle === "camel" || namingStyle === "pascal-upper-acronyms" || - namingStyle === "camel-upper-acronyms" + namingStyle === "camel-upper-acronyms" || + namingStyle === "original" ) { separator = ""; if ( @@ -637,11 +639,17 @@ export function makeNameStyle( restAcronymStyle = allUpperWordStyle; break; + case "original": + firstWordStyle = restWordStyle = firstWordAcronymStyle = restAcronymStyle = originalWord; + break; default: return assertNever(namingStyle); } return (original: string) => { + if (namingStyle === "original") + return original; + const words = splitIntoWords(original); const styledName = combineWords(