@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.
- package/.github/dependabot.yml +11 -0
- package/.github/workflows/ci.yml +3 -3
- package/ChangeLog.md +6 -0
- package/README-CN.md +2 -4
- package/README.md +2 -4
- package/package.json +7 -8
- package/src/langs/common/config.js +6 -1
- package/src/langs/python/combinator.js +69 -62
- package/src/langs/python/config.js +44 -38
- package/src/langs/python2/combinator.js +62 -55
- package/src/langs/python2/config.js +43 -34
- package/src/lib/helper.js +29 -2
- package/tests/expected/python2/complex/tea_python_tests/models.py +75 -1
- package/tests/expected/python2/import/setup.py +1 -1
- package/tests/expected/python3/complex/tea_python_tests/models.py +82 -1
- package/tests/expected/python3/import/setup.py +1 -1
- package/tests/fixtures/complex/main.dara +9 -1
- package/tests/lib.tests.js +18 -2
- package/tests/python2.tests.js +4 -2
- package/tests/python3.tests.js +4 -2
- package/tests/resolver.tests.js +3 -3
- package/tests/expected/python2/import/tea_python_tests/__pycache__/__init__.cpython-39.pyc +0 -0
|
@@ -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"
|
package/.github/workflows/ci.yml
CHANGED
|
@@ -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
|
-
-
|
|
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
|
-
[](https://github.com/aliyun/darabonba-python-generator/actions/workflows/ci.yml)
|
|
6
6
|
[![codecov][cov-image]][cov-url]
|
|
7
|
-
[![
|
|
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
|
-
[](https://github.com/aliyun/darabonba-python-generator/actions/workflows/ci.yml)
|
|
6
6
|
[![codecov][cov-image]][cov-url]
|
|
7
|
-
[![
|
|
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.
|
|
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
|
|
12
|
-
"test-cov": "nyc -r=lcov -r=html -r=text -r=json
|
|
13
|
-
"ci": "npm run lint && npm run test-cov
|
|
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
|
-
"
|
|
22
|
-
"eslint": "^7.14.0",
|
|
21
|
+
"eslint": "^8.55.0",
|
|
23
22
|
"expect.js": "^0.3.1",
|
|
24
|
-
"has-flag": "^
|
|
23
|
+
"has-flag": "^5.0.1",
|
|
25
24
|
"mm": "^3.2.0",
|
|
26
|
-
"mocha": "^
|
|
25
|
+
"mocha": "^10.2.0",
|
|
27
26
|
"mocha-sinon": "^2.1.2",
|
|
28
27
|
"nyc": "^15.1.0",
|
|
29
28
|
"sinon": "^9.2.1"
|
|
@@ -31,7 +31,9 @@ const {
|
|
|
31
31
|
_toSnakeCase,
|
|
32
32
|
_toCamelCase,
|
|
33
33
|
_avoidKeywords,
|
|
34
|
-
|
|
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
|
-
|
|
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(`${
|
|
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.${
|
|
541
|
+
emitter.emitln(`if self.${_varName(name)}:`, this.level);
|
|
535
542
|
this.levelUp();
|
|
536
|
-
emitter.emitln(`for k in self.${
|
|
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.${
|
|
556
|
+
emitter.emitln(`if self.${_varName(name)}:`, this.level);
|
|
550
557
|
this.levelUp();
|
|
551
|
-
emitter.emitln(`for v in self.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
627
|
+
emitter.emitln(`if self.${_varName(prop.name)}:`, this.level);
|
|
621
628
|
this.levelUp();
|
|
622
|
-
emitter.emitln(`self.${
|
|
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.${
|
|
669
|
+
emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
|
|
663
670
|
this.levelUp();
|
|
664
|
-
emitter.emitln(`for k in self.${
|
|
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['${
|
|
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.${
|
|
713
|
+
emitter.emitln(`if self.${_varName(name)} is not None:`, this.level);
|
|
707
714
|
this.levelUp();
|
|
708
|
-
emitter.emitln(`for k, v in self.${
|
|
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['${
|
|
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.${
|
|
772
|
+
emitter.emitln(`if self.${_varName(prop.name)} is not None:`, this.level);
|
|
766
773
|
this.levelUp();
|
|
767
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
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.${
|
|
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.${
|
|
782
|
+
emitter.emitln(`result['${name}'] = self.${_varName(prop.name)}.to_map()`, this.level);
|
|
776
783
|
} else {
|
|
777
|
-
emitter.emitln(`result['${name}'] = self.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
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.${
|
|
947
|
+
emitter.emitln(`self.${_varName(prop.name)} = temp_model.from_map(m['${name}'])`, this.level);
|
|
941
948
|
} else {
|
|
942
|
-
emitter.emitln(`self.${
|
|
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(`${
|
|
966
|
+
constructParams.push(`${_varName(param.key)}: ${typeHints} = ${param.value},`);
|
|
960
967
|
} else {
|
|
961
|
-
constructParams.push(`${
|
|
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(`${
|
|
988
|
+
emitter.emitln(`${_varName(prop.name)}: '${typeHints}' = None,`, this.level);
|
|
982
989
|
} else {
|
|
983
|
-
emitter.emitln(`${
|
|
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.${
|
|
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 ${
|
|
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(`${
|
|
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 ${
|
|
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 ${
|
|
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(`${
|
|
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 ${
|
|
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 += `${
|
|
1359
|
+
pre += `${_varName(_convertStaticParam(pathName))}`;
|
|
1353
1360
|
} else if (path.type === 'object_async') {
|
|
1354
1361
|
if (this.aioMode) {
|
|
1355
|
-
pre += `await ${
|
|
1362
|
+
pre += `await ${_varName(_convertStaticParam(pathName))}`;
|
|
1356
1363
|
} else {
|
|
1357
|
-
pre += `${
|
|
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 += `.${
|
|
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 += `.${
|
|
1378
|
+
pre += `.${_funcName(pathName)}_async(${params})`;
|
|
1372
1379
|
} else {
|
|
1373
|
-
pre += `.${
|
|
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(${
|
|
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 ? `[${
|
|
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(
|
|
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(`${
|
|
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(
|
|
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(`${
|
|
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}[${
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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': '==',
|