converted index.js to task

master
Matt Huntington 10 years ago
parent 1b34c2dd2f
commit 3a9f5fe626

@ -1,3 +1,4 @@
var converter = require('./index.js');
module.exports = function(grunt) { module.exports = function(grunt) {
grunt.initConfig({ grunt.initConfig({
@ -18,7 +19,11 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['watch']); grunt.registerTask('default', ['watch']);
grunt.registerTask('convert-tabs-to-html', function(){ grunt.registerTask('convert-tabs-to-html', function(){
console.log('hi'); var done = this.async();
converter(function(result){
console.log(result);
done();
});
}); });
}; };

@ -1,69 +1,74 @@
#!/usr/bin/env node
fs = require('fs'); fs = require('fs');
module.exports = function(callback){
var insertTabs = function(num_tabs) { var insertTabs = function(num_tabs) {
var result = ''; var result = '';
for(var i = 0; i < num_tabs; i++){ for(var i = 0; i < num_tabs; i++){
result += '\t'; result += '\t';
}
return result;
} }
return result;
}
var emptyTabStack = function(tabStack){ var emptyTabStack = function(tabStack){
var result = ''; var result = '';
while(tabStack.length > 0){ while(tabStack.length > 0){
result += tabStack.pop(); result += tabStack.pop();
}
return result;
} }
return result; var popTabStack = function(tabStack, current_line_num_tabs, previous_line_num_tabs){
} var result = '';
var popTabStack = function(tabStack, current_line_num_tabs, previous_line_num_tabs){ for(var i = previous_line_num_tabs; i > current_line_num_tabs; i--){
var result = ''; result += tabStack.pop();
for(var i = previous_line_num_tabs; i > current_line_num_tabs; i--){ }
result += tabStack.pop(); return result;
} }
return result;
}
var parseFile = function(data, callback){ var parseFile = function(data, callback){
var previous_line = -1; var previous_line = -1;
var lines = data.split('\n'); var lines = data.split('\n');
var html = ''; var html = '';
var tabStack = []; var tabStack = [];
lines.forEach(function(value, index){ lines.forEach(function(value, index){
if(value !== ''){ if(value !== ''){
var split_value = value.split('\t'); var split_value = value.split('\t');
var num_tabs = split_value.length - 1; var num_tabs = split_value.length - 1;
if(num_tabs > previous_line){ if(num_tabs > previous_line){
if(num_tabs > 0){ if(num_tabs > 0){
html += '\n' + insertTabs(num_tabs * 2 - 1) +'<li>\n'; html += '\n' + insertTabs(num_tabs * 2 - 1) +'<li>\n';
}
html += insertTabs(num_tabs * 2) + '<ul>';
var html_push_string = '\n' + insertTabs(num_tabs * 2) + '</ul>';
if(num_tabs > 0){
html_push_string += '\n' + insertTabs(num_tabs * 2 - 1) + '</li>';
}
tabStack.push(html_push_string);
} }
html += insertTabs(num_tabs * 2) + '<ul>'; else if(num_tabs < previous_line){
var html_push_string = '\n' + insertTabs(num_tabs * 2) + '</ul>'; html += popTabStack(tabStack, num_tabs, previous_line);
if(num_tabs > 0){
html_push_string += '\n' + insertTabs(num_tabs * 2 - 1) + '</li>';
} }
tabStack.push(html_push_string); html += '\n' + insertTabs(num_tabs * 2 + 1) +
'<li>' + split_value[split_value.length - 1] + '</li>';
previous_line = num_tabs;
} }
else if(num_tabs < previous_line){
html += popTabStack(tabStack, num_tabs, previous_line);
}
html += '\n' + insertTabs(num_tabs * 2 + 1) +
'<li>' + split_value[split_value.length - 1] + '</li>';
previous_line = num_tabs;
}
});
html += emptyTabStack(tabStack);
callback(html);
}
fs.readFile(process.argv[2], 'utf8', function(err, data){
if(err){
console.log(err);
} else {
parseFile(data, function(html){
console.log('<html><head></head><body>');
console.log(html);
console.log('</body></html>');
}); });
html += emptyTabStack(tabStack);
callback(html);
} }
}); //fs.readFile(process.argv[2], 'utf8', function(err, data){
fs.readFile('test.txt', 'utf8', function(err, data){
if(err){
console.log(err);
} else {
parseFile(data, function(html){
//console.log('<html><head></head><body>');
//console.log(html);
//console.log('</body></html>');
var result = '<html><head></head><body>';
result += html;
result += '</body></html>';
callback(result);
});
}
});
};

Loading…
Cancel
Save