1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-11 00:36:26 +00:00

- export untitled notes as 'Untitled' based on the language

- export notes with duplicate title as '<title> (<index>)'
This commit is contained in:
Baptiste Augrain
2020-06-12 16:18:27 +02:00
parent 5414fe3384
commit 80b8948433
6 changed files with 57 additions and 14 deletions

View File

@@ -1,8 +1,7 @@
import { findStorage } from 'browser/lib/findStorage'
import resolveStorageData from './resolveStorageData'
import resolveStorageNotes from './resolveStorageNotes'
import filenamify from 'filenamify'
import path from 'path'
import getFilename from './getFilename'
import exportNote from './exportNote'
import getContentFormatter from './getContentFormatter'
@@ -32,6 +31,8 @@ function exportFolder(storageKey, folderKey, fileType, exportDir, config) {
return Promise.reject(e)
}
const deduplicator = {}
return resolveStorageData(targetStorage)
.then(storage => {
return resolveStorageNotes(storage).then(notes => ({
@@ -49,9 +50,11 @@ function exportFolder(storageKey, folderKey, fileType, exportDir, config) {
return Promise.all(
notes.map(note => {
const targetPath = path.join(
const targetPath = getFilename(
note,
fileType,
exportDir,
`${filenamify(note.title, { replacement: '_' })}.${fileType}`
deduplicator
)
return exportNote(storage.key, note, targetPath, contentFormatter)

View File

@@ -7,6 +7,7 @@ import fs from 'fs'
import exportNote from './exportNote'
import formatMarkdown from './formatMarkdown'
import formatHTML from './formatHTML'
import getFilename from './getFilename'
/**
* @param {String} storageKey
@@ -83,11 +84,15 @@ function exportStorage(storageKey, fileType, exportDir, config) {
} catch (e) {}
})
const deduplicator = {}
return Promise.all(
notes.map(note => {
const targetPath = path.join(
folderNamesMapping[note.folder],
`${filenamify(note.title, { replacement: '_' })}.${fileType}`
const targetPath = getFilename(
note,
fileType,
exportDir,
deduplicator
)
return exportNote(storage.key, note, targetPath, contentFormatter)

View File

@@ -1,6 +1,5 @@
import exportNoteAs from './exportNoteAs'
import filenamify from 'filenamify'
import path from 'path'
import getFilename from './getFilename'
/**
* @param {Object} data
@@ -15,12 +14,11 @@ function exportTag(data, tag, fileType, exportDir, config) {
.map(note => note)
.filter(note => note.tags.indexOf(tag) !== -1)
const deduplicator = {}
return Promise.all(
notes.map(note => {
const filename = path.join(
exportDir,
`${filenamify(note.title, { replacement: '_' })}.${fileType}`
)
const filename = getFilename(note, fileType, exportDir, deduplicator)
return exportNoteAs(note, filename, fileType, config)
})

View File

@@ -0,0 +1,37 @@
import filenamify from 'filenamify'
import i18n from 'browser/lib/i18n'
import path from 'path'
/**
* @param {Object} note
* @param {String} fileType
* @param {String} directory
* @param {Object} deduplicator
*
* @return {String}
*/
function getFilename(note, fileType, directory, deduplicator) {
const basename = note.title
? filenamify(note.title, { replacement: '_' })
: i18n.__('Untitled')
if (deduplicator) {
if (deduplicator[basename]) {
const filename = path.join(
directory,
`${basename} (${deduplicator[basename]}).${fileType}`
)
++deduplicator[basename]
return filename
} else {
deduplicator[basename] = 1
}
}
return path.join(directory, `${basename}.${fileType}`)
}
module.exports = getFilename

View File

@@ -22,6 +22,7 @@ const dataApi = {
updateSnippet: require('./updateSnippet'),
fetchSnippet: require('./fetchSnippet'),
exportTag: require('./exportTag'),
getFilename: require('./getFilename'),
_migrateFromV6Storage: require('./migrateFromV6Storage'),
_resolveStorageData: require('./resolveStorageData'),

View File

@@ -202,7 +202,6 @@
"Create new folder": "Ordner erstellen",
"Folder name": "Ordnername",
"Create": "Erstellen",
"Untitled": "Neuer Ordner",
"Unlink Storage": "Speicherverknüpfung aufheben",
"Unlinking removes this linked storage from Boostnote. No data is removed, please manually delete the folder from your hard drive if needed.": "Die Verknüpfung des Speichers mit Boostnote wird entfernt. Es werden keine Daten gelöscht. Um die Daten dauerhaft zu löschen musst du den Ordner auf der Festplatte manuell entfernen.",
"Empty note": "Leere Notiz",