Skip to content

Instantly share code, notes, and snippets.

@welll
Last active August 29, 2015 14:11
Show Gist options
  • Save welll/7f7fa578d0539ed5c275 to your computer and use it in GitHub Desktop.
Save welll/7f7fa578d0539ed5c275 to your computer and use it in GitHub Desktop.
NodeJS - Function to Replace a Text Block
/*
* This function will replace the content inside
* the commentary "setupVars"
*
* Param:
* content: the input string, e.g, a entire HTML file
* data: snippet to be included
*
* <html>
* <body>
* ......
* <!-- setupVars -->
* THIS CONTENT WILL BE REPLACED
* <!-- /setupVars -->
* ....
* ....
* </body>
* </html>
*
*/
var Helper = function(content, snippet) {
/*
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
Brackets
Brackets are used to find a range of characters:
Expression Description
[abc] Find any character between the brackets
[^abc] Find any character NOT between the brackets
[0-9] Find any digit between the brackets
[^0-9] Find any digit NOT between the brackets
(x|y) Find any of the alternatives specified
Metacharacter Description
. Find a single character, except newline or line terminator
\w Find a word character
\W Find a non-word character
\d Find a digit
\D Find a non-digit character
\s Find a whitespace character
\S Find a non-whitespace character
\b Find a match at the beginning/end of a word
\B Find a match not at the beginning/end of a word
\0 Find a NUL character
\n Find a new line character
\f Find a form feed character
\r Find a carriage return character
\t Find a tab character
\v Find a vertical tab character
\xxx Find the character specified by an octal number xxx
\xdd Find the character specified by a hexadecimal number dd
\uxxxx Find the Unicode character specified by a hexadecimal number xxxx
Quantifiers
Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{X} Matches any string that contains a sequence of X n's
n{X,Y} Matches any string that contains a sequence of X to Y n's
n{X,} Matches any string that contains a sequence of at least X n's
n$ Matches any string with n at the end of it
^n Matches any string with n at the beginning of it
?=n Matches any string that is followed by a specific string n
?!n Matches any string that is not followed by a specific string n
*/
var regbuild = /<!--\s*setupVars\s*-->/;
// end build pattern -- <!-- /setupVars -->
var regend = /<!--\s*\/setupVars\s*-->/;
var lines = content.replace(/\r\n/g, '\n').split(/\n/),
insideBlock = false,
populated = false;
linesReconstructed = [];
lines.forEach(function(l) {
if (insideBlock) {
var endbuild = regend.test(l);
if (endbuild) {
var setupVars = " \n" + snippet + "\n";
linesReconstructed.push(setupVars);
populated = true;
insideBlock = false;
} else {
//discard lines
}
} else {
/* Document - Start */
if (!populated) {
var build = regbuild.test(l);
if (build)
insideBlock = true;
else
linesReconstructed.push(l);
} else {
linesReconstructed.push(l);
}
}
});
return linesReconstructed.join('\n');
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment