Skip to content

Commit

Permalink
Merge pull request #141 from Kibibit/feature-file-tags-component
Browse files Browse the repository at this point in the history
[FEATURE] File tags component
  • Loading branch information
thatkookooguy authored Jun 23, 2016
2 parents 40d43ab + c0c147b commit 55d5605
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 8 deletions.
77 changes: 75 additions & 2 deletions app/models/fileService.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ var fileService = {};

fileService.get = function(req, res) {
var fileFullPath = req.params.file_id;
var mimeType = mime.lookup(fileFullPath) || '';
var mimeType = mime.lookup(fileFullPath) || extraTypes(fileFullPath) || '';

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

};

fileService.getFileTags = function(filepath) {
var fileTags = [];
var filenameRegex = /[\\\/]([^\\\/]+)$/;
var match = filenameRegex.exec(filepath);
var match = match.length > 0 ? match[1] : undefined;
if (filepath.indexOf('.') !== -1 && match) {
var tags = match.split('.');
// remove the extension
tags.pop();

tags.forEach(function(tag) {
switch (tag) {
case 'min':
fileTags.push('minified');
break;
case 'conf':
case 'config':
case 'configuration':
fileTags.push('configuration');
break;
case 'test':
case 'spec':
case 'specs':
fileTags.push('test');
break;
case 'template':
case 'partial':
fileTags.push('template');
break;
case 'controller':
case 'ctrl':
fileTags.push('controller');
break;
case 'service':
fileTags.push('service');
break;
case 'module':
fileTags.push('module');
break;
case 'routes':
case 'route':
fileTags.push('routes');
break;
case 'directive':
fileTags.push('directive');
break;
}
});
}
return fileTags;
};

function extraTypes(filepath) {
if (filepath.indexOf('.') !== -1) {
var extensionStart = filepath.lastIndexOf('.') + 1;
var fileExtension = filepath.substring(extensionStart, filepath.length);
var mime;

switch (fileExtension) {
case 'nsi':
mime = 'nsis';
break;
default:
mime = fileExtension;
}

return 'application/' + mime;
} else {
return undefined;
}
}

module.exports = fileService;
4 changes: 3 additions & 1 deletion app/models/folderService.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
var dirTree = require('directory-tree'),
fs = require('fs'),
path = require('path');
path = require('path'),
fileService = require('./fileService.js');
var console = process.console;

var folderService = {};
Expand Down Expand Up @@ -28,6 +29,7 @@ folderService.get = function(req, res) {
output.children.push({
name: items[i],
path: directoryFullPath + '/' + items[i],
tags: fileService.getFileTags(directoryFullPath + '/' + items[i]),
type: folderService.getFileExtension(items[i])
});
}
Expand Down
4 changes: 2 additions & 2 deletions bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"ignore": [],
"dependencies": {
"angular-resizable": "~1.2.0",
"angular": "~1.4.8",
"angular": "~1.5.7",
"angular-animate": "~1.4.8",
"angular-aria": "~1.4.8",
"angular-material": "~1.0.3",
Expand All @@ -23,6 +23,6 @@
"ng-device-detector": "~3.0.1"
},
"resolutions": {
"angular": "1.5.5"
"angular": "1.5.7"
}
}
6 changes: 3 additions & 3 deletions public/app/views/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,9 @@
<script type="text/javascript" src="assets/lib/bower_components/angular-fullscreen/src/angular-fullscreen.js"></script>
<script type='text/javascript' src='assets/lib/bower_components/angular-loading-bar/build/loading-bar.min.js'></script>
<script type="text/javascript" src="assets/lib/angular-tree-control.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ext-modelist.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ext-themelist.js"></script>
<script type="text/javascript" src="//cdn.rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ace.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ext-modelist.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/ajaxorg/ace-builds/master/src-noconflict/ext-themelist.js"></script>
<script type="text/javascript" src="https://rawgit.com/Kibibit/ui-layout/v1-0-5/src/ui-layout.js"></script>
<script type="text/javascript" src="assets/lib/bower_components/json-formatter/dist/json-formatter.js"></script>
<script type="text/javascript" src="assets/lib/ui-ace.js"></script>
Expand Down

0 comments on commit 55d5605

Please sign in to comment.