@darabonba/python-generator 1.2.17 → 1.2.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ChangeLog.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ChangeLog
2
2
 
3
+ ## 1.2.19 - 2025-01-13
4
+ * Adjust field name for object.
5
+
6
+ ## 1.2.18 - 2024-02-29
7
+ * Fix: avoid keywords in variables.
8
+
3
9
  ## 1.2.17 - 2023-12-27
4
10
  * Fix: correct model name when first letter is capitalized && and some keywords
5
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darabonba/python-generator",
3
- "version": "1.2.17",
3
+ "version": "1.2.19",
4
4
  "description": "The darabonba generator for Python",
5
5
  "main": "src/generator.js",
6
6
  "directories": {
@@ -30,7 +30,7 @@
30
30
  "author": "Alibaba Cloud OpenAPI Team",
31
31
  "license": "Apache-2.0",
32
32
  "dependencies": {
33
- "@darabonba/parser": "^1.2.10",
33
+ "@darabonba/parser": "^1.4.7",
34
34
  "enum": "^3.0.4"
35
35
  }
36
36
  }
@@ -538,9 +538,9 @@ class Combinator extends CombinatorBase {
538
538
  this.emitComplexValidate(emitter, `k${depth}`, fieldType.itemType, depth + 1);
539
539
  this.levelDown();
540
540
  } else {
541
- emitter.emitln(`if self.${_name(name)}:`, this.level);
541
+ emitter.emitln(`if self.${_varName(name)}:`, this.level);
542
542
  this.levelUp();
543
- emitter.emitln(`for k in self.${_name(name)}:`, this.level);
543
+ emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
544
544
  this.levelUp();
545
545
  this.emitComplexValidate(emitter, 'k', fieldType.itemType, depth + 1);
546
546
  this.levelDown();
@@ -553,9 +553,9 @@ class Combinator extends CombinatorBase {
553
553
  this.emitComplexValidate(emitter, `v${depth}`, fieldType.valType, depth + 1);
554
554
  this.levelDown();
555
555
  } else {
556
- emitter.emitln(`if self.${_name(name)}:`, this.level);
556
+ emitter.emitln(`if self.${_varName(name)}:`, this.level);
557
557
  this.levelUp();
558
- emitter.emitln(`for v in self.${_name(name)}.values():`, this.level);
558
+ emitter.emitln(`for v in self.${_varName(name)}.values():`, this.level);
559
559
  this.levelUp();
560
560
  this.emitComplexValidate(emitter, 'v', fieldType.valType, depth + 1);
561
561
  this.levelDown();
@@ -587,29 +587,29 @@ class Combinator extends CombinatorBase {
587
587
 
588
588
  if (required.length > 0) {
589
589
  emitter.emitln(
590
- `self.validate_required(self.${_name(prop.name)}, '${_name(prop.name)}')`,
590
+ `self.validate_required(self.${_varName(prop.name)}, '${_varName(prop.name)}')`,
591
591
  this.level
592
592
  );
593
593
  haveValidate = true;
594
594
  }
595
595
  if (maxLength.length > 0 || pattern.length > 0 || maximum.length > 0 || minimum.length > 0) {
596
- emitter.emitln(`if self.${_name(prop.name)} is not None:`, this.level);
596
+ emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
597
597
  this.levelUp();
598
598
 
599
599
  if (maxLength.length > 0) {
600
- emitter.emitln(`self.validate_max_length(self.${_name(prop.name)}, '${_name(prop.name)}', ${maxLength[0].value})`, this.level);
600
+ emitter.emitln(`self.validate_max_length(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maxLength[0].value})`, this.level);
601
601
  }
602
602
 
603
603
  if (pattern.length > 0) {
604
- emitter.emitln(`self.validate_pattern(self.${_name(prop.name)}, '${_name(prop.name)}', '${pattern[0].value}')`, this.level);
604
+ emitter.emitln(`self.validate_pattern(self.${_varName(prop.name)}, '${_varName(prop.name)}', '${pattern[0].value}')`, this.level);
605
605
  }
606
606
 
607
607
  if (maximum.length > 0) {
608
- emitter.emitln(`self.validate_maximum(self.${_name(prop.name)}, '${_name(prop.name)}', ${maximum[0].value})`, this.level);
608
+ emitter.emitln(`self.validate_maximum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maximum[0].value})`, this.level);
609
609
  }
610
610
 
611
611
  if (minimum.length > 0) {
612
- emitter.emitln(`self.validate_minimum(self.${_name(prop.name)}, '${_name(prop.name)}', ${minimum[0].value})`, this.level);
612
+ emitter.emitln(`self.validate_minimum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${minimum[0].value})`, this.level);
613
613
  }
614
614
  this.levelDown();
615
615
  haveValidate = true;
@@ -624,9 +624,9 @@ class Combinator extends CombinatorBase {
624
624
  emitter.emit(emt.output);
625
625
  }
626
626
  } else if (prop.type.objectType === 'model') {
627
- emitter.emitln(`if self.${_name(prop.name)}:`, this.level);
627
+ emitter.emitln(`if self.${_varName(prop.name)}:`, this.level);
628
628
  this.levelUp();
629
- emitter.emitln(`self.${_name(prop.name)}.validate()`, this.level);
629
+ emitter.emitln(`self.${_varName(prop.name)}.validate()`, this.level);
630
630
  this.levelDown();
631
631
  haveValidate = true;
632
632
  }
@@ -666,9 +666,9 @@ class Combinator extends CombinatorBase {
666
666
  }
667
667
  } else {
668
668
  emitter.emitln(`result['${fieldName}'] = []`, this.level);
669
- emitter.emitln(`if self.${_name(name)} is not None:`, this.level);
669
+ emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
670
670
  this.levelUp();
671
- emitter.emitln(`for k in self.${_name(name)}:`, this.level);
671
+ emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
672
672
  this.levelUp();
673
673
  if (type.itemType.valType || type.itemType.itemType) {
674
674
  const propInfo = {
@@ -710,9 +710,9 @@ class Combinator extends CombinatorBase {
710
710
  }
711
711
  } else {
712
712
  emitter.emitln(`result['${fieldName}'] = {}`, this.level);
713
- emitter.emitln(`if self.${_name(name)} is not None:`, this.level);
713
+ emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
714
714
  this.levelUp();
715
- emitter.emitln(`for k, v in self.${_name(name)}.items():`, this.level);
715
+ emitter.emitln(`for k, v in self.${_varName(name)}.items():`, this.level);
716
716
  this.levelUp();
717
717
  if (type.valType.valType || type.valType.itemType) {
718
718
  const propInfo = {
@@ -769,19 +769,19 @@ class Combinator extends CombinatorBase {
769
769
  if (emt.needSave === true) {
770
770
  emitter.emit(emt.output);
771
771
  } else {
772
- emitter.emitln(`if self.${_name(prop.name)} is not None:`, this.level);
772
+ emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
773
773
  this.levelUp();
774
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}`, this.level);
774
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
775
775
  this.levelDown();
776
776
  }
777
777
 
778
778
  } else {
779
- emitter.emitln(`if self.${_name(prop.name)} is not None:`, this.level);
779
+ emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
780
780
  this.levelUp();
781
781
  if (prop.type.objectType === 'model') {
782
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}.to_map()`, this.level);
782
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}.to_map()`, this.level);
783
783
  } else {
784
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}`, this.level);
784
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
785
785
  }
786
786
  this.levelDown();
787
787
  }
@@ -819,7 +819,7 @@ class Combinator extends CombinatorBase {
819
819
  emitter.emitln(`${carrier}['k${num}'] = l${depth}`, this.level);
820
820
  }
821
821
  } else {
822
- emitter.emitln(`self.${_name(name)} = []`, this.level);
822
+ emitter.emitln(`self.${_varName(name)} = []`, this.level);
823
823
  emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
824
824
  this.levelUp();
825
825
  emitter.emitln(`for k in m.get('${fieldName}'):`, this.level);
@@ -831,11 +831,11 @@ class Combinator extends CombinatorBase {
831
831
  type: type.itemType,
832
832
  parentType: type.lexeme
833
833
  };
834
- this.emitComplexFromMap(emitter, propInfo, `self.${_name(name)}`, depth + 1);
834
+ this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
835
835
  } else {
836
836
  if (type.itemType.objectType === 'model') {
837
837
  emitter.emitln(`temp_model = ${type.itemType.lexeme}()`, this.level);
838
- emitter.emitln(`self.${_name(name)}.append(temp_model.from_map(k))`, this.level);
838
+ emitter.emitln(`self.${_varName(name)}.append(temp_model.from_map(k))`, this.level);
839
839
  emitter.needSave = true;
840
840
  } else {
841
841
  emitter.needSave = false;
@@ -865,7 +865,7 @@ class Combinator extends CombinatorBase {
865
865
  emitter.emitln(`${carrier}[k${num}] = d${depth}`, this.level);
866
866
  }
867
867
  } else {
868
- emitter.emitln(`self.${_name(name)} = {}`, this.level);
868
+ emitter.emitln(`self.${_varName(name)} = {}`, this.level);
869
869
  emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
870
870
  this.levelUp();
871
871
  emitter.emitln(`for k, v in m.get('${fieldName}').items():`, this.level);
@@ -877,11 +877,11 @@ class Combinator extends CombinatorBase {
877
877
  type: type.valType,
878
878
  parentType: type.lexeme
879
879
  };
880
- this.emitComplexFromMap(emitter, propInfo, `self.${_name(name)}`, depth + 1);
880
+ this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
881
881
  } else {
882
882
  if (type.valType.objectType === 'model') {
883
883
  emitter.emitln(`temp_model = ${type.valType.lexeme}()`, this.level);
884
- emitter.emitln(`self.${_name(name)}[k] = temp_model.from_map(v)`, this.level);
884
+ emitter.emitln(`self.${_varName(name)}[k] = temp_model.from_map(v)`, this.level);
885
885
  emitter.needSave = true;
886
886
  } else {
887
887
  emitter.needSave = false;
@@ -935,7 +935,7 @@ class Combinator extends CombinatorBase {
935
935
  } else {
936
936
  emitter.emitln(`if m.get('${name}') is not None:`, this.level);
937
937
  this.levelUp();
938
- emitter.emitln(`self.${_name(prop.name)} = m.get('${name}')`, this.level);
938
+ emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
939
939
  this.levelDown();
940
940
  }
941
941
  } else {
@@ -944,9 +944,9 @@ class Combinator extends CombinatorBase {
944
944
  if (prop.type.objectType === 'model') {
945
945
  let type = _type(prop.type);
946
946
  emitter.emitln(`temp_model = ${type}()`, this.level);
947
- emitter.emitln(`self.${_name(prop.name)} = temp_model.from_map(m['${name}'])`, this.level);
947
+ emitter.emitln(`self.${_varName(prop.name)} = temp_model.from_map(m['${name}'])`, this.level);
948
948
  } else {
949
- emitter.emitln(`self.${_name(prop.name)} = m.get('${name}')`, this.level);
949
+ emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
950
950
  }
951
951
  this.levelDown();
952
952
  }
@@ -1023,7 +1023,7 @@ class Combinator extends CombinatorBase {
1023
1023
  emitter.emitln(`# ${d}`, this.level);
1024
1024
  });
1025
1025
  }
1026
- emitter.emitln(`self.${_name(prop.name)} = ${_varName(prop.name)}`, this.level);
1026
+ emitter.emitln(`self.${_varName(prop.name)} = ${_varName(prop.name)}`, this.level);
1027
1027
  });
1028
1028
  if (construct.body.length > 0) {
1029
1029
  construct.body.forEach(gram => {
@@ -479,9 +479,9 @@ class Combinator extends CombinatorBase {
479
479
  this.emitComplexValidate(emitter, `k${depth}`, fieldType.itemType, depth + 1);
480
480
  this.levelDown();
481
481
  } else {
482
- emitter.emitln(`if self.${_name(name)}:`, this.level);
482
+ emitter.emitln(`if self.${_varName(name)}:`, this.level);
483
483
  this.levelUp();
484
- emitter.emitln(`for k in self.${_name(name)}:`, this.level);
484
+ emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
485
485
  this.levelUp();
486
486
  this.emitComplexValidate(emitter, 'k', fieldType.itemType, depth + 1);
487
487
  this.levelDown();
@@ -494,9 +494,9 @@ class Combinator extends CombinatorBase {
494
494
  this.emitComplexValidate(emitter, `v${depth}`, fieldType.valType, depth + 1);
495
495
  this.levelDown();
496
496
  } else {
497
- emitter.emitln(`if self.${_name(name)}:`, this.level);
497
+ emitter.emitln(`if self.${_varName(name)}:`, this.level);
498
498
  this.levelUp();
499
- emitter.emitln(`for v in self.${_name(name)}.values():`, this.level);
499
+ emitter.emitln(`for v in self.${_varName(name)}.values():`, this.level);
500
500
  this.levelUp();
501
501
  this.emitComplexValidate(emitter, 'v', fieldType.valType, depth + 1);
502
502
  this.levelDown();
@@ -528,29 +528,29 @@ class Combinator extends CombinatorBase {
528
528
 
529
529
  if (required.length > 0) {
530
530
  emitter.emitln(
531
- `self.validate_required(self.${_name(prop.name)}, '${_name(prop.name)}')`,
531
+ `self.validate_required(self.${_varName(prop.name)}, '${_varName(prop.name)}')`,
532
532
  this.level
533
533
  );
534
534
  haveValidate = true;
535
535
  }
536
536
  if (maxLength.length > 0 || pattern.length > 0 || maximum.length > 0 || minimum.length > 0) {
537
- emitter.emitln(`if self.${_name(prop.name)} is not None:`, this.level);
537
+ emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
538
538
  this.levelUp();
539
539
 
540
540
  if (maxLength.length > 0) {
541
- emitter.emitln(`self.validate_max_length(self.${_name(prop.name)}, '${_name(prop.name)}', ${maxLength[0].value})`, this.level);
541
+ emitter.emitln(`self.validate_max_length(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maxLength[0].value})`, this.level);
542
542
  }
543
543
 
544
544
  if (pattern.length > 0) {
545
- emitter.emitln(`self.validate_pattern(self.${_name(prop.name)}, '${_name(prop.name)}', '${pattern[0].value}')`, this.level);
545
+ emitter.emitln(`self.validate_pattern(self.${_varName(prop.name)}, '${_varName(prop.name)}', '${pattern[0].value}')`, this.level);
546
546
  }
547
547
 
548
548
  if (maximum.length > 0) {
549
- emitter.emitln(`self.validate_maximum(self.${_name(prop.name)}, '${_name(prop.name)}', ${maximum[0].value})`, this.level);
549
+ emitter.emitln(`self.validate_maximum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${maximum[0].value})`, this.level);
550
550
  }
551
551
 
552
552
  if (minimum.length > 0) {
553
- emitter.emitln(`self.validate_minimum(self.${_name(prop.name)}, '${_name(prop.name)}', ${minimum[0].value})`, this.level);
553
+ emitter.emitln(`self.validate_minimum(self.${_varName(prop.name)}, '${_varName(prop.name)}', ${minimum[0].value})`, this.level);
554
554
  }
555
555
  this.levelDown();
556
556
  haveValidate = true;
@@ -565,9 +565,9 @@ class Combinator extends CombinatorBase {
565
565
  emitter.emit(emt.output);
566
566
  }
567
567
  } else if (prop.type.objectType === 'model') {
568
- emitter.emitln(`if self.${_name(prop.name)}:`, this.level);
568
+ emitter.emitln(`if self.${_varName(prop.name)}:`, this.level);
569
569
  this.levelUp();
570
- emitter.emitln(`self.${_name(prop.name)}.validate()`, this.level);
570
+ emitter.emitln(`self.${_varName(prop.name)}.validate()`, this.level);
571
571
  this.levelDown();
572
572
  haveValidate = true;
573
573
  }
@@ -607,9 +607,9 @@ class Combinator extends CombinatorBase {
607
607
  }
608
608
  } else {
609
609
  emitter.emitln(`result['${fieldName}'] = []`, this.level);
610
- emitter.emitln(`if self.${_name(name)} is not None:`, this.level);
610
+ emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
611
611
  this.levelUp();
612
- emitter.emitln(`for k in self.${_name(name)}:`, this.level);
612
+ emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
613
613
  this.levelUp();
614
614
  if (type.itemType.valType || type.itemType.itemType) {
615
615
  const propInfo = {
@@ -651,9 +651,9 @@ class Combinator extends CombinatorBase {
651
651
  }
652
652
  } else {
653
653
  emitter.emitln(`result['${fieldName}'] = {}`, this.level);
654
- emitter.emitln(`if self.${_name(name)} is not None:`, this.level);
654
+ emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
655
655
  this.levelUp();
656
- emitter.emitln(`for k, v in self.${_name(name)}.items():`, this.level);
656
+ emitter.emitln(`for k, v in self.${_varName(name)}.items():`, this.level);
657
657
  this.levelUp();
658
658
  if (type.valType.valType || type.valType.itemType) {
659
659
  const propInfo = {
@@ -710,19 +710,19 @@ class Combinator extends CombinatorBase {
710
710
  if (emt.needSave === true) {
711
711
  emitter.emit(emt.output);
712
712
  } else {
713
- emitter.emitln(`if self.${_name(prop.name)} is not None:`, this.level);
713
+ emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
714
714
  this.levelUp();
715
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}`, this.level);
715
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
716
716
  this.levelDown();
717
717
  }
718
718
 
719
719
  } else {
720
- emitter.emitln(`if self.${_name(prop.name)} is not None:`, this.level);
720
+ emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
721
721
  this.levelUp();
722
722
  if (prop.type.objectType === 'model') {
723
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}.to_map()`, this.level);
723
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}.to_map()`, this.level);
724
724
  } else {
725
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}`, this.level);
725
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
726
726
  }
727
727
  this.levelDown();
728
728
  }
@@ -760,7 +760,7 @@ class Combinator extends CombinatorBase {
760
760
  emitter.emitln(`${carrier}['k${num}'] = l${depth}`, this.level);
761
761
  }
762
762
  } else {
763
- emitter.emitln(`self.${_name(name)} = []`, this.level);
763
+ emitter.emitln(`self.${_varName(name)} = []`, this.level);
764
764
  emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
765
765
  this.levelUp();
766
766
  emitter.emitln(`for k in m.get('${fieldName}'):`, this.level);
@@ -772,11 +772,11 @@ class Combinator extends CombinatorBase {
772
772
  type: type.itemType,
773
773
  parentType: type.lexeme
774
774
  };
775
- this.emitComplexFromMap(emitter, propInfo, `self.${_name(name)}`, depth + 1);
775
+ this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
776
776
  } else {
777
777
  if (type.itemType.objectType === 'model') {
778
778
  emitter.emitln(`temp_model = ${type.itemType.lexeme}()`, this.level);
779
- emitter.emitln(`self.${_name(name)}.append(temp_model.from_map(k))`, this.level);
779
+ emitter.emitln(`self.${_varName(name)}.append(temp_model.from_map(k))`, this.level);
780
780
  emitter.needSave = true;
781
781
  } else {
782
782
  emitter.needSave = false;
@@ -806,7 +806,7 @@ class Combinator extends CombinatorBase {
806
806
  emitter.emitln(`${carrier}[k${num}] = d${depth}`, this.level);
807
807
  }
808
808
  } else {
809
- emitter.emitln(`self.${_name(name)} = {}`, this.level);
809
+ emitter.emitln(`self.${_varName(name)} = {}`, this.level);
810
810
  emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
811
811
  this.levelUp();
812
812
  emitter.emitln(`for k, v in m.get('${fieldName}').items():`, this.level);
@@ -818,11 +818,11 @@ class Combinator extends CombinatorBase {
818
818
  type: type.valType,
819
819
  parentType: type.lexeme
820
820
  };
821
- this.emitComplexFromMap(emitter, propInfo, `self.${_name(name)}`, depth + 1);
821
+ this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
822
822
  } else {
823
823
  if (type.valType.objectType === 'model') {
824
824
  emitter.emitln(`temp_model = ${type.valType.lexeme}()`, this.level);
825
- emitter.emitln(`self.${_name(name)}[k] = temp_model.from_map(v)`, this.level);
825
+ emitter.emitln(`self.${_varName(name)}[k] = temp_model.from_map(v)`, this.level);
826
826
  emitter.needSave = true;
827
827
  } else {
828
828
  emitter.needSave = false;
@@ -876,7 +876,7 @@ class Combinator extends CombinatorBase {
876
876
  } else {
877
877
  emitter.emitln(`if m.get('${name}') is not None:`, this.level);
878
878
  this.levelUp();
879
- emitter.emitln(`self.${_name(prop.name)} = m.get('${name}')`, this.level);
879
+ emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
880
880
  this.levelDown();
881
881
  }
882
882
  } else {
@@ -885,9 +885,9 @@ class Combinator extends CombinatorBase {
885
885
  if (prop.type.objectType === 'model') {
886
886
  let type = _type(prop.type);
887
887
  emitter.emitln(`temp_model = ${type}()`, this.level);
888
- emitter.emitln(`self.${_name(prop.name)} = temp_model.from_map(m['${name}'])`, this.level);
888
+ emitter.emitln(`self.${_varName(prop.name)} = temp_model.from_map(m['${name}'])`, this.level);
889
889
  } else {
890
- emitter.emitln(`self.${_name(prop.name)} = m.get('${name}')`, this.level);
890
+ emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
891
891
  }
892
892
  this.levelDown();
893
893
  }
@@ -965,7 +965,7 @@ class Combinator extends CombinatorBase {
965
965
  }
966
966
 
967
967
  const fieldType = this.typeHint(prop.type);
968
- emitter.emitln(`self.${_name(prop.name)} = ${_varName(prop.name)} # type: ${fieldType}`, this.level);
968
+ emitter.emitln(`self.${_varName(prop.name)} = ${_varName(prop.name)} # type: ${fieldType}`, this.level);
969
969
  });
970
970
  if (construct.body.length > 0) {
971
971
  construct.body.forEach(gram => {
package/src/lib/helper.js CHANGED
@@ -41,7 +41,12 @@ function _subModelName(name) {
41
41
  }
42
42
 
43
43
  function _string(str) {
44
- return str.string;
44
+ if (str.string === '""') {
45
+ return '\\"\\"';
46
+ }
47
+ return str.string.replace(/([^\\])"+|^"/g, function (str) {
48
+ return str.replace(/"/g, '\\"');
49
+ });
45
50
  }
46
51
 
47
52
  function _isBasicType(type) {
@@ -172,9 +177,14 @@ function _toSnakeCase(str) {
172
177
  return res;
173
178
  }
174
179
 
180
+ function _escape(str) {
181
+ return str.includes('-') ? `${str}` : str;
182
+ }
183
+
175
184
 
176
185
  module.exports = {
177
186
  _config,
187
+ _escape,
178
188
  _upperFirst,
179
189
  _camelCase,
180
190
  _string,
@@ -3,6 +3,8 @@
3
3
  const debug = require('../lib/debug');
4
4
 
5
5
  const {
6
+ _string,
7
+ _escape,
6
8
  _isBasicType
7
9
  } = require('../lib/helper');
8
10
 
@@ -176,7 +178,7 @@ class BaseResolver {
176
178
  } else if (typeNode.type === 'modelBody') {
177
179
  // is sub model
178
180
  typeInfo['objectType'] = 'model';
179
- typeInfo['lexeme'] = this.combinator.addModelInclude([this.object.name, sourceNode.fieldName.lexeme].join('.'));
181
+ typeInfo['lexeme'] = this.combinator.addModelInclude([this.object.name, _escape(sourceNode.fieldName.lexeme) || _string(sourceNode.fieldName)].join('.'));
180
182
  return typeInfo;
181
183
  } else if (_isBasicType(typeNode.type)) {
182
184
  return this.resolveType(typeNode.type, typeNode);
@@ -43,7 +43,10 @@ const {
43
43
  } = require('../langs/common/enum');
44
44
 
45
45
  const {
46
- _isBasicType
46
+ _isBasicType,
47
+ _string,
48
+ _escape
49
+
47
50
  } = require('../lib/helper');
48
51
 
49
52
  const systemPackage = ['Util'];
@@ -158,7 +161,7 @@ class ClientResolver extends BaseResolver {
158
161
  ast.params.params.forEach(p => {
159
162
  var param = new GrammerValue();
160
163
  param.type = this.resolveType(p.paramType, p);
161
- param.key = p.paramName.lexeme;
164
+ param.key = _escape(p.paramName.lexeme || _string(p.paramName));
162
165
  if (p.needValidate) {
163
166
  func.addBodyNode(new GrammerCall('method', [
164
167
  { type: 'object', name: param.key },
@@ -450,8 +453,8 @@ class ClientResolver extends BaseResolver {
450
453
  valGrammer.needCast = true;
451
454
  exprChild.isExpand = true;
452
455
  }
453
- if (field.fieldName && field.fieldName.lexeme) {
454
- exprChild.key = field.fieldName.lexeme;
456
+ if (field.fieldName && (field.fieldName.lexeme || field.fieldName.string)) {
457
+ exprChild.key = (field.fieldName.lexeme) || _string(field.fieldName);
455
458
  }
456
459
  this.renderGrammerValue(exprChild, field.expr, expectedType);
457
460
  this.findComments(valGrammer, field);
@@ -6,7 +6,9 @@ const assert = require('assert');
6
6
  const BaseResolver = require('./base');
7
7
 
8
8
  const {
9
- _isBasicType
9
+ _string,
10
+ _escape,
11
+ _isBasicType,
10
12
  } = require('../lib/helper');
11
13
 
12
14
  const {
@@ -95,7 +97,7 @@ class ModelResolver extends BaseResolver {
95
97
 
96
98
  const prop = new PropItem();
97
99
  prop.belong = object.index;
98
- prop.name = node.fieldName.lexeme;
100
+ prop.name = _escape(node.fieldName.lexeme) || _string(node.fieldName);
99
101
  prop.type = this.resolveType(node.fieldValue, node);
100
102
 
101
103
  prop.modify.push(Modify.public());
@@ -141,7 +143,7 @@ class ModelResolver extends BaseResolver {
141
143
  }
142
144
 
143
145
  findSubModelsUsed(node, subModelUsed = [], pre = '') {
144
- let name = node.fieldName.lexeme;
146
+ let name = _escape(node.fieldName.lexeme) || _string(node.fieldName);
145
147
  if (pre !== '') {
146
148
  name = pre + '.' + name;
147
149
  }
@@ -162,11 +162,11 @@ class ComplexRequest(TeaModel):
162
162
  # test keywords
163
163
  self.from_ = from_ # type: str
164
164
  # test keywords
165
- self.self = self_ # type: str
165
+ self.self_ = self_ # type: str
166
166
  # test keywords
167
- self.print = print_ # type: str
167
+ self.print_ = print_ # type: str
168
168
  # test keywords
169
- self.exec = exec_ # type: str
169
+ self.exec_ = exec_ # type: str
170
170
 
171
171
  def validate(self):
172
172
  self.validate_required(self.access_key, 'access_key')
@@ -199,9 +199,9 @@ class ComplexRequest(TeaModel):
199
199
  if k2:
200
200
  k2.validate()
201
201
  self.validate_required(self.from_, 'from_')
202
- self.validate_required(self.self, 'self')
203
- self.validate_required(self.print, 'print')
204
- self.validate_required(self.exec, 'exec')
202
+ self.validate_required(self.self_, 'self_')
203
+ self.validate_required(self.print_, 'print_')
204
+ self.validate_required(self.exec_, 'exec_')
205
205
 
206
206
  def to_map(self):
207
207
  _map = super(ComplexRequest, self).to_map()
@@ -249,12 +249,12 @@ class ComplexRequest(TeaModel):
249
249
  result['ComplexList2'].append(l1)
250
250
  if self.from_ is not None:
251
251
  result['from'] = self.from_
252
- if self.self is not None:
253
- result['self'] = self.self
254
- if self.print is not None:
255
- result['print'] = self.print
256
- if self.exec is not None:
257
- result['exec'] = self.exec
252
+ if self.self_ is not None:
253
+ result['self'] = self.self_
254
+ if self.print_ is not None:
255
+ result['print'] = self.print_
256
+ if self.exec_ is not None:
257
+ result['exec'] = self.exec_
258
258
  return result
259
259
 
260
260
  def from_map(self, m=None):
@@ -305,11 +305,11 @@ class ComplexRequest(TeaModel):
305
305
  if m.get('from') is not None:
306
306
  self.from_ = m.get('from')
307
307
  if m.get('self') is not None:
308
- self.self = m.get('self')
308
+ self.self_ = m.get('self')
309
309
  if m.get('print') is not None:
310
- self.print = m.get('print')
310
+ self.print_ = m.get('print')
311
311
  if m.get('exec') is not None:
312
- self.exec = m.get('exec')
312
+ self.exec_ = m.get('exec')
313
313
  return self
314
314
 
315
315
 
@@ -18,7 +18,9 @@ class Client(object):
18
18
  m = {}
19
19
  return TeaCore.merge({
20
20
  'key': 'value',
21
- 'key-1': 'value-1'
21
+ 'key-1': 'value-1',
22
+ 'key-2': 'value-2',
23
+ '\"\"': 'value-3'
22
24
  }, m)
23
25
 
24
26
  @staticmethod
@@ -145,7 +145,8 @@ class MyModel(TeaModel):
145
145
  def __init__(self, stringfield=None, bytesfield=None, stringarrayfield=None, mapfield=None, name=None,
146
146
  submodel=None, subarray=None, maparray=None, object=None, numberfield=None, readable=None, exist_model=None,
147
147
  class_end_time=None, max_length=None, min_length=None, maximum=None, minimum=None, test_3=None,
148
- array_array_model=None, array_map_model=None, map_model=None, submodel_map=None, sub_model_model=None):
148
+ array_array_model=None, array_map_model=None, map_model=None, submodel_map=None, sub_model_model=None,
149
+ map_array_map=None, map_array_model=None):
149
150
  self.stringfield = stringfield # type: str
150
151
  self.bytesfield = bytesfield # type: bytes
151
152
  self.stringarrayfield = stringarrayfield # type: list[str]
@@ -175,6 +176,8 @@ class MyModel(TeaModel):
175
176
  self.map_model = map_model # type: dict[str, M]
176
177
  self.submodel_map = submodel_map # type: dict[str, MyModelSubmodel]
177
178
  self.sub_model_model = sub_model_model # type: MyModelSubModelModel
179
+ self.map_array_map = map_array_map # type: dict[str, list[dict[str, str]]]
180
+ self.map_array_model = map_array_model # type: dict[str, list[M]]
178
181
 
179
182
  def validate(self):
180
183
  self.validate_required(self.stringfield, 'stringfield')
@@ -226,6 +229,11 @@ class MyModel(TeaModel):
226
229
  self.validate_required(self.sub_model_model, 'sub_model_model')
227
230
  if self.sub_model_model:
228
231
  self.sub_model_model.validate()
232
+ if self.map_array_model:
233
+ for v in self.map_array_model.values():
234
+ for k1 in v:
235
+ if k1:
236
+ k1.validate()
229
237
 
230
238
  def to_map(self):
231
239
  _map = super(MyModel, self).to_map()
@@ -244,13 +252,13 @@ class MyModel(TeaModel):
244
252
  if self.name is not None:
245
253
  result['realName'] = self.name
246
254
  if self.submodel is not None:
247
- result['submodel'] = self.submodel.to_map()
248
- result['subarray'] = []
255
+ result['SubModel'] = self.submodel.to_map()
256
+ result['SubArray'] = []
249
257
  if self.subarray is not None:
250
258
  for k in self.subarray:
251
- result['subarray'].append(k.to_map() if k else None)
259
+ result['SubArray'].append(k.to_map() if k else None)
252
260
  if self.maparray is not None:
253
- result['maparray'] = self.maparray
261
+ result['MapArray'] = self.maparray
254
262
  if self.object is not None:
255
263
  result['object'] = self.object
256
264
  if self.numberfield is not None:
@@ -271,30 +279,39 @@ class MyModel(TeaModel):
271
279
  result['minimum'] = self.minimum
272
280
  if self.test_3 is not None:
273
281
  result['test3'] = self.test_3
274
- result['arrayArrayModel'] = []
282
+ result['ArrayArrayModel'] = []
275
283
  if self.array_array_model is not None:
276
284
  for k in self.array_array_model:
277
285
  l1 = []
278
286
  for k1 in k:
279
287
  l1.append(k1.to_map() if k1 else None)
280
- result['arrayArrayModel'].append(l1)
281
- result['arrayMapModel'] = []
288
+ result['ArrayArrayModel'].append(l1)
289
+ result['ArrayMapModel'] = []
282
290
  if self.array_map_model is not None:
283
291
  for k in self.array_map_model:
284
292
  d1 = {}
285
293
  for k1 ,v1 in k.items():
286
294
  d1[k1] = v1.to_map()
287
- result['arrayMapModel'].append(d1)
288
- result['mapModel'] = {}
295
+ result['ArrayMapModel'].append(d1)
296
+ result['MapModel'] = {}
289
297
  if self.map_model is not None:
290
298
  for k, v in self.map_model.items():
291
- result['mapModel'][k] = v.to_map()
292
- result['submodelMap'] = {}
299
+ result['MapModel'][k] = v.to_map()
300
+ result['SubmodelMap'] = {}
293
301
  if self.submodel_map is not None:
294
302
  for k, v in self.submodel_map.items():
295
- result['submodelMap'][k] = v.to_map()
303
+ result['SubmodelMap'][k] = v.to_map()
296
304
  if self.sub_model_model is not None:
297
- result['subModelModel'] = self.sub_model_model.to_map()
305
+ result['SubModelModel'] = self.sub_model_model.to_map()
306
+ if self.map_array_map is not None:
307
+ result['MapArrayMap'] = self.map_array_map
308
+ result['MapArrayModel'] = {}
309
+ if self.map_array_model is not None:
310
+ for k, v in self.map_array_model.items():
311
+ l1 = []
312
+ for k1 in v:
313
+ l1.append(k1.to_map() if k1 else None)
314
+ result['MapArrayModel'][k] = l1
298
315
  return result
299
316
 
300
317
  def from_map(self, m=None):
@@ -309,16 +326,16 @@ class MyModel(TeaModel):
309
326
  self.mapfield = m.get('mapfield')
310
327
  if m.get('realName') is not None:
311
328
  self.name = m.get('realName')
312
- if m.get('submodel') is not None:
329
+ if m.get('SubModel') is not None:
313
330
  temp_model = MyModelSubmodel()
314
- self.submodel = temp_model.from_map(m['submodel'])
331
+ self.submodel = temp_model.from_map(m['SubModel'])
315
332
  self.subarray = []
316
- if m.get('subarray') is not None:
317
- for k in m.get('subarray'):
333
+ if m.get('SubArray') is not None:
334
+ for k in m.get('SubArray'):
318
335
  temp_model = M()
319
336
  self.subarray.append(temp_model.from_map(k))
320
- if m.get('maparray') is not None:
321
- self.maparray = m.get('maparray')
337
+ if m.get('MapArray') is not None:
338
+ self.maparray = m.get('MapArray')
322
339
  if m.get('object') is not None:
323
340
  self.object = m.get('object')
324
341
  if m.get('numberfield') is not None:
@@ -341,34 +358,44 @@ class MyModel(TeaModel):
341
358
  if m.get('test3') is not None:
342
359
  self.test_3 = m.get('test3')
343
360
  self.array_array_model = []
344
- if m.get('arrayArrayModel') is not None:
345
- for k in m.get('arrayArrayModel'):
361
+ if m.get('ArrayArrayModel') is not None:
362
+ for k in m.get('ArrayArrayModel'):
346
363
  l1 = []
347
364
  for k1 in k:
348
365
  temp_model = M()
349
366
  l1.append(temp_model.from_map(k1))
350
367
  self.array_array_model.append(l1)
351
368
  self.array_map_model = []
352
- if m.get('arrayMapModel') is not None:
353
- for k in m.get('arrayMapModel'):
369
+ if m.get('ArrayMapModel') is not None:
370
+ for k in m.get('ArrayMapModel'):
354
371
  d1 = {}
355
372
  for k1 ,v1 in k.items():
356
373
  temp_model = M()
357
374
  d1[k1] = temp_model.from_map(v1)
358
375
  self.array_map_model.append(d1)
359
376
  self.map_model = {}
360
- if m.get('mapModel') is not None:
361
- for k, v in m.get('mapModel').items():
377
+ if m.get('MapModel') is not None:
378
+ for k, v in m.get('MapModel').items():
362
379
  temp_model = M()
363
380
  self.map_model[k] = temp_model.from_map(v)
364
381
  self.submodel_map = {}
365
- if m.get('submodelMap') is not None:
366
- for k, v in m.get('submodelMap').items():
382
+ if m.get('SubmodelMap') is not None:
383
+ for k, v in m.get('SubmodelMap').items():
367
384
  temp_model = MyModelSubmodel()
368
385
  self.submodel_map[k] = temp_model.from_map(v)
369
- if m.get('subModelModel') is not None:
386
+ if m.get('SubModelModel') is not None:
370
387
  temp_model = MyModelSubModelModel()
371
- self.sub_model_model = temp_model.from_map(m['subModelModel'])
388
+ self.sub_model_model = temp_model.from_map(m['SubModelModel'])
389
+ if m.get('MapArrayMap') is not None:
390
+ self.map_array_map = m.get('MapArrayMap')
391
+ self.map_array_model = {}
392
+ if m.get('MapArrayModel') is not None:
393
+ for k, v in m.get('MapArrayModel').items():
394
+ l1 = []
395
+ for k1 in v:
396
+ temp_model = M()
397
+ l1.append(temp_model.from_map(k1))
398
+ self.map_array_model['k'] = l1
372
399
  return self
373
400
 
374
401
 
@@ -196,7 +196,7 @@ class ComplexRequest(TeaModel):
196
196
  # test keywords
197
197
  self.from_ = from_
198
198
  # test keywords
199
- self.self = self_
199
+ self.self_ = self_
200
200
  # test keywords
201
201
  self.print = print
202
202
  # test keywords
@@ -233,7 +233,7 @@ class ComplexRequest(TeaModel):
233
233
  if k2:
234
234
  k2.validate()
235
235
  self.validate_required(self.from_, 'from_')
236
- self.validate_required(self.self, 'self')
236
+ self.validate_required(self.self_, 'self_')
237
237
  self.validate_required(self.print, 'print')
238
238
  self.validate_required(self.exec, 'exec')
239
239
 
@@ -283,8 +283,8 @@ class ComplexRequest(TeaModel):
283
283
  result['ComplexList2'].append(l1)
284
284
  if self.from_ is not None:
285
285
  result['from'] = self.from_
286
- if self.self is not None:
287
- result['self'] = self.self
286
+ if self.self_ is not None:
287
+ result['self'] = self.self_
288
288
  if self.print is not None:
289
289
  result['print'] = self.print
290
290
  if self.exec is not None:
@@ -339,7 +339,7 @@ class ComplexRequest(TeaModel):
339
339
  if m.get('from') is not None:
340
340
  self.from_ = m.get('from')
341
341
  if m.get('self') is not None:
342
- self.self = m.get('self')
342
+ self.self_ = m.get('self')
343
343
  if m.get('print') is not None:
344
344
  self.print = m.get('print')
345
345
  if m.get('exec') is not None:
@@ -17,7 +17,9 @@ class Client:
17
17
  m = {}
18
18
  return TeaCore.merge({
19
19
  'key': 'value',
20
- 'key-1': 'value-1'
20
+ 'key-1': 'value-1',
21
+ 'key-2': 'value-2',
22
+ '\"\"': 'value-3'
21
23
  }, m)
22
24
 
23
25
  @staticmethod
@@ -197,6 +197,8 @@ class MyModel(TeaModel):
197
197
  map_model: Dict[str, M] = None,
198
198
  submodel_map: Dict[str, MyModelSubmodel] = None,
199
199
  sub_model_model: MyModelSubModelModel = None,
200
+ map_array_map: Dict[str, List[Dict[str, str]]] = None,
201
+ map_array_model: Dict[str, List[M]] = None,
200
202
  ):
201
203
  self.stringfield = stringfield
202
204
  self.bytesfield = bytesfield
@@ -227,6 +229,8 @@ class MyModel(TeaModel):
227
229
  self.map_model = map_model
228
230
  self.submodel_map = submodel_map
229
231
  self.sub_model_model = sub_model_model
232
+ self.map_array_map = map_array_map
233
+ self.map_array_model = map_array_model
230
234
 
231
235
  def validate(self):
232
236
  self.validate_required(self.stringfield, 'stringfield')
@@ -278,6 +282,11 @@ class MyModel(TeaModel):
278
282
  self.validate_required(self.sub_model_model, 'sub_model_model')
279
283
  if self.sub_model_model:
280
284
  self.sub_model_model.validate()
285
+ if self.map_array_model:
286
+ for v in self.map_array_model.values():
287
+ for k1 in v:
288
+ if k1:
289
+ k1.validate()
281
290
 
282
291
  def to_map(self):
283
292
  _map = super().to_map()
@@ -296,13 +305,13 @@ class MyModel(TeaModel):
296
305
  if self.name is not None:
297
306
  result['realName'] = self.name
298
307
  if self.submodel is not None:
299
- result['submodel'] = self.submodel.to_map()
300
- result['subarray'] = []
308
+ result['SubModel'] = self.submodel.to_map()
309
+ result['SubArray'] = []
301
310
  if self.subarray is not None:
302
311
  for k in self.subarray:
303
- result['subarray'].append(k.to_map() if k else None)
312
+ result['SubArray'].append(k.to_map() if k else None)
304
313
  if self.maparray is not None:
305
- result['maparray'] = self.maparray
314
+ result['MapArray'] = self.maparray
306
315
  if self.object is not None:
307
316
  result['object'] = self.object
308
317
  if self.numberfield is not None:
@@ -323,30 +332,39 @@ class MyModel(TeaModel):
323
332
  result['minimum'] = self.minimum
324
333
  if self.test_3 is not None:
325
334
  result['test3'] = self.test_3
326
- result['arrayArrayModel'] = []
335
+ result['ArrayArrayModel'] = []
327
336
  if self.array_array_model is not None:
328
337
  for k in self.array_array_model:
329
338
  l1 = []
330
339
  for k1 in k:
331
340
  l1.append(k1.to_map() if k1 else None)
332
- result['arrayArrayModel'].append(l1)
333
- result['arrayMapModel'] = []
341
+ result['ArrayArrayModel'].append(l1)
342
+ result['ArrayMapModel'] = []
334
343
  if self.array_map_model is not None:
335
344
  for k in self.array_map_model:
336
345
  d1 = {}
337
346
  for k1 ,v1 in k.items():
338
347
  d1[k1] = v1.to_map()
339
- result['arrayMapModel'].append(d1)
340
- result['mapModel'] = {}
348
+ result['ArrayMapModel'].append(d1)
349
+ result['MapModel'] = {}
341
350
  if self.map_model is not None:
342
351
  for k, v in self.map_model.items():
343
- result['mapModel'][k] = v.to_map()
344
- result['submodelMap'] = {}
352
+ result['MapModel'][k] = v.to_map()
353
+ result['SubmodelMap'] = {}
345
354
  if self.submodel_map is not None:
346
355
  for k, v in self.submodel_map.items():
347
- result['submodelMap'][k] = v.to_map()
356
+ result['SubmodelMap'][k] = v.to_map()
348
357
  if self.sub_model_model is not None:
349
- result['subModelModel'] = self.sub_model_model.to_map()
358
+ result['SubModelModel'] = self.sub_model_model.to_map()
359
+ if self.map_array_map is not None:
360
+ result['MapArrayMap'] = self.map_array_map
361
+ result['MapArrayModel'] = {}
362
+ if self.map_array_model is not None:
363
+ for k, v in self.map_array_model.items():
364
+ l1 = []
365
+ for k1 in v:
366
+ l1.append(k1.to_map() if k1 else None)
367
+ result['MapArrayModel'][k] = l1
350
368
  return result
351
369
 
352
370
  def from_map(self, m: dict = None):
@@ -361,16 +379,16 @@ class MyModel(TeaModel):
361
379
  self.mapfield = m.get('mapfield')
362
380
  if m.get('realName') is not None:
363
381
  self.name = m.get('realName')
364
- if m.get('submodel') is not None:
382
+ if m.get('SubModel') is not None:
365
383
  temp_model = MyModelSubmodel()
366
- self.submodel = temp_model.from_map(m['submodel'])
384
+ self.submodel = temp_model.from_map(m['SubModel'])
367
385
  self.subarray = []
368
- if m.get('subarray') is not None:
369
- for k in m.get('subarray'):
386
+ if m.get('SubArray') is not None:
387
+ for k in m.get('SubArray'):
370
388
  temp_model = M()
371
389
  self.subarray.append(temp_model.from_map(k))
372
- if m.get('maparray') is not None:
373
- self.maparray = m.get('maparray')
390
+ if m.get('MapArray') is not None:
391
+ self.maparray = m.get('MapArray')
374
392
  if m.get('object') is not None:
375
393
  self.object = m.get('object')
376
394
  if m.get('numberfield') is not None:
@@ -393,34 +411,44 @@ class MyModel(TeaModel):
393
411
  if m.get('test3') is not None:
394
412
  self.test_3 = m.get('test3')
395
413
  self.array_array_model = []
396
- if m.get('arrayArrayModel') is not None:
397
- for k in m.get('arrayArrayModel'):
414
+ if m.get('ArrayArrayModel') is not None:
415
+ for k in m.get('ArrayArrayModel'):
398
416
  l1 = []
399
417
  for k1 in k:
400
418
  temp_model = M()
401
419
  l1.append(temp_model.from_map(k1))
402
420
  self.array_array_model.append(l1)
403
421
  self.array_map_model = []
404
- if m.get('arrayMapModel') is not None:
405
- for k in m.get('arrayMapModel'):
422
+ if m.get('ArrayMapModel') is not None:
423
+ for k in m.get('ArrayMapModel'):
406
424
  d1 = {}
407
425
  for k1, v1 in k.items():
408
426
  temp_model = M()
409
427
  d1[k1] = temp_model.from_map(v1)
410
428
  self.array_map_model.append(d1)
411
429
  self.map_model = {}
412
- if m.get('mapModel') is not None:
413
- for k, v in m.get('mapModel').items():
430
+ if m.get('MapModel') is not None:
431
+ for k, v in m.get('MapModel').items():
414
432
  temp_model = M()
415
433
  self.map_model[k] = temp_model.from_map(v)
416
434
  self.submodel_map = {}
417
- if m.get('submodelMap') is not None:
418
- for k, v in m.get('submodelMap').items():
435
+ if m.get('SubmodelMap') is not None:
436
+ for k, v in m.get('SubmodelMap').items():
419
437
  temp_model = MyModelSubmodel()
420
438
  self.submodel_map[k] = temp_model.from_map(v)
421
- if m.get('subModelModel') is not None:
439
+ if m.get('SubModelModel') is not None:
422
440
  temp_model = MyModelSubModelModel()
423
- self.sub_model_model = temp_model.from_map(m['subModelModel'])
441
+ self.sub_model_model = temp_model.from_map(m['SubModelModel'])
442
+ if m.get('MapArrayMap') is not None:
443
+ self.map_array_map = m.get('MapArrayMap')
444
+ self.map_array_model = {}
445
+ if m.get('MapArrayModel') is not None:
446
+ for k, v in m.get('MapArrayModel').items():
447
+ l1 = []
448
+ for k1 in v:
449
+ temp_model = M()
450
+ l1.append(temp_model.from_map(k1))
451
+ self.map_array_model['k'] = l1
424
452
  return self
425
453
 
426
454
 
@@ -10,6 +10,8 @@ static function helloMap(): map[string]string {
10
10
  return {
11
11
  key = 'value',
12
12
  key-1 = 'value-1',
13
+ 'key-2' = 'value-2',
14
+ '""' = 'value-3',
13
15
  ...m,
14
16
  };
15
17
  }
@@ -16,9 +16,9 @@ model MyModel = {
16
16
  name: string(name='realName'),
17
17
  submodel: {
18
18
  stringfield: string,
19
- },
20
- subarray: [ M ],
21
- maparray: [ map[string]any ],
19
+ } (name='SubModel'),
20
+ subarray: [ M ] (name='SubArray'),
21
+ maparray: [ map[string]any ] (name='MapArray'),
22
22
  object: object,
23
23
  numberfield: integer,
24
24
  readable: readable,
@@ -29,15 +29,17 @@ model MyModel = {
29
29
  maximum?: long(description='校验最大值', example='10000', maximum='99000000'),
30
30
  minimum?: long(description='校验最小值', example='10000', minimum='0'),
31
31
  test3: [[string]](description='test3 desc', name='test3'),
32
- arrayArrayModel: [[M]],
33
- arrayMapModel: [ map[string]M ],
32
+ arrayArrayModel: [[M]] (name='ArrayArrayModel'),
33
+ arrayMapModel: [ map[string]M ] (name='ArrayMapModel'),
34
34
 
35
- mapModel: map[string]M,
36
- submodelMap: map[string]MyModel.submodel,
35
+ mapModel: map[string]M (name='MapModel'),
36
+ submodelMap: map[string]MyModel.submodel (name='SubmodelMap'),
37
37
 
38
38
  subModelModel: {
39
39
  subModel: [ M ]
40
- }
40
+ } (name='SubModelModel'),
41
+ mapArrayMap?: map[string][ map[string]string ] (name='MapArrayMap'),
42
+ mapArrayModel?: map[string][ M ] (name='MapArrayModel'),
41
43
  };
42
44
 
43
45
  model M = {