@darabonba/python-generator 1.2.16 → 1.2.18

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.
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "npm" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
@@ -16,8 +16,7 @@ jobs:
16
16
 
17
17
  strategy:
18
18
  matrix:
19
- node-version: [12.x, 14.x, 16.x]
20
- # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
19
+ node-version: [12.x, 14.x, 16.x, 18.x, 20.x]
21
20
 
22
21
  steps:
23
22
  - uses: actions/checkout@v2
@@ -27,4 +26,5 @@ jobs:
27
26
  node-version: ${{ matrix.node-version }}
28
27
  - run: npm install
29
28
  - run: npm run ci
30
- - run: npm run test
29
+ - name: Upload coverage to Codecov
30
+ uses: codecov/codecov-action@v3
package/ChangeLog.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ChangeLog
2
2
 
3
+ ## 1.2.18 - 2024-02-29
4
+ * Fix: avoid keywords in variables.
5
+
6
+ ## 1.2.17 - 2023-12-27
7
+ * Fix: correct model name when first letter is capitalized && and some keywords
8
+
3
9
  ## 1.2.16 - 2023-09-13
4
10
  * Feat: support importing additional package
5
11
 
package/README-CN.md CHANGED
@@ -2,17 +2,15 @@
2
2
 
3
3
  # Darabonba Python 生成器
4
4
 
5
- [![NPM version][npm-image]][npm-url]
5
+ [![CI](https://github.com/aliyun/darabonba-python-generator/actions/workflows/ci.yml/badge.svg)](https://github.com/aliyun/darabonba-python-generator/actions/workflows/ci.yml)
6
6
  [![codecov][cov-image]][cov-url]
7
- [![David deps][david-image]][david-url]
7
+ [![NPM version][npm-image]][npm-url]
8
8
  [![npm download][download-image]][download-url]
9
9
 
10
10
  [npm-image]: https://img.shields.io/npm/v/@darabonba/python-generator.svg?style=flat-square
11
11
  [npm-url]: https://npmjs.org/package/@darabonba/python-generator
12
12
  [cov-image]: https://codecov.io/gh/aliyun/darabonba-python-generator/branch/master/graph/badge.svg
13
13
  [cov-url]: https://codecov.io/gh/aliyun/darabonba-python-generator
14
- [david-image]: https://img.shields.io/david/aliyun/darabonba-python-generator.svg?style=flat-square
15
- [david-url]: https://david-dm.org/aliyun/darabonba-python-generator
16
14
  [download-image]: https://img.shields.io/npm/dm/@darabonba/python-generator.svg?style=flat-square
17
15
  [download-url]: https://npmjs.org/package/@darabonba/python-generator
18
16
 
package/README.md CHANGED
@@ -2,17 +2,15 @@ English | [简体中文](/README-CN.md)
2
2
 
3
3
  # Darabonba Python Generator
4
4
 
5
- [![NPM version][npm-image]][npm-url]
5
+ [![CI](https://github.com/aliyun/darabonba-python-generator/actions/workflows/ci.yml/badge.svg)](https://github.com/aliyun/darabonba-python-generator/actions/workflows/ci.yml)
6
6
  [![codecov][cov-image]][cov-url]
7
- [![David deps][david-image]][david-url]
7
+ [![NPM version][npm-image]][npm-url]
8
8
  [![npm download][download-image]][download-url]
9
9
 
10
10
  [npm-image]: https://img.shields.io/npm/v/@darabonba/python-generator.svg?style=flat-square
11
11
  [npm-url]: https://npmjs.org/package/@darabonba/python-generator
12
12
  [cov-image]: https://codecov.io/gh/aliyun/darabonba-python-generator/branch/master/graph/badge.svg
13
13
  [cov-url]: https://codecov.io/gh/aliyun/darabonba-python-generator
14
- [david-image]: https://img.shields.io/david/aliyun/darabonba-python-generator.svg?style=flat-square
15
- [david-url]: https://david-dm.org/aliyun/darabonba-python-generator
16
14
  [download-image]: https://img.shields.io/npm/dm/@darabonba/python-generator.svg?style=flat-square
17
15
  [download-url]: https://npmjs.org/package/@darabonba/python-generator
18
16
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darabonba/python-generator",
3
- "version": "1.2.16",
3
+ "version": "1.2.18",
4
4
  "description": "The darabonba generator for Python",
5
5
  "main": "src/generator.js",
6
6
  "directories": {
@@ -8,9 +8,9 @@
8
8
  },
9
9
  "scripts": {
10
10
  "lint": "eslint --fix src/",
11
- "test": "mocha --reporter spec --timeout 3000 tests/*.tests.js",
12
- "test-cov": "nyc -r=lcov -r=html -r=text -r=json mocha -t 3000 -R spec tests/*.tests.js",
13
- "ci": "npm run lint && npm run test-cov && codecov"
11
+ "test": "mocha -R spec -t 3000 tests/*.tests.js",
12
+ "test-cov": "nyc -r=lcov -r=html -r=text -r=json npm run test",
13
+ "ci": "npm run lint && npm run test-cov"
14
14
  },
15
15
  "repository": {
16
16
  "type": "git",
@@ -18,12 +18,11 @@
18
18
  },
19
19
  "devDependencies": {
20
20
  "chai": "^4.2.0",
21
- "codecov": "^3.8.1",
22
- "eslint": "^7.14.0",
21
+ "eslint": "^8.55.0",
23
22
  "expect.js": "^0.3.1",
24
- "has-flag": "^4.0.0",
23
+ "has-flag": "^5.0.1",
25
24
  "mm": "^3.2.0",
26
- "mocha": "^8.2.1",
25
+ "mocha": "^10.2.0",
27
26
  "mocha-sinon": "^2.1.2",
28
27
  "nyc": "^15.1.0",
29
28
  "sinon": "^9.2.1"
@@ -4,7 +4,12 @@ module.exports = {
4
4
  indent: ' ',
5
5
  ext: '.tea',
6
6
  resolvePathByPackage: false,
7
- keywords: [],
7
+ keywords: {
8
+ general: [],
9
+ function: [],
10
+ class: [],
11
+ param_variables: []
12
+ },
8
13
  typeMap: {},
9
14
  symbolMap: {},
10
15
  modifyOrder: [],
@@ -31,7 +31,9 @@ const {
31
31
  _toSnakeCase,
32
32
  _toCamelCase,
33
33
  _avoidKeywords,
34
- _isKeywords,
34
+ _avoidFuncKeywords,
35
+ _avoidClassKeywords,
36
+ _avoidVarKeywords,
35
37
  _exception,
36
38
  _symbol,
37
39
  _deepClone,
@@ -46,6 +48,14 @@ function _name(name) {
46
48
  return _avoidKeywords(_toSnakeCase(name));
47
49
  }
48
50
 
51
+ function _varName(name){
52
+ return _avoidVarKeywords(_toSnakeCase(name));
53
+ }
54
+
55
+ function _funcName(name){
56
+ return _avoidFuncKeywords(_toSnakeCase(name));
57
+ }
58
+
49
59
  function _type(type) {
50
60
  const config = _config();
51
61
  let t = type instanceof Object ? type.lexeme : type;
@@ -446,10 +456,7 @@ class Combinator extends CombinatorBase {
446
456
  } else {
447
457
  className = name.split('.').map(item => _upperFirst(item)).join('');
448
458
  }
449
- if (_isKeywords(className)) {
450
- className = _avoidKeywords(className);
451
- }
452
- return _toCamelCase(className);
459
+ return _toCamelCase(_avoidClassKeywords(className));
453
460
  }
454
461
 
455
462
  emitClass(emitter, object) {
@@ -502,7 +509,7 @@ class Combinator extends CombinatorBase {
502
509
  } else if (p instanceof PropItem) {
503
510
  const type = this.getTypeHints(p.type);
504
511
  if (type) {
505
- emitter.emitln(`${_name(p.name)}: ${type} = None`, this.level);
512
+ emitter.emitln(`${_varName(p.name)}: ${type} = None`, this.level);
506
513
  }
507
514
  }
508
515
  });
@@ -531,9 +538,9 @@ class Combinator extends CombinatorBase {
531
538
  this.emitComplexValidate(emitter, `k${depth}`, fieldType.itemType, depth + 1);
532
539
  this.levelDown();
533
540
  } else {
534
- emitter.emitln(`if self.${_name(name)}:`, this.level);
541
+ emitter.emitln(`if self.${_varName(name)}:`, this.level);
535
542
  this.levelUp();
536
- emitter.emitln(`for k in self.${_name(name)}:`, this.level);
543
+ emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
537
544
  this.levelUp();
538
545
  this.emitComplexValidate(emitter, 'k', fieldType.itemType, depth + 1);
539
546
  this.levelDown();
@@ -546,9 +553,9 @@ class Combinator extends CombinatorBase {
546
553
  this.emitComplexValidate(emitter, `v${depth}`, fieldType.valType, depth + 1);
547
554
  this.levelDown();
548
555
  } else {
549
- emitter.emitln(`if self.${_name(name)}:`, this.level);
556
+ emitter.emitln(`if self.${_varName(name)}:`, this.level);
550
557
  this.levelUp();
551
- emitter.emitln(`for v in self.${_name(name)}.values():`, this.level);
558
+ emitter.emitln(`for v in self.${_varName(name)}.values():`, this.level);
552
559
  this.levelUp();
553
560
  this.emitComplexValidate(emitter, 'v', fieldType.valType, depth + 1);
554
561
  this.levelDown();
@@ -580,29 +587,29 @@ class Combinator extends CombinatorBase {
580
587
 
581
588
  if (required.length > 0) {
582
589
  emitter.emitln(
583
- `self.validate_required(self.${_name(prop.name)}, '${_name(prop.name)}')`,
590
+ `self.validate_required(self.${_varName(prop.name)}, '${_varName(prop.name)}')`,
584
591
  this.level
585
592
  );
586
593
  haveValidate = true;
587
594
  }
588
595
  if (maxLength.length > 0 || pattern.length > 0 || maximum.length > 0 || minimum.length > 0) {
589
- 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);
590
597
  this.levelUp();
591
598
 
592
599
  if (maxLength.length > 0) {
593
- 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);
594
601
  }
595
602
 
596
603
  if (pattern.length > 0) {
597
- 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);
598
605
  }
599
606
 
600
607
  if (maximum.length > 0) {
601
- 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);
602
609
  }
603
610
 
604
611
  if (minimum.length > 0) {
605
- 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);
606
613
  }
607
614
  this.levelDown();
608
615
  haveValidate = true;
@@ -617,9 +624,9 @@ class Combinator extends CombinatorBase {
617
624
  emitter.emit(emt.output);
618
625
  }
619
626
  } else if (prop.type.objectType === 'model') {
620
- emitter.emitln(`if self.${_name(prop.name)}:`, this.level);
627
+ emitter.emitln(`if self.${_varName(prop.name)}:`, this.level);
621
628
  this.levelUp();
622
- emitter.emitln(`self.${_name(prop.name)}.validate()`, this.level);
629
+ emitter.emitln(`self.${_varName(prop.name)}.validate()`, this.level);
623
630
  this.levelDown();
624
631
  haveValidate = true;
625
632
  }
@@ -659,9 +666,9 @@ class Combinator extends CombinatorBase {
659
666
  }
660
667
  } else {
661
668
  emitter.emitln(`result['${fieldName}'] = []`, this.level);
662
- emitter.emitln(`if self.${_name(name)} is not None:`, this.level);
669
+ emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
663
670
  this.levelUp();
664
- emitter.emitln(`for k in self.${_name(name)}:`, this.level);
671
+ emitter.emitln(`for k in self.${_varName(name)}:`, this.level);
665
672
  this.levelUp();
666
673
  if (type.itemType.valType || type.itemType.itemType) {
667
674
  const propInfo = {
@@ -670,7 +677,7 @@ class Combinator extends CombinatorBase {
670
677
  type: type.itemType,
671
678
  parentType: type.lexeme
672
679
  };
673
- this.emitComplexToMap(emitter, propInfo, `result['${name}']`, depth + 1);
680
+ this.emitComplexToMap(emitter, propInfo, `result['${fieldName}']`, depth + 1);
674
681
  } else {
675
682
  if (type.itemType.objectType === 'model') {
676
683
  emitter.emitln(`result['${fieldName}'].append(k.to_map() if k else None)`, this.level);
@@ -703,9 +710,9 @@ class Combinator extends CombinatorBase {
703
710
  }
704
711
  } else {
705
712
  emitter.emitln(`result['${fieldName}'] = {}`, this.level);
706
- emitter.emitln(`if self.${_name(name)} is not None:`, this.level);
713
+ emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
707
714
  this.levelUp();
708
- 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);
709
716
  this.levelUp();
710
717
  if (type.valType.valType || type.valType.itemType) {
711
718
  const propInfo = {
@@ -714,7 +721,7 @@ class Combinator extends CombinatorBase {
714
721
  type: type.valType,
715
722
  parentType: type.lexeme
716
723
  };
717
- this.emitComplexToMap(emitter, propInfo, `result['${name}']`, depth + 1);
724
+ this.emitComplexToMap(emitter, propInfo, `result['${fieldName}']`, depth + 1);
718
725
  } else {
719
726
  if (type.valType.objectType === 'model') {
720
727
  emitter.emitln(`result['${fieldName}'][k] = v.to_map()`, this.level);
@@ -762,19 +769,19 @@ class Combinator extends CombinatorBase {
762
769
  if (emt.needSave === true) {
763
770
  emitter.emit(emt.output);
764
771
  } else {
765
- 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);
766
773
  this.levelUp();
767
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}`, this.level);
774
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
768
775
  this.levelDown();
769
776
  }
770
777
 
771
778
  } else {
772
- 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);
773
780
  this.levelUp();
774
781
  if (prop.type.objectType === 'model') {
775
- 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);
776
783
  } else {
777
- emitter.emitln(`result['${name}'] = self.${_name(prop.name)}`, this.level);
784
+ emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}`, this.level);
778
785
  }
779
786
  this.levelDown();
780
787
  }
@@ -812,7 +819,7 @@ class Combinator extends CombinatorBase {
812
819
  emitter.emitln(`${carrier}['k${num}'] = l${depth}`, this.level);
813
820
  }
814
821
  } else {
815
- emitter.emitln(`self.${_name(name)} = []`, this.level);
822
+ emitter.emitln(`self.${_varName(name)} = []`, this.level);
816
823
  emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
817
824
  this.levelUp();
818
825
  emitter.emitln(`for k in m.get('${fieldName}'):`, this.level);
@@ -824,11 +831,11 @@ class Combinator extends CombinatorBase {
824
831
  type: type.itemType,
825
832
  parentType: type.lexeme
826
833
  };
827
- this.emitComplexFromMap(emitter, propInfo, `self.${_name(name)}`, depth + 1);
834
+ this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
828
835
  } else {
829
836
  if (type.itemType.objectType === 'model') {
830
837
  emitter.emitln(`temp_model = ${type.itemType.lexeme}()`, this.level);
831
- 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);
832
839
  emitter.needSave = true;
833
840
  } else {
834
841
  emitter.needSave = false;
@@ -858,7 +865,7 @@ class Combinator extends CombinatorBase {
858
865
  emitter.emitln(`${carrier}[k${num}] = d${depth}`, this.level);
859
866
  }
860
867
  } else {
861
- emitter.emitln(`self.${_name(name)} = {}`, this.level);
868
+ emitter.emitln(`self.${_varName(name)} = {}`, this.level);
862
869
  emitter.emitln(`if m.get('${fieldName}') is not None:`, this.level);
863
870
  this.levelUp();
864
871
  emitter.emitln(`for k, v in m.get('${fieldName}').items():`, this.level);
@@ -870,11 +877,11 @@ class Combinator extends CombinatorBase {
870
877
  type: type.valType,
871
878
  parentType: type.lexeme
872
879
  };
873
- this.emitComplexFromMap(emitter, propInfo, `self.${_name(name)}`, depth + 1);
880
+ this.emitComplexFromMap(emitter, propInfo, `self.${_varName(name)}`, depth + 1);
874
881
  } else {
875
882
  if (type.valType.objectType === 'model') {
876
883
  emitter.emitln(`temp_model = ${type.valType.lexeme}()`, this.level);
877
- 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);
878
885
  emitter.needSave = true;
879
886
  } else {
880
887
  emitter.needSave = false;
@@ -928,7 +935,7 @@ class Combinator extends CombinatorBase {
928
935
  } else {
929
936
  emitter.emitln(`if m.get('${name}') is not None:`, this.level);
930
937
  this.levelUp();
931
- emitter.emitln(`self.${_name(prop.name)} = m.get('${name}')`, this.level);
938
+ emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
932
939
  this.levelDown();
933
940
  }
934
941
  } else {
@@ -937,9 +944,9 @@ class Combinator extends CombinatorBase {
937
944
  if (prop.type.objectType === 'model') {
938
945
  let type = _type(prop.type);
939
946
  emitter.emitln(`temp_model = ${type}()`, this.level);
940
- 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);
941
948
  } else {
942
- emitter.emitln(`self.${_name(prop.name)} = m.get('${name}')`, this.level);
949
+ emitter.emitln(`self.${_varName(prop.name)} = m.get('${name}')`, this.level);
943
950
  }
944
951
  this.levelDown();
945
952
  }
@@ -956,9 +963,9 @@ class Combinator extends CombinatorBase {
956
963
  construct.params.forEach(param => {
957
964
  const typeHints = this.getTypeHints(param.type);
958
965
  if (param.value !== null && param.value !== 'null') {
959
- constructParams.push(`${_name(param.key)}: ${typeHints} = ${param.value},`);
966
+ constructParams.push(`${_varName(param.key)}: ${typeHints} = ${param.value},`);
960
967
  } else {
961
- constructParams.push(`${_name(param.key)}: ${typeHints},`);
968
+ constructParams.push(`${_varName(param.key)}: ${typeHints},`);
962
969
  }
963
970
  });
964
971
  emitter.emitln('def __init__(', this.level);
@@ -978,9 +985,9 @@ class Combinator extends CombinatorBase {
978
985
  if (prop instanceof PropItem) {
979
986
  const typeHints = this.getTypeHints(prop.type);
980
987
  if (typeHints === this.className) {
981
- emitter.emitln(`${_name(prop.name)}: '${typeHints}' = None,`, this.level);
988
+ emitter.emitln(`${_varName(prop.name)}: '${typeHints}' = None,`, this.level);
982
989
  } else {
983
- emitter.emitln(`${_name(prop.name)}: ${typeHints} = None,`, this.level);
990
+ emitter.emitln(`${_varName(prop.name)}: ${typeHints} = None,`, this.level);
984
991
  }
985
992
 
986
993
  }
@@ -1016,7 +1023,7 @@ class Combinator extends CombinatorBase {
1016
1023
  emitter.emitln(`# ${d}`, this.level);
1017
1024
  });
1018
1025
  }
1019
- emitter.emitln(`self.${_name(prop.name)} = ${_name(prop.name)}`, this.level);
1026
+ emitter.emitln(`self.${_varName(prop.name)} = ${_varName(prop.name)}`, this.level);
1020
1027
  });
1021
1028
  if (construct.body.length > 0) {
1022
1029
  construct.body.forEach(gram => {
@@ -1115,19 +1122,19 @@ class Combinator extends CombinatorBase {
1115
1122
  let selfVar = this.func_static ? '' : 'self';
1116
1123
 
1117
1124
  if (func.params.length > 0) {
1118
- emitter.emitln(`def ${_name(func.name)}_async(`);
1125
+ emitter.emitln(`def ${_funcName(func.name)}_async(`);
1119
1126
  this.levelUp();
1120
1127
  if (selfVar) {
1121
1128
  emitter.emitln(`${selfVar},`, this.level);
1122
1129
  }
1123
1130
  func.params.forEach(p => {
1124
1131
  const type = this.getTypeHints(p.type);
1125
- emitter.emitln(`${_name(p.key)}: ${type},`, this.level);
1132
+ emitter.emitln(`${_varName(p.key)}: ${type},`, this.level);
1126
1133
  });
1127
1134
  this.levelDown();
1128
1135
  emitter.emitln(`) -> ${rtype}:`, this.level);
1129
1136
  } else {
1130
- emitter.emit(`def ${_name(func.name)}_async(`);
1137
+ emitter.emit(`def ${_funcName(func.name)}_async(`);
1131
1138
  if (selfVar) {
1132
1139
  emitter.emit(`${selfVar}`);
1133
1140
  }
@@ -1158,19 +1165,19 @@ class Combinator extends CombinatorBase {
1158
1165
  let selfVar = this.func_static ? '' : 'self';
1159
1166
 
1160
1167
  if (func.params.length > 0) {
1161
- emitter.emitln(`def ${_name(func.name)}(`);
1168
+ emitter.emitln(`def ${_funcName(func.name)}(`);
1162
1169
  this.levelUp();
1163
1170
  if (selfVar) {
1164
1171
  emitter.emitln(`${selfVar},`, this.level);
1165
1172
  }
1166
1173
  func.params.forEach(p => {
1167
1174
  const type = this.getTypeHints(p.type);
1168
- emitter.emitln(`${_name(p.key)}: ${type},`, this.level);
1175
+ emitter.emitln(`${_varName(p.key)}: ${type},`, this.level);
1169
1176
  });
1170
1177
  this.levelDown();
1171
1178
  emitter.emitln(`) -> ${rtype}:`, this.level);
1172
1179
  } else {
1173
- emitter.emit(`def ${_name(func.name)}(`);
1180
+ emitter.emit(`def ${_funcName(func.name)}(`);
1174
1181
  if (selfVar) {
1175
1182
  emitter.emit(`${selfVar}`);
1176
1183
  }
@@ -1349,12 +1356,12 @@ class Combinator extends CombinatorBase {
1349
1356
  pre += `.${_name(path.name)}`;
1350
1357
  }
1351
1358
  } else if (path.type === 'object') {
1352
- pre += `${_name(_convertStaticParam(pathName))}`;
1359
+ pre += `${_varName(_convertStaticParam(pathName))}`;
1353
1360
  } else if (path.type === 'object_async') {
1354
1361
  if (this.aioMode) {
1355
- pre += `await ${_name(_convertStaticParam(pathName))}`;
1362
+ pre += `await ${_varName(_convertStaticParam(pathName))}`;
1356
1363
  } else {
1357
- pre += `${_name(_convertStaticParam(pathName))}`;
1364
+ pre += `${_varName(_convertStaticParam(pathName))}`;
1358
1365
  }
1359
1366
  } else if (path.type === 'object_static') {
1360
1367
  pre += `${_convertStaticParam(pathName)}`;
@@ -1365,24 +1372,24 @@ class Combinator extends CombinatorBase {
1365
1372
  pre += `${_convertStaticParam(pathName)}`;
1366
1373
  }
1367
1374
  } else if (path.type === 'call' || path.type === 'call_static') {
1368
- pre += `.${_name(pathName)}(${params})`;
1375
+ pre += `.${_funcName(pathName)}(${params})`;
1369
1376
  } else if (path.type === 'call_async' || path.type === 'call_static_async') {
1370
1377
  if (this.aioMode) {
1371
- pre += `.${_name(pathName)}_async(${params})`;
1378
+ pre += `.${_funcName(pathName)}_async(${params})`;
1372
1379
  } else {
1373
- pre += `.${_name(pathName)}(${params})`;
1380
+ pre += `.${_funcName(pathName)}(${params})`;
1374
1381
  }
1375
1382
  } else if (path.type === 'prop') {
1376
1383
  pre += `.${_name(pathName)}`;
1377
1384
  } else if (path.type === 'prop_static') {
1378
1385
  pre += `.${_name(pathName)}`;
1379
1386
  } else if (path.type === 'map') {
1380
- pre += path.isVar ? `.get(${_name(pathName)})` : `.get('${pathName}')`;
1387
+ pre += path.isVar ? `.get(${_varName(pathName)})` : `.get('${pathName}')`;
1381
1388
  } else if (path.type === 'map_set') {
1382
1389
  const quote = this._adaptedQuotes(pathName, emitter);
1383
1390
  pre += `[${quote}${pathName}${quote}]`;
1384
1391
  } else if (path.type === 'list') {
1385
- pre += path.isVar ? `[${_name(pathName)}]` : `[${pathName}]`;
1392
+ pre += path.isVar ? `[${_varName(pathName)}]` : `[${pathName}]`;
1386
1393
  } else {
1387
1394
  debug.stack(gram);
1388
1395
  }
@@ -1411,7 +1418,7 @@ class Combinator extends CombinatorBase {
1411
1418
  emitter.emit(`${name}()`);
1412
1419
  } else if (gram.varType === 'var' || gram.varType === 'const') {
1413
1420
  const name = gram.name ? gram.name : gram.key;
1414
- emitter.emit(`${_convertStaticParam(_name(name))}`);
1421
+ emitter.emit(`${_convertStaticParam(_varName(name))}`);
1415
1422
  } else {
1416
1423
  debug.stack(gram);
1417
1424
  }
@@ -1423,7 +1430,7 @@ class Combinator extends CombinatorBase {
1423
1430
  const quote = this._adaptedQuotes(gram.key, emitter);
1424
1431
  emitter.emit(`${quote}${gram.key}${quote}: `);
1425
1432
  } else {
1426
- emitter.emit(`${_name(gram.key)}=`, this.level);
1433
+ emitter.emit(`${_varName(gram.key)}=`, this.level);
1427
1434
  }
1428
1435
  }
1429
1436
  if (gram instanceof GrammerCall) {
@@ -1539,7 +1546,7 @@ class Combinator extends CombinatorBase {
1539
1546
  const quote = this._adaptedQuotes(gram.value, emitter);
1540
1547
  emitter.emit(`${quote}${gram.value}${quote}`);
1541
1548
  } else if (gram.type === 'param') {
1542
- emitter.emit(`${_convertStaticParam(_name(gram.value))}`);
1549
+ emitter.emit(`${_convertStaticParam(_varName(gram.value))}`);
1543
1550
  } else if (gram.type === 'call') {
1544
1551
  this.grammerCall(emitter, gram.value);
1545
1552
  } else if (gram.type === 'number') {
@@ -1759,7 +1766,7 @@ class Combinator extends CombinatorBase {
1759
1766
  gram.params.forEach(p => {
1760
1767
  let emit = new Emitter();
1761
1768
  if (p.key) {
1762
- emit.emit(`${_name(p.key)}`);
1769
+ emit.emit(`${_varName(p.key)}`);
1763
1770
  emit.emit('=');
1764
1771
  }
1765
1772
  if (typeof (p.value) === 'string') {
@@ -1789,7 +1796,7 @@ class Combinator extends CombinatorBase {
1789
1796
  this.grammerCall(emit, behavior.call);
1790
1797
 
1791
1798
  if (behavior.isVar) {
1792
- emitter.emit(`${emit.output}[${_name(behavior.key)}] = `, this.level);
1799
+ emitter.emit(`${emit.output}[${_varName(behavior.key)}] = `, this.level);
1793
1800
  } else {
1794
1801
  const quote = this._adaptedQuotes(behavior.key, emitter);
1795
1802
  emitter.emit(`${emit.output}[${quote}${behavior.key}${quote}] = `, this.level);
@@ -6,44 +6,50 @@ module.exports = {
6
6
  ...defaultConfig,
7
7
  indent: ' ',
8
8
  ext: '.py',
9
- keywords: [
10
- 'self',
11
- 'async',
12
- 'await',
13
- 'and',
14
- 'as',
15
- 'assert',
16
- 'break',
17
- 'class',
18
- 'continue',
19
- 'def',
20
- 'del',
21
- 'elif',
22
- 'else',
23
- 'except',
24
- 'finally',
25
- 'for',
26
- 'from',
27
- 'False',
28
- 'global',
29
- 'if',
30
- 'import',
31
- 'in',
32
- 'is',
33
- 'lambda',
34
- 'nonlocal',
35
- 'not',
36
- 'None',
37
- 'or',
38
- 'pass',
39
- 'raise',
40
- 'return',
41
- 'try',
42
- 'True',
43
- 'while',
44
- 'with',
45
- 'yield'
46
- ],
9
+ keywords: {
10
+ general: [
11
+ 'async',
12
+ 'await',
13
+ 'and',
14
+ 'as',
15
+ 'assert',
16
+ 'break',
17
+ 'class',
18
+ 'continue',
19
+ 'def',
20
+ 'del',
21
+ 'elif',
22
+ 'else',
23
+ 'except',
24
+ 'finally',
25
+ 'for',
26
+ 'from',
27
+ 'False',
28
+ 'global',
29
+ 'if',
30
+ 'import',
31
+ 'in',
32
+ 'is',
33
+ 'lambda',
34
+ 'nonlocal',
35
+ 'not',
36
+ 'None',
37
+ 'or',
38
+ 'pass',
39
+ 'raise',
40
+ 'return',
41
+ 'try',
42
+ 'True',
43
+ 'while',
44
+ 'with',
45
+ 'yield'
46
+ ],
47
+ function: [],
48
+ class: [],
49
+ param_variables: [
50
+ 'self'
51
+ ]
52
+ },
47
53
  symbolMap: {
48
54
  'ASSIGN': '=',
49
55
  'EQ': '==',