diff --git a/languages/cpp/templates/callback-initialization/anyOf.cpp b/languages/cpp/templates/callback-initialization/anyOf.cpp index 30f233a7..92a17554 100644 --- a/languages/cpp/templates/callback-initialization/anyOf.cpp +++ b/languages/cpp/templates/callback-initialization/anyOf.cpp @@ -1 +1 @@ -{property}; + std::string ${property}; diff --git a/languages/cpp/templates/callback-result-instantiation/anyOf.cpp b/languages/cpp/templates/callback-result-instantiation/anyOf.cpp index 120561dd..6d8fa873 100644 --- a/languages/cpp/templates/callback-result-instantiation/anyOf.cpp +++ b/languages/cpp/templates/callback-result-instantiation/anyOf.cpp @@ -1 +1 @@ - ${property}; \ No newline at end of file + ${property} = proxyResponse->Value(); \ No newline at end of file diff --git a/languages/cpp/templates/json-types/anyOf.h b/languages/cpp/templates/json-types/anyOf.h index fc121f63..2d60a3c8 100644 --- a/languages/cpp/templates/json-types/anyOf.h +++ b/languages/cpp/templates/json-types/anyOf.h @@ -1 +1 @@ -WPEFramework::Core::JSON::VariantContainer \ No newline at end of file +FireboltSDK::JSON::String \ No newline at end of file diff --git a/languages/cpp/templates/json-types/property-assign.cpp b/languages/cpp/templates/json-types/property-assign.cpp index 36bdbf83..ffdad03d 100644 --- a/languages/cpp/templates/json-types/property-assign.cpp +++ b/languages/cpp/templates/json-types/property-assign.cpp @@ -1,2 +1,2 @@ - Add(_T("${property}"), &${Property}); + Add(_T("${property.raw}"), &${Property}); ${Property} = other.${Property}; diff --git a/languages/cpp/templates/json-types/property-register.cpp b/languages/cpp/templates/json-types/property-register.cpp index 01e2a7e0..e4f9a2b2 100644 --- a/languages/cpp/templates/json-types/property-register.cpp +++ b/languages/cpp/templates/json-types/property-register.cpp @@ -1 +1 @@ - Add(_T("${property}"), &${Property}); \ No newline at end of file + Add(_T("${property.raw}"), &${Property}); \ No newline at end of file diff --git a/src/macrofier/types.mjs b/src/macrofier/types.mjs index cba78534..5fa445f5 100644 --- a/src/macrofier/types.mjs +++ b/src/macrofier/types.mjs @@ -17,7 +17,7 @@ */ import deepmerge from 'deepmerge' -import { getPath, localizeDependencies, getSafeEnumKeyName } from '../shared/json-schema.mjs' +import { getPath, localizeDependencies, getSafeEnumKeyName, getSafeKeyName } from '../shared/json-schema.mjs' import path from "path" import { getConfig } from '../shared/configLoader.mjs' @@ -318,7 +318,7 @@ const insertObjectPatternPropertiesMacros = (content, schema, module, title, opt const getIndents = level => level ? ' ' : '' const wrapProp = name => name.match(/[/\.\+]/) ? `"${name}"` : name -const safePropName = name => config.enableStringPropertyKeys ? wrapProp(name) : getSafeEnumKeyName(name) +const safePropName = name => config.enableStringPropertyKeys ? wrapProp(name) : getSafeKeyName(name) const insertObjectMacros = (content, schema, module, title, property, options) => { const options2 = options ? JSON.parse(JSON.stringify(options)) : {} options2.parent = title @@ -350,6 +350,8 @@ const insertObjectMacros = (content, schema, module, title, property, options) = const description = getSchemaDescription(prop, module) let replacedTemplate = template .replace(/(^\s+)/g, '$1'.repeat(options2.level)) + .replace(/\$\{property.raw\}/g, name) //Gives the raw RPC propery name, even if it's unsafe + .replace(/\$\{Property.raw\}/g, capitalize(name)) .replace(/\$\{property\}/g, safePropName(name)) .replace(/\$\{Property\}/g, capitalize(safePropName(name))) .replace(/\$\{parent\.title\}/g, title) diff --git a/src/shared/json-schema.mjs b/src/shared/json-schema.mjs index f140cfd2..db13a833 100644 --- a/src/shared/json-schema.mjs +++ b/src/shared/json-schema.mjs @@ -520,6 +520,10 @@ function mergeOneOf(schema) { return union(schema.oneOf) } +const getSafeKeyName = (value) => value.split(':').pop() + .replace(/[\.\-]/g, '_') // replace dots and dashes + .replace(/\+/g, '_plus') // change + to _plus + const getSafeEnumKeyName = (value) => value.split(':').pop() // use last portion of urn:style:values .replace(/[\.\-]/g, '_') // replace dots and dashes .replace(/\+/g, '_plus') // change + to _plus @@ -529,6 +533,7 @@ const getSafeEnumKeyName = (value) => value.split(':').pop() export { getSchemaConstraints, + getSafeKeyName, getSafeEnumKeyName, getExternalSchemaPaths, getLocalSchemas,