mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-24 20:01:18 +00:00
57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
/* eslint-disable
|
|
camelcase,
|
|
handle-callback-err,
|
|
no-useless-escape,
|
|
*/
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
// Fix any style issues and re-enable lint.
|
|
/*
|
|
* 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)
|
|
.replace(/\\documentclass\[/g, '\\documentclass[draft,')
|
|
// Without existing options
|
|
.replace(/\\documentclass\{/g, '\\documentclass[draft]{')
|
|
)
|
|
}
|
|
}
|