diff --git a/lib/builtin.js b/lib/builtin.js index c87c30b..c73c847 100644 --- a/lib/builtin.js +++ b/lib/builtin.js @@ -58,6 +58,17 @@ class Builtin { } } +class Map extends Builtin { + constructor(generator) { + super(generator, 'Converter'); + } + + length(ast) { + this.getInstanceName(ast); + this.generator.emit('.size()'); + } +} + class Converter extends Builtin { constructor(generator) { super(generator, 'Converter'); @@ -380,6 +391,8 @@ module.exports = (generator) => { builtin[`$${type}`] = converter; }); + builtin['$Map'] = new Map(generator); + const func = new Func(generator); builtin['$isNull'] = func; builtin['$sleep'] = func; diff --git a/lib/generator.js b/lib/generator.js index 616ecf3..63ed935 100644 --- a/lib/generator.js +++ b/lib/generator.js @@ -885,7 +885,7 @@ class Visitor { const examples = md2Html(example).trimEnd().split('\n'); this.emit(' * example:\n', level); for (let j = 0; j < examples.length; j++) { - this.emit(` * ${examples[j]}\n`, level); + this.emit(` * ${examples[j].replace(/\\/g, '\\\\')}\n`, level); } hasNextSection = true; } @@ -1308,7 +1308,7 @@ class Visitor { } else if (ast.type === 'property_access') { this.visitPropertyAccess(ast, level); } else if (ast.type === 'string') { - this.emit(`"${ast.value.string.replace(new RegExp('"', 'g'), '\\"')}"`); + this.emit(`"${ast.value.string.replace(new RegExp('"', 'g'), '\\"').replace(/\n/g, '\\n')}"`); } else if (ast.type === 'null') { this.emit('null'); } else if (ast.type === 'number') { diff --git a/package.json b/package.json index 701a770..831b337 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "@darabonba/java-generator", - "version": "1.3.4", + "name": "@ali/darabonba-java-generator", + "version": "2.0.4", "description": "The darabonba generator for Java", "main": "lib/generator", "directories": { diff --git a/test/fixtures/builtin/Client.java b/test/fixtures/builtin/Client.java index 9e8a218..9be1580 100644 --- a/test/fixtures/builtin/Client.java +++ b/test/fixtures/builtin/Client.java @@ -86,8 +86,11 @@ public static void main(String[] args) throws Exception { new TeaPair("key", "value") ); java.util.Map obj = (Map)(maps); + int size = maps.size(); + size = args.length(); } + String certificate = "-----BEGIN CERTIFICATE-----\nMIIDpjCCAo6gAwIBAgIJAL0OjFdDMLtgMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV\nBAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYD\nVQQKDApHTUNlcnQub3JnMSAwHgYDVQQDDBdHTUNlcnQgUlNBIFJvb3QgQ0EgLSAw\nMTAeFw0yNTAzMTQwMzIzMTlaFw0yNjAzMTQwMzIzMTlaMC4xCzAJBgNVBAYTAkNO\nMR8wHQYDVQQDDBZzaXRlbmFtZWZvcmFsbHRlc3QuY29tMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEArTxYr+dY4bX4+wT12LA6sY6ez7cTynWvmzIF9mIo\nX/3pVHYK3xM7Kg2gB5JrM6k**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************YDVR0jBBgwFoAUmifrnICTyw3pwz3Ranoc4rGfOOkwDQYJKoZIhvcN\nAQELBQADggEBALGJgyBDi/Au9T/5cZKnpdox29Pp6KfA8O1ViVnhMlumoqu6yRKe\nvFp1EsVI/2LFFSomYoC6cyVZowyBEYvfs3CoLzjHTZjW2X2NoM6CX8k/KjdpMBtt\ne1UGpL0oeWKXozjGuSd2mz4vwcbh/B7OonMWHJApT7Qxd72mB7vqjVOYFwlWvfm1\nw6w00YrEbl0W/pF0kgMyRQUy1GdD/4vSGwFnQdZu7yMNuKZxEKCKxYSBl2uqNjtQ\n7vOkdLn+d5OvHmC4jfxEuAui+5UBH1fqtEAIIzwZjvGo4PLVPQQC7Gwqq296ht1E\nQr0zULEzwFL9tZEh6AWXcg7C/oQAW0+R+qo=\n-----END CERTIFICATE-----"; if (!(null == a)) { return ; } diff --git a/test/fixtures/builtin/main.dara b/test/fixtures/builtin/main.dara index 8d77c24..9450d8d 100644 --- a/test/fixtures/builtin/main.dara +++ b/test/fixtures/builtin/main.dara @@ -78,7 +78,10 @@ static async function main(args: [string]): void { key = 'value', }; var obj: object = $object(maps); + var size = maps.length(); + size = args.length(); } + var certificate = "-----BEGIN CERTIFICATE-----\nMIIDpjCCAo6gAwIBAgIJAL0OjFdDMLtgMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV\nBAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAwDgYDVQQHDAdIYWlEaWFuMRMwEQYD\nVQQKDApHTUNlcnQub3JnMSAwHgYDVQQDDBdHTUNlcnQgUlNBIFJvb3QgQ0EgLSAw\nMTAeFw0yNTAzMTQwMzIzMTlaFw0yNjAzMTQwMzIzMTlaMC4xCzAJBgNVBAYTAkNO\nMR8wHQYDVQQDDBZzaXRlbmFtZWZvcmFsbHRlc3QuY29tMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEArTxYr+dY4bX4+wT12LA6sY6ez7cTynWvmzIF9mIo\nX/3pVHYK3xM7Kg2gB5JrM6k**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************YDVR0jBBgwFoAUmifrnICTyw3pwz3Ranoc4rGfOOkwDQYJKoZIhvcN\nAQELBQADggEBALGJgyBDi/Au9T/5cZKnpdox29Pp6KfA8O1ViVnhMlumoqu6yRKe\nvFp1EsVI/2LFFSomYoC6cyVZowyBEYvfs3CoLzjHTZjW2X2NoM6CX8k/KjdpMBtt\ne1UGpL0oeWKXozjGuSd2mz4vwcbh/B7OonMWHJApT7Qxd72mB7vqjVOYFwlWvfm1\nw6w00YrEbl0W/pF0kgMyRQUy1GdD/4vSGwFnQdZu7yMNuKZxEKCKxYSBl2uqNjtQ\n7vOkdLn+d5OvHmC4jfxEuAui+5UBH1fqtEAIIzwZjvGo4PLVPQQC7Gwqq296ht1E\nQr0zULEzwFL9tZEh6AWXcg7C/oQAW0+R+qo=\n-----END CERTIFICATE-----"; if (!$isNull(a)) { return; }