Skip to content

Commit 71e6341

Browse files
Merge pull request #141 from Kibibit/feature-file-tags-component
[FEATURE] File tags component
2 parents 1fafbf6 + 2e27f8e commit 71e6341

File tree

4 files changed

+83
-8
lines changed

4 files changed

+83
-8
lines changed

app/models/fileService.js

Lines changed: 75 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var fileService = {};
77

88
fileService.get = function(req, res) {
99
var fileFullPath = req.params.file_id;
10-
var mimeType = mime.lookup(fileFullPath) || '';
10+
var mimeType = mime.lookup(fileFullPath) || extraTypes(fileFullPath) || '';
1111

1212
// fix case for ES6 files (currently, highlight them as regular javascript)
1313
if (!mimeType && fileFullPath.toLowerCase().endsWith('es6')) {
@@ -39,7 +39,8 @@ fileService.get = function(req, res) {
3939
} else {
4040
var file = {
4141
content: data,
42-
mimeType: mimeType
42+
mimeType: mimeType,
43+
tags: fileService.getFileTags(fileFullPath)
4344
};
4445
res.json(file);
4546
console.time().tag('FILE CONTENT')
@@ -128,4 +129,76 @@ fileService.putExtraArg = function(req, res) {
128129

129130
};
130131

132+
fileService.getFileTags = function(filepath) {
133+
var fileTags = [];
134+
var filenameRegex = /[\\\/]([^\\\/]+)$/;
135+
var match = filenameRegex.exec(filepath);
136+
var match = match.length > 0 ? match[1] : undefined;
137+
if (filepath.indexOf('.') !== -1 && match) {
138+
var tags = match.split('.');
139+
// remove the extension
140+
tags.pop();
141+
142+
tags.forEach(function(tag) {
143+
switch (tag) {
144+
case 'min':
145+
fileTags.push('minified');
146+
break;
147+
case 'conf':
148+
case 'config':
149+
case 'configuration':
150+
fileTags.push('configuration');
151+
break;
152+
case 'test':
153+
case 'spec':
154+
case 'specs':
155+
fileTags.push('test');
156+
break;
157+
case 'template':
158+
case 'partial':
159+
fileTags.push('template');
160+
break;
161+
case 'controller':
162+
case 'ctrl':
163+
fileTags.push('controller');
164+
break;
165+
case 'service':
166+
fileTags.push('service');
167+
break;
168+
case 'module':
169+
fileTags.push('module');
170+
break;
171+
case 'routes':
172+
case 'route':
173+
fileTags.push('routes');
174+
break;
175+
case 'directive':
176+
fileTags.push('directive');
177+
break;
178+
}
179+
});
180+
}
181+
return fileTags;
182+
};
183+
184+
function extraTypes(filepath) {
185+
if (filepath.indexOf('.') !== -1) {
186+
var extensionStart = filepath.lastIndexOf('.') + 1;
187+
var fileExtension = filepath.substring(extensionStart, filepath.length);
188+
var mime;
189+
190+
switch (fileExtension) {
191+
case 'nsi':
192+
mime = 'nsis';
193+
break;
194+
default:
195+
mime = fileExtension;
196+
}
197+
198+
return 'application/' + mime;
199+
} else {
200+
return undefined;
201+
}
202+
}
203+
131204
module.exports = fileService;

app/models/folderService.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var dirTree = require('directory-tree'),
22
fs = require('fs'),
3-
path = require('path');
3+
path = require('path'),
4+
fileService = require('./fileService.js');
45
var console = process.console;
56

67
var folderService = {};
@@ -28,6 +29,7 @@ folderService.get = function(req, res) {
2829
output.children.push({
2930
name: items[i],
3031
path: directoryFullPath + '/' + items[i],
32+
tags: fileService.getFileTags(directoryFullPath + '/' + items[i]),
3133
type: folderService.getFileExtension(items[i])
3234
});
3335
}

bower.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ignore": [],
44
"dependencies": {
55
"angular-resizable": "~1.2.0",
6-
"angular": "~1.4.8",
6+
"angular": "~1.5.7",
77
"angular-animate": "~1.4.8",
88
"angular-aria": "~1.4.8",
99
"angular-material": "~1.0.3",
@@ -23,6 +23,6 @@
2323
"ng-device-detector": "~3.0.1"
2424
},
2525
"resolutions": {
26-
"angular": "1.5.5"
26+
"angular": "1.5.7"
2727
}
2828
}

public/app/views/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@
105105
<script type="text/javascript" src="assets/lib/bower_components/angular-fullscreen/src/angular-fullscreen.js"></script>
106106
<script type='text/javascript' src='assets/lib/bower_components/angular-loading-bar/build/loading-bar.min.js'></script>
107107
<script type="text/javascript" src="assets/lib/angular-tree-control.js"></script>
108-
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
109-
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ext-modelist.js"></script>
110-
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ext-themelist.js"></script>
108+
<script type="text/javascript" src="//cdn.rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ace.js"></script>
109+
<script type="text/javascript" src="https://cdn.rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ext-modelist.js"></script>
110+
<script type="text/javascript" src="https://cdn.rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ext-themelist.js"></script>
111111
<script type="text/javascript" src="https://rawgit.com/Kibibit/ui-layout/v1-0-5/src/ui-layout.js"></script>
112112
<script type="text/javascript" src="assets/lib/bower_components/json-formatter/dist/json-formatter.js"></script>
113113
<script type="text/javascript" src="assets/lib/ui-ace.js"></script>

0 commit comments

Comments
 (0)