diff --git a/package.json b/package.json index e19d7864f5a8505a7c03d1f765b600dd99460e0e..a595603a7f2c0f377297028ba25e7ee73e2b47a3 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "codemirror": "5.25.2" }, "devDependencies": { - "@angular/cli": "1.0.1", + "@angular/cli": "^1.7.3", "@angular/compiler-cli": "^4.0.0", "@types/jasmine": "2.5.38", "@types/node": "~6.0.60", @@ -36,9 +36,9 @@ "karma": "~1.4.1", "karma-chrome-launcher": "~2.0.0", "karma-cli": "~1.0.1", + "karma-coverage-istanbul-reporter": "^0.2.0", "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", - "karma-coverage-istanbul-reporter": "^0.2.0", "protractor": "~5.1.0", "ts-node": "~2.0.0", "tslint": "~4.5.0", diff --git a/src/app/member.ts b/src/app/member.ts index 6327b45536088600ae88c0b382d15e0d79272886..55a0ca5c0af06013ed56b671315ac0b07033a131 100644 --- a/src/app/member.ts +++ b/src/app/member.ts @@ -4,37 +4,50 @@ import {TypeRef} from './type-ref'; export class Member { name: string; - type: TypeRef; + type?: TypeRef; doc: Doc; parameters: Parameter[]; throws: TypeRef[]; + constructor(name: string, type: TypeRef, doc: Doc, parameters: Parameter[], + throws: TypeRef[]) { + this.name = name; + this.type = type; + this.doc = doc; + this.parameters = parameters; + this.throws = throws; + } + + get isVoid(): boolean { + return this.type.isVoid; + } + static fromJson(json: any): Member { var params: Parameter[] = []; var doc: Doc = undefined; + var name: string = json.name as string; if (json.doc) { doc = Doc.fromJson(json.doc); } if (json.params) { - params = json.params as Parameter[]; + params = json.params.map(param => Parameter.fromJson(param)); } var throws: TypeRef[] = undefined; if (json.throws) { throws = (json.throws as TypeRef[]).map(TypeRef.fromJson); } if (json.type) { - return Object.assign({}, json, { - type: TypeRef.fromJson(json.type), - parameters: params.map(param => Parameter.fromJson(param)), - doc: doc, - throws: throws, - }); + return new Member(name, + TypeRef.fromJson(json.type), + doc, + params, + throws); } else { - return Object.assign({}, json, { - parameters: params.map(param => Parameter.fromJson(param)), - doc: doc, - throws: throws, - }); + return new Member(name, + undefined, + doc, + params, + throws); } } } diff --git a/src/app/type-details.component.html b/src/app/type-details.component.html index bebc8c682540d895bc99f77646887882ace9dd0e..6d59d542f2ffcd70d0257e8978e8d05832b23b63 100644 --- a/src/app/type-details.component.html +++ b/src/app/type-details.component.html @@ -109,7 +109,7 @@ <p *ngIf="member.doc" [innerHTML]="member.doc.description"></p> <p *ngIf="member.doc && member.doc.ragFile"><declared-at [doc]="member.doc"></declared-at> <p *ngFor="let param of member.parameters; let index = index"><b>Parameter {{index+1}}</b> <type-ref [type]="param.type"></type-ref> <b>{{param.name}}</b><span *ngIf="member.doc" [innerHTML]="paramDesc(member.doc, param.name)"></span></p> - <p><b>Returns</b> <type-ref [type]="member.type"></type-ref><ng-container *ngIf="member.doc && member.doc.return"> : <span class="return" *ngIf="member.doc" [innerHTML]="member.doc.return"></span></ng-container> + <p *ngIf="!member.isVoid"><b>Returns</b> <type-ref [type]="member.type"></type-ref><ng-container *ngIf="member.doc && member.doc.return"> : <span class="return" *ngIf="member.doc" [innerHTML]="member.doc.return"></span></ng-container> <p *ngIf="member.throws">Throws <ng-container *ngFor="let excp of member.throws; let isLast=last"><type-ref [type]="excp"></type-ref><div *ngIf="!isLast" class="sep">, </div></ng-container></p> </div> </details> diff --git a/src/app/type-ref.ts b/src/app/type-ref.ts index 154d4a64ff7e34379e9fc0e8d5c30d41acaf54a6..b0edfcf6277792e9d4bbd42c40f6615d96230eda 100644 --- a/src/app/type-ref.ts +++ b/src/app/type-ref.ts @@ -1,8 +1,14 @@ export class TypeRef { name: string; - id: string; + id?: string; args: TypeRef[]; + constructor(name: string, id: string, args: TypeRef[]) { + this.name = name; + this.id = id; + this.args = args; + } + static fromJson(json: any): TypeRef { var args: TypeRef[] = undefined; if (json.a) { @@ -11,25 +17,13 @@ export class TypeRef { if (json.u) { // User type. if (json.i) { - return { - name: json.u, - id: TypeRef.typeId(json.u, json.i), - args: args, - }; + return new TypeRef(json.u, TypeRef.typeId(json.u, json.i), args); } else { - return { - name: json.u, - id: TypeRef.simpleName(json.u), - args: args, - }; + return new TypeRef(json.u, TypeRef.simpleName(json.u), args); } } else { // Library or built-in type. - return { - name: json.n, - id: undefined, - args: args, - }; + return new TypeRef(json.n, undefined, args); } } @@ -48,6 +42,10 @@ export class TypeRef { } } + get isVoid(): boolean { + return this.name == 'void'; + } + static typeId(name: string, idPattern: string): string { return idPattern.replace('%', TypeRef.simpleName(name)); }