hyperboria/nexus/cognitron/web/plugins/scitech-helpers.js

69 lines
1.5 KiB
JavaScript

import { castStringToSingleString, escapeFormat, quoteUrl } from './utils'
import { getFirstAuthors, getIssuedDate } from './helpers'
function getRobustTitle (title, volume) {
if (volume) {
if (title) {
title = `${title} ${volume}`
} else {
title = volume
}
}
return escapeFormat(title)
}
export function getFilename (authors, title, doi, issuedDate, md5, extension) {
const limit = 55
const processedAuthor = castStringToSingleString((getFirstAuthors(authors, false, 1)).toLowerCase())
const processedTitle = castStringToSingleString(getRobustTitle(title)).toLowerCase()
const parts = []
if (processedAuthor) {
parts.push(processedAuthor)
}
if (processedTitle) {
parts.push(processedTitle)
}
let filename = parts.join('-')
const chars = []
let size = 0
let hitLimit = false
for (const c of filename) {
const currentSize = size + c.length
if (currentSize > limit) {
hitLimit = true
break
}
chars.push(c)
size = currentSize
}
filename = chars.join('')
if (hitLimit) {
const glyph = filename.lastIndexOf('-')
if (glyph !== -1) {
filename = filename.substr(0, glyph)
}
}
if (!filename) {
if (doi) {
filename = quoteUrl(doi, '')
} else {
filename = md5
}
}
const year = getIssuedDate(issuedDate)
if (year) {
filename = `${filename}-${year}`
}
filename = filename.replace(/-+/g, '-')
return `${filename}.${extension}`
}