29
29
30
30
import java .io .File ;
31
31
import java .util .*;
32
+ import java .util .regex .Matcher ;
33
+ import java .util .regex .Pattern ;
32
34
33
35
34
36
public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig {
@@ -156,12 +158,6 @@ public String modelFileFolder() {
156
158
157
159
@ Override
158
160
public String toParamName (String name ) {
159
- // should be the same as variable name
160
- return toVarName (name );
161
- }
162
-
163
- @ Override
164
- public String toVarName (String name ) {
165
161
// sanitize name
166
162
name = sanitizeName (name , "\\ W-[\\ $]" );
167
163
@@ -184,6 +180,33 @@ public String toVarName(String name) {
184
180
return name ;
185
181
}
186
182
183
+ @ Override
184
+ public String toVarName (String name ) {
185
+ name = this .toParamName (name );
186
+
187
+ // if the proprty name has any breaking characters such as :, ;, . etc.
188
+ // then wrap the name within single quotes.
189
+ // my:interface:property: string; => 'my:interface:property': string;
190
+ if (propertyHasBreakingCharacters (name )) {
191
+ name = "\' " + name + "\' " ;
192
+ }
193
+
194
+ return name ;
195
+ }
196
+
197
+ /**
198
+ * Checks whether property names have breaking characters like ':', '-'.
199
+ * @param str string to check for breaking characters
200
+ * @return <code>true</code> if breaking characters are present and <code>false</code> if not
201
+ */
202
+ private boolean propertyHasBreakingCharacters (String str ) {
203
+ final String regex = "^.*[+*:;,.()-]+.*$" ;
204
+ final Pattern pattern = Pattern .compile (regex );
205
+ final Matcher matcher = pattern .matcher (str );
206
+ boolean matches = matcher .matches ();
207
+ return matches ;
208
+ }
209
+
187
210
@ Override
188
211
public String toModelName (String name ) {
189
212
name = sanitizeName (name ); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
0 commit comments