Skip to content

Commit

Permalink
version 0.3.2
Browse files Browse the repository at this point in the history
corrected error, now emits an index.ts again.
removed default verbose logging
I can be switched on by caslling verbose()
  • Loading branch information
spreeuwers committed Feb 5, 2020
1 parent 1ee33ce commit 485e8ed
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 8 deletions.
28 changes: 26 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,31 @@ import {generateTemplateClassesFromXSD} from "xsd2ts";
generateTemplateClassesFromXSD('./yourXsdFile.xsd');
````
When dependencies must be included you casn specify these as follows:
When dependencies must be included you can specify these as follows:
````
generateTemplateClassesFromXSD('./yourXsdFile.xsd', {libname, 'module(path)'});
import {generateTemplateClassesFromXSD} from "xsd2ts";
generateTemplateClassesFromXSD('./dependency.xsd');
generateTemplateClassesFromXSD('./yourXsdFile.xsd', {libname, './dependency'});
````
The libname should equal the namespace for this dependency to generate the right import statements


You can specify a dependency for the default namespace with the third parameter
when you omit this parameter it will deault to the name "xmlns"
````
import {generateTemplateClassesFromXSD} from "xsd2ts";
generateTemplateClassesFromXSD('./dependency.xsd');
generateTemplateClassesFromXSD('./yourXsdFile.xsd', {defaultns, './dependency'},defaultns);
````
Extra logging can be turned on by calling verbose()

````
import {generateTemplateClassesFromXSD,verbose} from "xsd2ts";
verbose();
generateTemplateClassesFromXSD('./dependency.xsd');
````

Generate a folder 'src/generated' with index.ts file by executing:

npm run ts-gen
Expand All @@ -61,3 +82,6 @@ Then publish your npm package:
Now you can use the npm lib in other npm projects by installing it:

npm install --save <your npm package name>


Remark: Ther was an error in version 3.1: it did not emit an index.ts
4 changes: 2 additions & 2 deletions classGenerator.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ function addClassForASTNode(fileDef, astNode, indent) {
xml_utils_1.log(indent + 'created: ', astNode.name, ', fields: ', (_c = (_b = astNode) === null || _b === void 0 ? void 0 : _b.children) === null || _c === void 0 ? void 0 : _c.length);
var fields = (astNode.children || []).filter(function (f) { return f; });
fields.filter(function (f) { return f.nodeType === "Fields"; }).forEach(function (f) {
xml_utils_1.log(indent + 'adding fields for ref:', f.name);
xml_utils_1.log(indent + 'adding named fields:', f.name);
fields = fields.concat(groups[f.attr.ref].children);
});
fields.filter(function (f) { return f.nodeType === "Reference"; }).forEach(function (f) {
var _a;
xml_utils_1.log(indent + 'adding method for Reference: ', f.attr.ref);
xml_utils_1.log(indent + 'adding fields for Reference: ', f.attr.ref);
var typePostFix = (f.attr.array) ? "[]" : "";
var namePostFix = (f.attr.array) ? "?" : "";
var _b = (/:/.test(f.attr.ref)) ? (_a = f.attr.ref) === null || _a === void 0 ? void 0 : _a.split(':') : [null, f.attr.ref], ns = _b[0], localName = _b[1];
Expand Down
1 change: 1 addition & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/// <reference types="lodash" />
export declare function verbose(): void;
export declare function generateTemplateClassesFromXSD(xsdFilePath: string, dependencies?: Map<string, string>, xmlnsName?: string): void;
6 changes: 6 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
*/
var fs = require("fs");
var classGenerator_1 = require("./classGenerator");
var xml_utils_1 = require("./xml-utils");
var TSCONFIG = "{\n \"compilerOptions\": {\n \"module\": \"commonjs\",\n \"target\": \"es5\",\n \"sourceMap\": true,\n \"declaration\": true,\n \"declarationDir\": \"../../\",\n \"outDir\": \"../../\"\n },\n \"exclude\": [\n \"node_modules\"\n ]\n }";
var importStatements = [];
var imports = {};
Expand Down Expand Up @@ -37,6 +38,10 @@ var imports = {};
// fs.writeFileSync(`${genSrcPath}/${fileName}`, src, 'utf8');
//
// }
function verbose() {
xml_utils_1.useVerboseLogModus();
}
exports.verbose = verbose;
function generateTemplateClassesFromXSD(xsdFilePath, dependencies, xmlnsName) {
if (dependencies === void 0) { dependencies = {}; }
if (xmlnsName === void 0) { xmlnsName = 'xmlns'; }
Expand All @@ -57,5 +62,6 @@ function generateTemplateClassesFromXSD(xsdFilePath, dependencies, xmlnsName) {
var disclaimer = "/***********\ngenerated template classes for " + xsdFilePath + ' ' + new Date().toLocaleString() + "\n***********/\n\n";
var src = disclaimer + '\n\n\n\n' + classFileDef.write().replace(/protected\s/g, 'public ');
fs.writeFileSync(genSrcPath + "/" + fileName, src, 'utf8');
fs.writeFileSync(genSrcPath + "/index.ts", src, 'utf8');
}
exports.generateTemplateClassesFromXSD = generateTemplateClassesFromXSD;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "xsd2ts",
"version": "0.3.1",
"version": "0.3.2",
"description": "generates template classes for xsd",
"main": "index.js",
"scripts": {
Expand Down
4 changes: 2 additions & 2 deletions src/classGenerator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,12 @@ function addClassForASTNode(fileDef: FileDefinition, astNode: ASTNode, indent =
let fields = (astNode.children || []).filter( (f) => f);
fields.filter((f) => f.nodeType === "Fields").forEach(
(f) => {
log(indent + 'adding fields for ref:', f.name);
log(indent + 'adding named fields:', f.name);
fields = fields.concat(groups[f.attr.ref].children);
});
fields.filter( (f) => f.nodeType === "Reference").forEach(
(f) => {
log(indent + 'adding method for Reference: ', f.attr.ref);
log(indent + 'adding fields for Reference: ', f.attr.ref);

const typePostFix = (f.attr.array) ? "[]" : "";
const namePostFix = (f.attr.array) ? "?" : "";
Expand Down
6 changes: 6 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*/
import * as fs from "fs";
import {ClassGenerator} from './classGenerator';
import {useVerboseLogModus} from "./xml-utils";

const TSCONFIG =
`{
Expand Down Expand Up @@ -56,6 +57,10 @@ let imports = {};
//
// }

export function verbose(){
useVerboseLogModus();
}

export function generateTemplateClassesFromXSD(xsdFilePath: string, dependencies: Map<string,string> = {}, xmlnsName = 'xmlns'): void {
let imports = dependencies;
console.log(JSON.stringify(dependencies));
Expand All @@ -81,6 +86,7 @@ export function generateTemplateClassesFromXSD(xsdFilePath: string, dependencies
let disclaimer = "/***********\ngenerated template classes for " + xsdFilePath + ' ' + new Date().toLocaleString() + "\n***********/\n\n";
let src = disclaimer + '\n\n\n\n' + classFileDef.write().replace(/protected\s/g, 'public ');
fs.writeFileSync(`${genSrcPath}/${fileName}`, src, 'utf8');
fs.writeFileSync(`${genSrcPath}/index.ts`, src, 'utf8');

}

1 change: 1 addition & 0 deletions src/parsing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const returnMergedResult: AstNodeMerger = (r1, r2) => r1.merge(r2);

let ns = 'xs';


export function setNamespace(namespace: string) {
ns = namespace;
}
Expand Down
13 changes: 12 additions & 1 deletion src/xml-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,19 @@
*/


let VERBOSE = false;

export function useVerboseLogModus() {
VERBOSE = true;
}
export function useNormalLogModus() {
VERBOSE = false;
}

export function log(...parms: any) {
console.log.apply(console, parms);
if (VERBOSE) {
console.log.apply(console, parms);
}
}

export function findFirstChild(node: Node): Node {
Expand Down
4 changes: 4 additions & 0 deletions test/generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,16 @@
*/
import * as fs from "fs";
import * as ts from "typescript";
import {useNormalLogModus, useVerboseLogModus} from "../src/xml-utils";

import {generateTemplateClassesFromXSD} from "../src/index";

function xsdPath(name: string){
return `./test/xsd/${name}.xsd`;
}

useVerboseLogModus();

describe("generator", () => {


Expand Down

0 comments on commit 485e8ed

Please sign in to comment.