overleaf/services/clsi/app/coffee/DraftModeManager.js

38 lines
1.3 KiB
JavaScript
Raw Normal View History

/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
let DraftModeManager;
const fs = require("fs");
const logger = require("logger-sharelatex");
module.exports = (DraftModeManager = {
injectDraftMode(filename, callback) {
if (callback == null) { callback = function(error) {}; }
return fs.readFile(filename, "utf8", function(error, content) {
if (error != null) { return callback(error); }
// avoid adding draft mode more than once
if ((content != null ? content.indexOf("\\documentclass\[draft") : undefined) >= 0) {
return callback();
}
const modified_content = DraftModeManager._injectDraftOption(content);
logger.log({
content: content.slice(0,1024), // \documentclass is normally v near the top
modified_content: modified_content.slice(0,1024),
filename
}, "injected draft class");
return fs.writeFile(filename, modified_content, callback);
});
},
_injectDraftOption(content) {
return content
// With existing options (must be first, otherwise both are applied)
2016-02-02 10:28:59 -05:00
.replace(/\\documentclass\[/g, "\\documentclass[draft,")
// Without existing options
.replace(/\\documentclass\{/g, "\\documentclass[draft]{");
}
});