Skip to content

Commit f0f5773

Browse files
committed
Merge remote-tracking branch 'upstream/master' into diagnostics
2 parents d70666f + 9f82954 commit f0f5773

File tree

22 files changed

+89
-71
lines changed

22 files changed

+89
-71
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ jobs:
1313
steps:
1414
- uses: actions/checkout@v1
1515
- uses: actions/setup-node@v1
16-
- run: npm install --global npm@6
1716
- run: npm ci
1817
- run: npm run lint
1918
env:
@@ -28,11 +27,10 @@ jobs:
2827

2928
steps:
3029
- uses: actions/checkout@v1
31-
- name: Use Node.js 8.5.0
30+
- name: Use Node.js 12.13.1
3231
uses: actions/setup-node@v1
3332
with:
34-
node-version: 8.5.0
35-
- run: npm install --global npm@6
33+
node-version: 12.13.1
3634
- run: npm ci
3735
- run: npm run build
3836
- run: npx jest --maxWorkers 2 --coverage

.github/workflows/release.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ jobs:
1414
- uses: actions/setup-node@v1
1515
with:
1616
registry-url: "https://registry.npmjs.org"
17-
- run: npm install --global npm@6
1817
- run: npm ci
1918
- run: npm run build
2019
- run: npm publish

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"tstl": "./dist/tstl.js"
3737
},
3838
"engines": {
39-
"node": ">=8.5.0"
39+
"node": ">=12.13.0"
4040
},
4141
"dependencies": {
4242
"resolve": "^1.13.1",

src/LuaLib.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ export enum LuaLibFeature {
6161
StringReplace = "StringReplace",
6262
StringSplit = "StringSplit",
6363
StringStartsWith = "StringStartsWith",
64+
StringTrim = "StringTrim",
65+
StringTrimEnd = "StringTrimEnd",
66+
StringTrimStart = "StringTrimStart",
6467
Symbol = "Symbol",
6568
SymbolRegistry = "SymbolRegistry",
6669
TypeOf = "TypeOf",

src/lualib/StringTrim.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function __TS__StringTrim(this: string): string {
2+
// http://lua-users.org/wiki/StringTrim
3+
const [result] = string.gsub(this, "^[%s\xA0\uFEFF]*(.-)[%s\xA0\uFEFF]*$", "%1");
4+
return result;
5+
}

src/lualib/StringTrimEnd.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function __TS__StringTrimEnd(this: string): string {
2+
// http://lua-users.org/wiki/StringTrim
3+
const [result] = string.gsub(this, "[%s\xA0\uFEFF]*$", "");
4+
return result;
5+
}

src/lualib/StringTrimStart.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function __TS__StringTrimStart(this: string): string {
2+
// http://lua-users.org/wiki/StringTrim
3+
const [result] = string.gsub(this, "^[%s\xA0\uFEFF]*", "");
4+
return result;
5+
}

src/transformation/builtins/string.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ export function transformStringPrototypeCall(
9494
return createStringCall("lower", node, caller);
9595
case "toUpperCase":
9696
return createStringCall("upper", node, caller);
97+
case "trim":
98+
return transformLuaLibFunction(context, LuaLibFeature.StringTrim, node, caller);
99+
case "trimEnd":
100+
case "trimRight":
101+
return transformLuaLibFunction(context, LuaLibFeature.StringTrimEnd, node, caller);
102+
case "trimStart":
103+
case "trimLeft":
104+
return transformLuaLibFunction(context, LuaLibFeature.StringTrimStart, node, caller);
97105
case "split":
98106
return transformLuaLibFunction(context, LuaLibFeature.StringSplit, node, caller, ...params);
99107
case "charAt":

src/transformation/context/context.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as ts from "typescript";
22
import { CompilerOptions, LuaTarget } from "../../CompilerOptions";
33
import * as lua from "../../LuaAST";
4-
import { flatMap } from "../../utils";
54
import { unwrapVisitorResult } from "../utils/lua-ast";
65
import { isFileModule } from "../utils/typescript";
76
import { ExpressionLikeNode, ObjectVisitor, StatementLikeNode, VisitorMap } from "./visitors";
@@ -82,14 +81,14 @@ export class TransformationContext {
8281

8382
public transformStatements(node: StatementLikeNode | readonly StatementLikeNode[]): lua.Statement[] {
8483
return Array.isArray(node)
85-
? flatMap(node, n => this.transformStatements(n))
84+
? node.flatMap(n => this.transformStatements(n))
8685
: // TODO: https://github.com/microsoft/TypeScript/pull/28916
8786
(this.transformNode(node as StatementLikeNode) as lua.Statement[]);
8887
}
8988

9089
public superTransformStatements(node: StatementLikeNode | readonly StatementLikeNode[]): lua.Statement[] {
9190
return Array.isArray(node)
92-
? flatMap(node, n => this.superTransformStatements(n))
91+
? node.flatMap(n => this.superTransformStatements(n))
9392
: // TODO: https://github.com/microsoft/TypeScript/pull/28916
9493
(this.superTransformNode(node as StatementLikeNode) as lua.Statement[]);
9594
}

src/transformation/utils/annotations.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import * as ts from "typescript";
2-
import { flatMap } from "../../utils";
32
import { TransformationContext } from "../context";
43
import { findFirstNodeAbove, inferAssignedType } from "./typescript";
54

@@ -102,7 +101,7 @@ export function getFileAnnotations(sourceFile: ts.SourceFile): AnnotationsMap {
102101
// Manually collect jsDoc because `getJSDocTags` includes tags only from closest comment
103102
const jsDoc = sourceFile.statements[0].jsDoc;
104103
if (jsDoc) {
105-
for (const tag of flatMap(jsDoc, x => x.tags ?? [])) {
104+
for (const tag of jsDoc.flatMap(x => x.tags ?? [])) {
106105
const tagName = tag.tagName.text;
107106
const annotation = createAnnotation(tagName, tag.comment ? tag.comment.split(" ") : []);
108107
if (annotation) {

0 commit comments

Comments
 (0)