| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /* eslint-disable
- max-len,
- no-cond-assign,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS101: Remove unnecessary use of Array.from
- * 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 DocumentHelper
- module.exports = DocumentHelper = {
- getTitleFromTexContent(content, maxContentToScan) {
- if (maxContentToScan == null) {
- maxContentToScan = 30000
- }
- const TITLE_WITH_CURLY_BRACES = /\\[tT]itle\*?\s*{([^}]+)}/
- const TITLE_WITH_SQUARE_BRACES = /\\[tT]itle\s*\[([^\]]+)\]/
- for (const line of Array.from(
- DocumentHelper._getLinesFromContent(content, maxContentToScan)
- )) {
- let match
- if (
- (match =
- line.match(TITLE_WITH_CURLY_BRACES) ||
- line.match(TITLE_WITH_SQUARE_BRACES))
- ) {
- return DocumentHelper.detex(match[1])
- }
- }
- return null
- },
- contentHasDocumentclass(content, maxContentToScan) {
- if (maxContentToScan == null) {
- maxContentToScan = 30000
- }
- for (const line of Array.from(
- DocumentHelper._getLinesFromContent(content, maxContentToScan)
- )) {
- // We've had problems with this regex locking up CPU.
- // Previously /.*\\documentclass/ would totally lock up on lines of 500kb (data text files :()
- // This regex will only look from the start of the line, including whitespace so will return quickly
- // regardless of line length.
- if (line.match(/^\s*\\documentclass/)) {
- return true
- }
- }
- return false
- },
- detex(string) {
- return string
- .replace(/\\LaTeX/g, 'LaTeX')
- .replace(/\\TeX/g, 'TeX')
- .replace(/\\TikZ/g, 'TikZ')
- .replace(/\\BibTeX/g, 'BibTeX')
- .replace(/\\\[[A-Za-z0-9. ]*\]/g, ' ') // line spacing
- .replace(/\\(?:[a-zA-Z]+|.|)/g, '')
- .replace(/{}|~/g, ' ')
- .replace(/[${}]/g, '')
- .replace(/ +/g, ' ')
- .trim()
- },
- _getLinesFromContent(content, maxContentToScan) {
- if (typeof content === 'string') {
- return content.substring(0, maxContentToScan).split('\n')
- } else {
- return content
- }
- },
- }
|