Skip to content

Commit 35f2cc5

Browse files
committed
feat(app): simple classes support
1 parent 839a49a commit 35f2cc5

File tree

9 files changed

+191
-33
lines changed

9 files changed

+191
-33
lines changed

src/app/application.ts

+41-9
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,23 @@ export namespace Application {
115115

116116
prepareComponents();
117117

118-
prepareDirectives();
119-
prepareInjectables();
120-
prepareRoutes();
118+
if ($dependenciesEngine.directives.length > 0) {
119+
prepareDirectives();
120+
}
121+
if ($dependenciesEngine.injectables.length > 0) {
122+
prepareInjectables();
123+
}
124+
if ($dependenciesEngine.routes.length > 0) {
125+
prepareRoutes();
126+
}
121127

122-
preparePipes();
128+
if ($dependenciesEngine.pipes.length > 0) {
129+
preparePipes();
130+
}
131+
132+
if ($dependenciesEngine.classes.length > 0) {
133+
prepareClasses();
134+
}
123135

124136
processPages();
125137
}
@@ -164,6 +176,26 @@ export namespace Application {
164176
}
165177
}
166178

179+
let prepareClasses = () => {
180+
logger.info('Prepare classes');
181+
$configuration.mainData.classes = $dependenciesEngine.getClasses();
182+
$configuration.addPage({
183+
name: 'classes',
184+
context: 'classes'
185+
});
186+
let i = 0,
187+
len = $configuration.mainData.classes.length;
188+
189+
for(i; i<len; i++) {
190+
$configuration.addPage({
191+
path: 'classes',
192+
name: $configuration.mainData.classes[i].name,
193+
context: 'class',
194+
class: $configuration.mainData.classes[i]
195+
});
196+
}
197+
}
198+
167199
let prepareComponents = () => {
168200
logger.info('Prepare components');
169201
$configuration.mainData.components = $dependenciesEngine.getComponents();
@@ -240,14 +272,14 @@ export namespace Application {
240272

241273
/*
242274
let i = 0,
243-
len = $configuration.mainData.injectables.length;
275+
len = $configuration.mainData.routes.length;
244276
245277
for(i; i<len; i++) {
246278
$configuration.addPage({
247-
path: 'injectables',
248-
name: $configuration.mainData.injectables[i].name,
249-
context: 'injectable',
250-
injectable: $configuration.mainData.injectables[i]
279+
path: 'routes',
280+
name: $configuration.mainData.routes[i].name,
281+
context: 'route',
282+
route: $configuration.mainData.routes[i]
251283
});
252284
}*/
253285
}

src/app/compiler/dependencies.ts

+21-11
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ export class Dependencies {
109109
'injectables': [],
110110
'pipes': [],
111111
'directives': [],
112-
'routes': []
112+
'routes': [],
113+
'classes': []
113114
};
114115
let sourceFiles = this.program.getSourceFiles() || [];
115116

@@ -144,20 +145,15 @@ export class Dependencies {
144145

145146
ts.forEachChild(srcFile, (node: ts.Node) => {
146147

147-
if (node.decorators) {
148+
let deps: Deps = <Deps>{};
149+
let file = srcFile.fileName.replace(process.cwd() + path.sep, '');
148150

151+
if (node.decorators) {
149152
let visitNode = (visitedNode, index) => {
150153

151-
let name = this.getSymboleName(node);
152-
153-
let deps: Deps = <Deps>{};
154-
155154
let metadata = node.decorators.pop();
156-
155+
let name = this.getSymboleName(node);
157156
let props = this.findProps(visitedNode);
158-
159-
let file = srcFile.fileName.replace(process.cwd() + path.sep, '');
160-
161157
let IO = this.getComponentIO(file);
162158

163159
if (this.isModule(metadata)) {
@@ -254,7 +250,21 @@ export class Dependencies {
254250
.forEach(visitNode);
255251
}
256252
else {
257-
// process.stdout.write('.');
253+
if (node.symbol) {
254+
if(node.symbol.flags === ts.SymbolFlags.Class) {
255+
let name = this.getSymboleName(node);
256+
let IO = this.getComponentIO(file);
257+
deps = {
258+
name,
259+
file: file,
260+
type: 'class',
261+
description: this.breakLines(IO.description),
262+
properties: IO.properties,
263+
methods: IO.methods
264+
};
265+
outputSymbols['classes'].push(deps);
266+
}
267+
}
258268
}
259269

260270
});

src/app/engines/dependencies.engine.ts

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export class DependenciesEngine {
88
injectables: Object[];
99
routes: Object[];
1010
pipes: Object[];
11+
classes: Object[];
1112
constructor(data: Object) {
1213
this.rawData = data;
1314
this.modules = _.sortBy(this.rawData.modules, ['name']);
@@ -16,6 +17,7 @@ export class DependenciesEngine {
1617
this.injectables = _.sortBy(this.rawData.injectables, ['name']);
1718
this.routes = _.sortBy(this.rawData.routes, ['name']);
1819
this.pipes = _.sortBy(this.rawData.pipes, ['name']);
20+
this.classes = _.sortBy(this.rawData.classes, ['name']);
1921
}
2022
getModules() {
2123
return this.modules;
@@ -35,4 +37,7 @@ export class DependenciesEngine {
3537
getPipes() {
3638
return this.pipes;
3739
}
40+
getClasses() {
41+
return this.classes;
42+
}
3843
};

src/app/engines/html.engine.ts

+2
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ export class HtmlEngine {
113113
'injectable',
114114
'pipes',
115115
'pipe',
116+
'classes',
117+
'class',
116118
'routes'
117119
],
118120
i = 0,

src/templates/page.hbs

+7
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@
7474
{{> pipe data }}
7575
{{/compare}}
7676

77+
{{#compare data.context "===" 'classes'}}
78+
{{> classes data }}
79+
{{/compare}}
80+
{{#compare data.context "===" 'class'}}
81+
{{> class data }}
82+
{{/compare}}
83+
7784
{{#compare data.context "===" 'routes'}}
7885
{{> routes data }}
7986
{{/compare}}

src/templates/partials/class.hbs

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<ol class="breadcrumb">
2+
<li><a href="./classes.html">Classes</a></li>
3+
<li>{{name}}</li>
4+
</ol>
5+
6+
<p class="comment">
7+
<h3>File</h3>
8+
</p>
9+
<p class="comment">
10+
<code>{{class.file}}</code>
11+
</p>
12+
13+
{{#if class.description}}
14+
<p class="comment">
15+
<h3>Description</h3>
16+
</p>
17+
<p class="comment">
18+
{{{ class.description}}}
19+
</p>
20+
{{/if}}
21+
22+
{{#if class.methods}}
23+
<section>
24+
<h3 id="methods">Methods</h3>
25+
<table class="table table-sm table-hover">
26+
<tbody>
27+
{{#each class.methods}}
28+
<tr>
29+
<td class="col-md-3"><code>{{name}}</code></td>
30+
<td class="col-md-9">
31+
{{#if args}}
32+
<div><i>Signature: </i><code>{{fxsignature this}}</code></div>
33+
{{/if}}
34+
{{#if returnType}}
35+
<div><i>Return type: </i><code>{{returnType}}</code></div>
36+
{{/if}}
37+
{{#if description}}
38+
<div class="io-description">{{{description}}}</div>
39+
{{/if}}
40+
</td>
41+
</tr>
42+
{{/each}}
43+
</tbody>
44+
</table>
45+
</section>
46+
{{/if}}
47+
48+
{{#if class.properties}}
49+
<section>
50+
<h3 id="inputs">Properties</h3>
51+
<table class="table table-sm table-hover">
52+
<tbody>
53+
{{#each class.properties}}
54+
<tr>
55+
<td class="col-md-3"><code>{{name}}</code></td>
56+
<td class="col-md-9">
57+
{{#if type}}
58+
<div><i>Type: </i><code>{{type}}</code></div>
59+
{{/if}}
60+
{{#if defaultValue}}
61+
<div><i>Default value: </i><code>{{defaultValue}}</code></div>
62+
{{/if}}
63+
{{#if description}}
64+
<div class="io-description">{{{description}}}</div>
65+
{{/if}}
66+
</td>
67+
</tr>
68+
{{/each}}
69+
</tbody>
70+
</table>
71+
</section>
72+
{{/if}}

src/templates/partials/classes.hbs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<h3>Classes</h3>
2+
<div class="container-fluid classes">
3+
<div class="row">
4+
{{#each classes}}
5+
<div class="col-sm-3">
6+
<div class="card">
7+
<div class="card-header">
8+
<h4 class="card-title">{{name}}</h4>
9+
</div>
10+
<div class="card-block">
11+
<footer class="text-center">
12+
<a href="./classes/{{name}}.html" class="btn btn-default">Browse</a>
13+
</footer>
14+
</div>
15+
</div>
16+
</div>
17+
{{/each}}
18+
</div>
19+
</div>

src/templates/partials/menu.hbs

+5-8
Original file line numberDiff line numberDiff line change
@@ -119,20 +119,17 @@
119119
</h4>
120120
</div>
121121
<div id="classes" class="panel-collapse collapse
122-
{{#compare context "===" 'classes'}} in {{/compare}}
123-
{{#compare context "===" 'classe'}} in {{/compare}}">
122+
{{#compare context "===" 'classes'}} in {{/compare}}
123+
{{#compare context "===" 'classe'}} in {{/compare}}">
124124
<div class="panel-body">
125125
<table class="table">
126+
{{#each classes}}
126127
<tr>
127128
<td>
128-
<a href="./">Class 1</a>
129-
</td>
130-
</tr>
131-
<tr>
132-
<td>
133-
<a href="./">Class 2</a>
129+
<a href="./classes/{{name}}.html">{{ name }}</a>
134130
</td>
135131
</tr>
132+
{{/each}}
136133
</table>
137134
</div>
138135
</div>

src/templates/partials/overview.hbs

+19-5
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<div class="card text-center">
1717
<div class="card-block">
1818
<h4 class="card-title"><span class="fa fa-archive"></span></h4>
19-
<p class="card-text">{{ modules.length }} modules</p>
19+
<p class="card-text">{{ modules.length }} module{{#compare modules.length ">" 1}}s{{/compare}}</p>
2020

2121
</div>
2222
<div class="card-footer text-muted">
@@ -30,7 +30,7 @@
3030
<div class="card text-center">
3131
<div class="card-block">
3232
<h4 class="card-title"><span class="fa fa-cogs"></span></h4>
33-
<p class="card-text">{{ components.length }} components</p>
33+
<p class="card-text">{{ components.length }} component{{#compare components.length ">" 1}}s{{/compare}}</p>
3434

3535
</div>
3636
<div class="card-footer text-muted">
@@ -44,7 +44,7 @@
4444
<div class="card text-center">
4545
<div class="card-block">
4646
<h4 class="card-title"><span class="fa fa-code"></span></h4>
47-
<p class="card-text">{{ directives.length }} directive</p>
47+
<p class="card-text">{{ directives.length }} directive{{#compare directives.length ">" 1}}s{{/compare}}</p>
4848

4949
</div>
5050
<div class="card-footer text-muted">
@@ -58,7 +58,7 @@
5858
<div class="card text-center">
5959
<div class="card-block">
6060
<h4 class="card-title"><span class="fa fa-code-fork"></span></h4>
61-
<p class="card-text">{{ injectables.length }} injectables</p>
61+
<p class="card-text">{{ injectables.length }} injectable{{#compare injectables.length ">" 1}}s{{/compare}}</p>
6262

6363
</div>
6464
<div class="card-footer text-muted">
@@ -74,7 +74,7 @@
7474
<div class="card text-center">
7575
<div class="card-block">
7676
<h4 class="card-title"><span class="fa fa-plus"></span></h4>
77-
<p class="card-text">{{ pipes.length }} pipes</p>
77+
<p class="card-text">{{ pipes.length }} pipe{{#compare pipes.length ">" 1}}s{{/compare}}</p>
7878

7979
</div>
8080
<div class="card-footer text-muted">
@@ -83,6 +83,20 @@
8383
</div>
8484
</div>
8585
{{/if}}
86+
{{#if classes}}
87+
<div class="col-sm-3">
88+
<div class="card text-center">
89+
<div class="card-block">
90+
<h4 class="card-title"><span class="fa fa-file-code-o"></span></h4>
91+
<p class="card-text">{{ classes.length }} classe{{#compare classes.length ">" 1}}s{{/compare}}</p>
92+
93+
</div>
94+
<div class="card-footer text-muted">
95+
<a href="./classes.html" class="btn btn-default">Browse</a>
96+
</div>
97+
</div>
98+
</div>
99+
{{/if}}
86100
<!--
87101
{{#if routes}}
88102
<div class="col-sm-3">

0 commit comments

Comments
 (0)