Skip to content

Commit

Permalink
fix(deps): static modifier
Browse files Browse the repository at this point in the history
fix #367
  • Loading branch information
vogloblinsky committed Nov 14, 2017
1 parent 96e40bd commit 6cd8086
Show file tree
Hide file tree
Showing 11 changed files with 123 additions and 17 deletions.
7 changes: 6 additions & 1 deletion src/app/compiler/dependencies.ts
Expand Up @@ -785,7 +785,12 @@ export class Dependencies {

if (method.modifiers) {
if (method.modifiers.length > 0) {
result.modifierKind = method.modifiers[0].kind;
let kinds = method.modifiers.map((modifier) => {
return modifier.kind;
}).reverse();
if (kinds.includes(ts.SyntaxKind.PublicKeyword) && kinds.includes(ts.SyntaxKind.StaticKeyword)) {
kinds = kinds.filter((kind) => kind !== ts.SyntaxKind.PublicKeyword);
};
}
}
if (jsdoctags && jsdoctags.length >= 1) {
Expand Down
24 changes: 21 additions & 3 deletions src/app/compiler/deps/helpers/class-helper.ts
Expand Up @@ -599,7 +599,13 @@ export class ClassHelper {

if (method.modifiers) {
if (method.modifiers.length > 0) {
result.modifierKind = method.modifiers[0].kind;
let kinds = method.modifiers.map((modifier) => {
return modifier.kind;
}).reverse();
if (kinds.includes(ts.SyntaxKind.PublicKeyword) && kinds.includes(ts.SyntaxKind.StaticKeyword)) {
kinds = kinds.filter((kind) => kind !== ts.SyntaxKind.PublicKeyword);
}
result.modifierKind = kinds;
}
}
if (jsdoctags && jsdoctags.length >= 1) {
Expand Down Expand Up @@ -656,7 +662,13 @@ export class ClassHelper {

if (property.modifiers) {
if (property.modifiers.length > 0) {
result.modifierKind = property.modifiers[0].kind;
let kinds = property.modifiers.map((modifier) => {
return modifier.kind;
}).reverse();
if (kinds.includes(ts.SyntaxKind.PublicKeyword) && kinds.includes(ts.SyntaxKind.StaticKeyword)) {
kinds = kinds.filter((kind) => kind !== ts.SyntaxKind.PublicKeyword);
}
result.modifierKind = kinds;
}
}
if (jsdoctags && jsdoctags.length >= 1) {
Expand Down Expand Up @@ -816,7 +828,13 @@ export class ClassHelper {

if (method.modifiers) {
if (method.modifiers.length > 0) {
result.modifierKind = method.modifiers[0].kind;
let kinds = method.modifiers.map((modifier) => {
return modifier.kind;
}).reverse();
if (kinds.includes(ts.SyntaxKind.PublicKeyword) && kinds.includes(ts.SyntaxKind.StaticKeyword)) {
kinds = kinds.filter((kind) => kind !== ts.SyntaxKind.PublicKeyword);
}
result.modifierKind = kinds;
}
}
if (jsdoctags && jsdoctags.length >= 1) {
Expand Down
13 changes: 11 additions & 2 deletions src/app/engines/html-engine-helpers/modif-kind-helper.ts
Expand Up @@ -3,12 +3,21 @@ import * as Handlebars from 'handlebars';
import * as ts from 'typescript';

export class ModifKindHelper implements IHtmlEngineHelper {
public helperFunc(context: any, kind: ts.SyntaxKind) {
/**
* Transform ts.SyntaxKind into string
* @param {any} context Handlebars context
* @param {ts.SyntaxKind[]} kind ts.SyntaxKind concatenated
* @return {string} Parsed string
*/
public helperFunc(context: any, kind: ts.SyntaxKind[]) {
let _kindText = '';
switch (kind) {
case ts.SyntaxKind.PrivateKeyword:
_kindText = 'Private';
break;
case ts.SyntaxKind.ReadonlyKeyword:
_kindText = 'Readonly';
break;
case ts.SyntaxKind.ProtectedKeyword:
_kindText = 'Protected';
break;
Expand All @@ -21,4 +30,4 @@ export class ModifKindHelper implements IHtmlEngineHelper {
}
return new Handlebars.SafeString(_kindText);
}
}
}
10 changes: 9 additions & 1 deletion src/templates/partials/block-method.hbs
Expand Up @@ -10,7 +10,15 @@
<tr>
<td class="col-md-4">
<a name="{{name}}"></a>
<span class="name"><b>{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} {{name}}</b><a href="#{{name}}"><span class="fa fa-link"></span></a></span>
<span class="name">
<b>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
{{name}}
</b>
<a href="#{{name}}"><span class="fa fa-link"></span></a>
</span>
</td>
</tr>
{{#if ../file-path}}
Expand Down
10 changes: 9 additions & 1 deletion src/templates/partials/block-property.hbs
Expand Up @@ -10,7 +10,15 @@
<tr>
<td class="col-md-4">
<a name="{{name}}"></a>
<span class="name"><b>{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} {{name}}</b><a href="#{{name}}"><span class="fa fa-link"></span></a></span>
<span class="name">
<b>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
{{name}}
</b>
<a href="#{{name}}"><span class="fa fa-link"></span></a>
</span>
</td>
</tr>
{{#if ../file-path}}
Expand Down
15 changes: 12 additions & 3 deletions src/templates/partials/index-directive.hbs
Expand Up @@ -13,7 +13,10 @@
<ul class="index-list">
{{#each properties}}
<li>
{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} <a href="#{{name}}">{{name}}</a>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
<a href="#{{name}}">{{name}}</a>
</li>
{{/each}}
</ul>
Expand All @@ -31,7 +34,10 @@
<ul class="index-list">
{{#each methods}}
<li>
{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} <a href="#{{name}}">{{name}}</a>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
<a href="#{{name}}">{{name}}</a>
</li>
{{/each}}
</ul>
Expand Down Expand Up @@ -121,7 +127,10 @@
<ul class="index-list">
{{#each accessors}}
<li>
{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} <a href="#{{@key}}">{{@key}}</a>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
<a href="#{{@key}}">{{@key}}</a>
</li>
{{/each}}
</ul>
Expand Down
15 changes: 12 additions & 3 deletions src/templates/partials/index.hbs
Expand Up @@ -13,7 +13,10 @@
<ul class="index-list">
{{#each properties}}
<li>
{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} <a href="#{{name}}">{{name}}</a>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
<a href="#{{name}}">{{name}}</a>
</li>
{{/each}}
</ul>
Expand All @@ -31,7 +34,10 @@
<ul class="index-list">
{{#each methods}}
<li>
{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} <a href="#{{name}}">{{name}}</a>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
<a href="#{{name}}">{{name}}</a>
</li>
{{/each}}
</ul>
Expand All @@ -49,7 +55,10 @@
<ul class="index-list">
{{#each accessors}}
<li>
{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} <a href="#{{@key}}">{{@key}}</a>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
<a href="#{{@key}}">{{@key}}</a>
</li>
{{/each}}
</ul>
Expand Down
5 changes: 4 additions & 1 deletion src/templates/partials/interface.hbs
Expand Up @@ -86,7 +86,10 @@
<ul class="index-list">
{{#each interface.methods}}
<li>
{{#if modifierKind}}<span class="modifier">{{modifKind modifierKind}}</span>{{/if}} <a href="#{{name}}">{{name}}</a>
{{#each modifierKind}}
<span class="modifier">{{modifKind this}}</span>
{{/each}}
<a href="#{{name}}">{{name}}</a>
</li>
{{/each}}
</ul>
Expand Down
13 changes: 13 additions & 0 deletions test/src/cli/cli-generation-big-app.spec.ts
Expand Up @@ -414,4 +414,17 @@ describe('CLI simple generation - big app', () => {
let file = read('documentation/components/HomeComponent.html');
expect(file).to.contain('<header class="header"');
});

it('should have parsed correctly private, public, and static methods or properties', () => {
let file = read('documentation/components/AboutComponent.html');
expect(file).to.contain('<code>privateStaticMethod()');
expect(file).to.contain(`<span class="modifier">Static</span>\n <span class="modifier">Private</span>`);
expect(file).to.contain('<code>protectedStaticMethod()');
expect(file).to.contain(`<span class="modifier">Static</span>\n <span class="modifier">Protected</span>`);
expect(file).to.contain('<code>publicMethod()');
expect(file).to.contain('<code>publicStaticMethod()');
expect(file).to.contain('<code>staticMethod()');
expect(file).to.contain('staticReadonlyVariable');
expect(file).to.contain(`<span class="modifier">Readonly</span>\n <span class="modifier">Static</span>`);
});
});
4 changes: 2 additions & 2 deletions test/src/sample-files/bar.component.ts
Expand Up @@ -31,9 +31,9 @@ export class BarComponent implements OnInit {

private privateMethod() {}

protected varprotected: string;
protected varprotected: string;

ngOnInit() {}
ngOnInit() {}

public showTab(index) {
// TOTO
Expand Down
24 changes: 24 additions & 0 deletions test/src/todomvc-ng2/src/app/about/about.component.ts
Expand Up @@ -44,4 +44,28 @@ export class AboutComponent {
set fullName(newName: string) {
this._fullName = newName;
}

static readonly staticReadonlyVariable: string;

public static publicStaticVariable: string;

protected static protectedStaticMethod(): string {
return '';
}

private static privateStaticMethod(): string {
return '';
}

public static publicStaticMethod(): string {
return '';
}

static staticMethod(): string {
return '';
}

public publicMethod(): string {
return '';
}
}

0 comments on commit 6cd8086

Please sign in to comment.