@Override public Map<String, Object> getVars() { Map<String, Object> vars = Model.super.getVars(); vars.put("fqn", info.getPackageName()); vars.put("name", info.getName()); vars.put("module", getModule()); vars.put("annotations", getAnnotations()); return vars; }
@Test public void testModuleModel() throws Exception { ModuleModel model = new GeneratorHelper().generateModule(ModuleTest.class.getClassLoader(), "io.vertx.test.codegen.testmodule.modulescoped"); assertEquals("io.vertx.test.codegen.testmodule.modulescoped", model.getFqn()); assertEquals("simple", model.getName()); assertEquals("io.vertx.test.groovy.codegen.testmodule.modulescoped", model.translateFqn("groovy")); assertNotNull(model.getModule()); assertEquals("io.vertx.test.codegen.testmodule.modulescoped", model.getModule().getPackageName()); assertEquals("simple", model.getModule().getName()); assertEquals("io.vertx.test.groovy.codegen.testmodule.modulescoped", model.getModule().translatePackageName("groovy")); }
@Test public void testCustomGroupModuleModel() throws Exception { ModuleModel model = new GeneratorHelper().generateModule(ModuleTest.class.getClassLoader(), "io.vertx.test.codegen.testmodule.customgroup"); assertEquals("io.vertx.test.codegen.testmodule.customgroup", model.getFqn()); assertEquals("custom", model.getName()); assertEquals("io.vertx.test.codegen.testmodule.groovy.customgroup", model.translateFqn("groovy")); }
PrintWriter writer = new PrintWriter(sw); writer.printf("![npm (scoped)](https://img.shields.io/npm/v/%s.svg)\n", getNPMScope(model.getModule())); writer.printf("![npm](https://img.shields.io/npm/l/%s.svg)\n", getNPMScope(model.getModule())); writer.print("\n"); writer.print("Generated JavaScript bindings for Eclipse Vert.x.\n"); writer.print("## Documentation\n"); writer.print("\n"); writer.printf("* [API Docs](https://reactiverse.io/es4x/%s)\n", getNPMScope(model.getModule())); writer.printf("* [NPM module](https://www.npmjs.com/package/%s)\n", getNPMScope(model.getModule())); writer.print("\n"); writer.print("## Usage\n"); writer.print("```js\n"); writer.print("// Base API\n"); writer.printf("const Api = require('%s');\n", getNPMScope(model.getModule())); writer.print("// Base ENUMs\n"); writer.printf("const Enums = require('%s/enums');\n", getNPMScope(model.getModule())); writer.print("// DataObject's\n"); writer.printf("const Options = require('%s/options');\n", getNPMScope(model.getModule())); writer.print("\n"); writer.print("// refer to the API docs for specific help...\n");
public ModuleModel getModuleModel(String modulePackage) { PackageElement element = modules.get(modulePackage); ModuleGen annotation = element.getAnnotation(ModuleGen.class); String moduleName = annotation.name(); if (moduleName.isEmpty()) { throw new GenException(element, "A module name cannot be empty"); } try { Case.KEBAB.parse(moduleName); } catch (IllegalArgumentException e) { throw new GenException(element, "Module name '" + moduleName + "' does not follow the snake case format (dash separated name)"); } String groupPackage = annotation.groupPackage(); if (groupPackage.equals("")) { groupPackage = modulePackage; } else if (!modulePackage.startsWith(groupPackage)) { throw new GenException(element, "A module package (" + modulePackage + ") must be prefixed by the group package (" + groupPackage + ")"); } try { Case.QUALIFIED.parse(groupPackage); } catch (Exception e) { throw new GenException(element, "Invalid group package name " + groupPackage); } ModuleInfo info = new ModuleInfo(modulePackage, moduleName, groupPackage); AnnotationValueInfoFactory annotationFactory = new AnnotationValueInfoFactory(new TypeMirrorFactory(elementUtils,typeUtils)); List<AnnotationValueInfo> annotationValueInfos = element.getAnnotationMirrors().stream().map(annotationFactory::processAnnotation).collect(Collectors.toList()); return new ModuleModel(element, info, annotationValueInfos); }
@Test public void testNestedModuleModel() throws Exception { ModuleModel module = new GeneratorHelper().generateModule(ModuleTest.class.getClassLoader(), "io.vertx.test.codegen.testmodule.nestingmodule.nestedmodule"); assertEquals("io.vertx.test.codegen.testmodule.nestingmodule.nestedmodule", module.getFqn()); assertEquals("nested", module.getName()); assertEquals("io.vertx.test.groovy.codegen.testmodule.nestingmodule.nestedmodule", module.translateFqn("groovy")); ClassModel api = new GeneratorHelper().generateClass(NestedApi.class); assertEquals("io.vertx.test.codegen.testmodule.nestingmodule.nestedmodule", api.getModule().getPackageName()); assertEquals("nested", api.getModule().getName()); DataObjectModel dataObj = new GeneratorHelper().generateDataObject(NestedDataObject.class); assertEquals("io.vertx.test.codegen.testmodule.nestingmodule.nestedmodule", dataObj.getModule().getPackageName()); assertEquals("nested", dataObj.getModule().getName()); }
json.put("name", getNPMScope(model.getModule()));