basecamp-guide
Version:
Task automator for the Basecamp Framework.
66 lines (56 loc) • 2.06 kB
JavaScript
// Dependecies
var p = require('path');
var fs = require('fs');
var Colors = require('colors');
var Exec = require('child_process').execSync;
var FileSys = require('./FileSystem.js');
/**
*
* Modifes content of files.
*
*/
var FileContentModifier = {
addContent : function(newContent, afterText, originalContent) {
if (this.contentExist(newContent, originalContent)) {
return undefined;
};
var rexpression = new RegExp(this.escapeRegExp(afterText));
var position = originalContent.search(rexpression);
var updatedContent = this.writeContentAtPosition(position + afterText.length, newContent, originalContent);
return updatedContent;
},
replaceContent : function(oldContent, newContent, originalContent) {
var rexpression = new RegExp(this.escapeRegExp(oldContent));
return originalContent.replace(rexpression, newContent);
},
writeContentAtPosition : function(position, content, fileContent) {
var part1 = fileContent.slice(0, position);
var part2 = fileContent.slice(position);
return part1 + content + part2;
},
searchNextPositionOf : function(searchChar, content, startPosition) {
var position = -1;
for (var i = startPosition; i <= content.length -1; i++) {
if (content[i] == searchChar) {
position = i;
break;
}
};
return position;
},
escapeRegExp : function(expression) {
return expression.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
},
contentExist : function(newContent, originalContent) {
var rexpression = new RegExp(this.escapeRegExp(newContent));
var position = originalContent.search(rexpression);
if (position >= 0) return true;
return false;
},
/*
* config-property will be injected from the
* CommandLineTool while adding the command
*/
config : {},
}
module.exports = FileContentModifier;