mirror of
https://github.com/esiur/esiur-dart.git
synced 2025-05-06 04:02:57 +00:00
Merge branch 'master' of https://github.com/esiur/esiur-dart
This commit is contained in:
commit
92a26b8ce5
@ -24,7 +24,17 @@ void main(List<String> arguments) async {
|
|||||||
..addOption('username', abbr: 'u')
|
..addOption('username', abbr: 'u')
|
||||||
..addOption('password', abbr: 'p')
|
..addOption('password', abbr: 'p')
|
||||||
..addOption('dir', abbr: 'd')
|
..addOption('dir', abbr: 'd')
|
||||||
..addFlag("getx", abbr: 'x');
|
..addFlag(
|
||||||
|
"getx",
|
||||||
|
abbr: 'x',
|
||||||
|
defaultsTo: false,
|
||||||
|
help: "Generate apropriate getx bindings for resources",
|
||||||
|
)
|
||||||
|
..addFlag(
|
||||||
|
"namedargs",
|
||||||
|
help:
|
||||||
|
"Use named arguments instead of positional arguments for resource methods",
|
||||||
|
);
|
||||||
|
|
||||||
var results = parser.parse(arguments.skip(2));
|
var results = parser.parse(arguments.skip(2));
|
||||||
|
|
||||||
@ -35,11 +45,14 @@ void main(List<String> arguments) async {
|
|||||||
//print("Username ${username} password ${password} dir ${dir}");
|
//print("Username ${username} password ${password} dir ${dir}");
|
||||||
|
|
||||||
// make template
|
// make template
|
||||||
var destDir = await TemplateGenerator.getTemplate(link,
|
var destDir = await TemplateGenerator.getTemplate(
|
||||||
dir: dir,
|
link,
|
||||||
username: username,
|
dir: dir,
|
||||||
password: password,
|
username: username,
|
||||||
getx: results['getx']);
|
password: password,
|
||||||
|
getx: results['getx'],
|
||||||
|
namedArgs: results["namedargs"],
|
||||||
|
);
|
||||||
|
|
||||||
print("Generated directory `${destDir}`");
|
print("Generated directory `${destDir}`");
|
||||||
|
|
||||||
|
@ -208,11 +208,14 @@ class TemplateGenerator {
|
|||||||
return v == null || v == "";
|
return v == null || v == "";
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<String> getTemplate(String url,
|
static Future<String> getTemplate(
|
||||||
{String? dir,
|
String url, {
|
||||||
String? username,
|
String? dir,
|
||||||
String? password,
|
String? username,
|
||||||
bool getx = false}) async {
|
String? password,
|
||||||
|
bool getx = false,
|
||||||
|
bool namedArgs = false,
|
||||||
|
}) async {
|
||||||
try {
|
try {
|
||||||
if (!_urlRegex.hasMatch(url)) throw Exception("Invalid IIP URL");
|
if (!_urlRegex.hasMatch(url)) throw Exception("Invalid IIP URL");
|
||||||
|
|
||||||
@ -266,7 +269,8 @@ class TemplateGenerator {
|
|||||||
|
|
||||||
var source = "";
|
var source = "";
|
||||||
if (tmp.type == TemplateType.Resource) {
|
if (tmp.type == TemplateType.Resource) {
|
||||||
source = makeImports(tmp) + generateClass(tmp, templates, getx: getx);
|
source = makeImports(tmp) +
|
||||||
|
generateClass(tmp, templates, getx: getx, namedArgs: namedArgs);
|
||||||
} else if (tmp.type == TemplateType.Record) {
|
} else if (tmp.type == TemplateType.Record) {
|
||||||
source = makeImports(tmp) + generateRecord(tmp, templates);
|
source = makeImports(tmp) + generateRecord(tmp, templates);
|
||||||
}
|
}
|
||||||
@ -308,8 +312,11 @@ class TemplateGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static String generateClass(
|
static String generateClass(
|
||||||
TypeTemplate template, List<TypeTemplate> templates,
|
TypeTemplate template,
|
||||||
{bool getx = false}) {
|
List<TypeTemplate> templates, {
|
||||||
|
bool getx = false,
|
||||||
|
bool namedArgs = false,
|
||||||
|
}) {
|
||||||
var className = template.className.split('.').last;
|
var className = template.className.split('.').last;
|
||||||
|
|
||||||
var rt = StringBuffer();
|
var rt = StringBuffer();
|
||||||
@ -345,10 +352,19 @@ class TemplateGenerator {
|
|||||||
template.functions.forEach((f) {
|
template.functions.forEach((f) {
|
||||||
var rtTypeName = getTypeName(template, f.returnType, templates, true);
|
var rtTypeName = getTypeName(template, f.returnType, templates, true);
|
||||||
rt.write("AsyncReply<$rtTypeName> ${f.name}(");
|
rt.write("AsyncReply<$rtTypeName> ${f.name}(");
|
||||||
rt.write(f.arguments
|
if (f.arguments.isNotEmpty && namedArgs) {
|
||||||
.map((x) =>
|
rt.write("{");
|
||||||
getTypeName(template, x.type, templates, true) + " " + x.name)
|
}
|
||||||
.join(","));
|
rt.write(f.arguments.map((x) {
|
||||||
|
final typeName = getTypeName(template, x.type, templates, true);
|
||||||
|
return typeName +
|
||||||
|
(namedArgs && !typeName.endsWith("?") ? "?" : "") +
|
||||||
|
" " +
|
||||||
|
x.name;
|
||||||
|
}).join(","));
|
||||||
|
if (f.arguments.isNotEmpty && namedArgs) {
|
||||||
|
rt.write("}");
|
||||||
|
}
|
||||||
|
|
||||||
rt.writeln(") {");
|
rt.writeln(") {");
|
||||||
rt.writeln("var rt = AsyncReply<$rtTypeName>();");
|
rt.writeln("var rt = AsyncReply<$rtTypeName>();");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user