[Pkg-javascript-commits] [pdf.js] 106/157: make.js: Less greedy comment stripping

David Prévot taffit at moszumanska.debian.org
Tue Aug 11 06:46:44 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository pdf.js.

commit 1d4e450a79418ad791b43293ad8e7a90063e9122
Author: Rob Wu <rob at robwu.nl>
Date:   Wed Jul 8 23:49:14 2015 +0200

    make.js: Less greedy comment stripping
    
    The previous regex was too greedy, it stripped a significant amount of
    code when I put another file after core/murmurhash3.js. This was caused
    by the fact that the license header in murmurhash3.js does not contain
    "Mozilla Foundation", so the regex continued to match until my new file
    (which had the standard license header containing "Mozilla Foundation").
---
 make.js | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/make.js b/make.js
index d82db2e..b35b68e 100644
--- a/make.js
+++ b/make.js
@@ -482,9 +482,8 @@ target.bundle = function(args) {
   cd(ROOT_DIR);
   echo();
   echo('### Bundling files into ' + BUILD_TARGET);
-  var reg = /\n\/\* -\*- Mode(.|\n)*?Mozilla Foundation(.|\n)*?'use strict';/g;
 
-  function bundle(filename, dir, SRC_FILES, EXT_SRC_FILES) {
+  function bundle(filename, outfilename, SRC_FILES, EXT_SRC_FILES) {
     for (var i = 0, length = excludes.length; i < length; ++i) {
       var exclude = excludes[i];
       var index = SRC_FILES.indexOf(exclude);
@@ -500,15 +499,17 @@ target.bundle = function(args) {
 
     crlfchecker.checkIfCrlfIsPresent(SRC_FILES);
 
-    // Strip out all the vim/license headers.
-    bundleContent = bundleContent.replace(reg, '');
+    // Prepend a newline because stripCommentHeaders only strips comments that
+    // follow a line feed. The file where bundleContent is inserted already
+    // contains a license header, so the header of bundleContent can be removed.
+    bundleContent = stripCommentHeaders('\n' + bundleContent);
 
     // Append external files last since we don't want to modify them.
     bundleContent += cat(EXT_SRC_FILES);
 
     // This just preprocesses the empty pdf.js file, we don't actually want to
     // preprocess everything yet since other build targets use this file.
-    builder.preprocess(filename, dir, builder.merge(defines,
+    builder.preprocess(filename, outfilename, builder.merge(defines,
                            {BUNDLE: bundleContent,
                             BUNDLE_VERSION: bundleVersion,
                             BUNDLE_BUILD: bundleBuild}));
@@ -600,12 +601,21 @@ target.singlefile = function() {
 
 };
 
+function stripCommentHeaders(content, filename) {
+  // Strip out all the vim/license headers.
+  var notEndOfComment = '(?:[^*]|\\*(?!/))+';
+  var reg = new RegExp(
+    '\n/\\* -\\*- Mode' + notEndOfComment + '\\*/\\s*' +
+    '(?:/\\*' + notEndOfComment + '\\*/\\s*|//(?!#).*\n\\s*)+' +
+    '\'use strict\';', 'g');
+  content = content.replace(reg, '');
+  return content;
+}
+
 function cleanupJSSource(file) {
   var content = cat(file);
 
-  // Strip out all the vim/license headers.
-  var reg = /\n\/\* -\*- Mode(.|\n)*?Mozilla Foundation(.|\n)*?'use strict';/g;
-  content = content.replace(reg, '');
+  content = stripCommentHeaders(content, file);
 
   content.to(file);
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git



More information about the Pkg-javascript-commits mailing list