resolve: #89 export MD with highlights

resolve: #35 export MD without [] conversion
fix: export MD not correctly await bug
add: default settings
This commit is contained in:
xiangyu 2022-08-01 16:59:47 +08:00
parent 9daa1d1162
commit bad8a9459e
9 changed files with 86 additions and 13 deletions

View File

@ -42,6 +42,14 @@
<checkbox id="__addonRef__-export-enableautosync" tooltiptext="&zotero.__addonRef__.export.workwith.label;&zotero.__addonRef__.export.singlefile.enable.label;" checked="false" oncommand="Zotero.Knowledge4Zotero.export.doUpdate(event)" />
<label value="&zotero.__addonRef__.export.enableautosync.enable.label;" tooltiptext="Only work with &zotero.__addonRef__.export.singlefile.enable.label;" />
</row>
<row>
<checkbox id="__addonRef__-export-enablehighlight" />
<label value="&zotero.__addonRef__.export.highlight.enable.label;" />
</row>
<row>
<checkbox id="__addonRef__-export-convertsquare" />
<label value="&zotero.__addonRef__.export.convertsquare.enable.label;" />
</row>
</rows>
</groupbox>
<groupbox flex="1">

View File

@ -39,6 +39,8 @@
<!ENTITY zotero.__addonRef__.export.file.enable.label "Export to MarkDown File">
<!ENTITY zotero.__addonRef__.export.singlefile.enable.label "Export Linked Notes to MarkDown File">
<!ENTITY zotero.__addonRef__.export.enableautosync.enable.label "Auto Sync to Export Path">
<!ENTITY zotero.__addonRef__.export.highlight.enable.label "Show Highlight">
<!ENTITY zotero.__addonRef__.export.convertsquare.enable.label "Convert Square Brackets[]">
<!ENTITY zotero.__addonRef__.export.richtext.label "RichText(MS Word) Settings">
<!ENTITY zotero.__addonRef__.export.copy.enable.label "Export to clipboard">
<!ENTITY zotero.__addonRef__.export.pdf.label "PDF Settings">

View File

@ -39,6 +39,8 @@
<!ENTITY zotero.__addonRef__.export.file.enable.label "导出为MarkDown文件">
<!ENTITY zotero.__addonRef__.export.singlefile.enable.label "导出链接的子笔记为MarkDown文件">
<!ENTITY zotero.__addonRef__.export.enableautosync.enable.label "修改时自动同步到导出路径">
<!ENTITY zotero.__addonRef__.export.highlight.enable.label "显示高亮">
<!ENTITY zotero.__addonRef__.export.convertsquare.enable.label "转换方括号[]">
<!ENTITY zotero.__addonRef__.export.richtext.label "富文本(MS Word)设置">
<!ENTITY zotero.__addonRef__.export.copy.enable.label "导出到剪贴板">
<!ENTITY zotero.__addonRef__.export.pdf.label "PDF设置">

View File

@ -0,0 +1,12 @@
pref("extensions.zotero.Knowledge4Zotero.syncNoteIds", "");
pref("extensions.zotero.Knowledge4Zotero.syncPeriod", 10000);
pref("extensions.zotero.Knowledge4Zotero.autoAnnotation", false);
pref("extensions.zotero.Knowledge4Zotero.exportFile", true);
pref("extensions.zotero.Knowledge4Zotero.exportSingleFile", false);
pref("extensions.zotero.Knowledge4Zotero.exportAutoSync", false);
pref("extensions.zotero.Knowledge4Zotero.exportHighlight", true);
pref("extensions.zotero.Knowledge4Zotero.convertSquare", true);
pref("extensions.zotero.Knowledge4Zotero.embedLink", true);
pref("extensions.zotero.Knowledge4Zotero.exportNote", false);
pref("extensions.zotero.Knowledge4Zotero.exportCopy", false);
pref("extensions.zotero.Knowledge4Zotero.exportPDF", false);

View File

@ -450,6 +450,9 @@ let bundle;
(global.TurndownService = factory()));
})(this, function () {
"use strict";
var _Zotero = Components.classes["@zotero.org/Zotero;1"].getService(
Components.interfaces.nsISupports
).wrappedJSObject;
function extend(destination) {
for (var i = 1; i < arguments.length; i++) {
@ -902,6 +905,20 @@ let bundle;
},
};
rules.backgroundColor = {
filter: function (node) {
return (
node.nodeName === "SPAN" &&
node.style["background-color"] &&
_Zotero.Prefs.get("Knowledge4Zotero.exportHighlight")
);
},
replacement: function (content, node) {
return `<span style="background-color: ${node.style["background-color"]}">${content}</span>`;
},
};
function cleanAttribute(attribute) {
return attribute ? attribute.replace(/(\n+\s*)+/g, "\n") : "";
}
@ -1331,13 +1348,16 @@ let bundle;
[/^(#{1,6}) /g, "\\$1 "],
[/`/g, "\\`"],
[/^~~~/g, "\\~~~"],
[/\[/g, "\\["],
[/\]/g, "\\]"],
[/^>/g, "\\>"],
// [/_/g, "\\_"],
[/^(\d+)\. /g, "$1\\. "],
];
if (_Zotero.Prefs.get("Knowledge4Zotero.convertSquare")) {
escapes.push([/\[/g, "\\["]);
escapes.push([/\]/g, "\\]"]);
}
function TurndownService(options) {
if (!(this instanceof TurndownService))
return new TurndownService(options);

View File

@ -1731,13 +1731,6 @@ class AddonEvents extends AddonBase {
this._Addon.template.getCitationStyle();
// Initialize sync notes
this._Addon.sync.getSyncNoteIds();
// Initialize sync period
// Default sync period is 10s
if (
typeof Zotero.Prefs.get("Knowledge4Zotero.syncPeriod") === "undefined"
) {
this._Addon.syncList.changeSyncPeriod(10);
}
this._Addon.views.updateAutoInsertAnnotationsMenu();
}
}

View File

@ -41,6 +41,22 @@ class AddonExport extends AddonBase {
) as XUL.Checkbox
).checked = exportAutoSync;
}
let exportHighlight = Zotero.Prefs.get("Knowledge4Zotero.exportHighlight");
if (typeof exportHighlight !== "undefined") {
(
this._window.document.getElementById(
"Knowledge4Zotero-export-enablehighlight"
) as XUL.Checkbox
).checked = exportHighlight;
}
let convertSquare = Zotero.Prefs.get("Knowledge4Zotero.convertSquare");
if (typeof convertSquare !== "undefined") {
(
this._window.document.getElementById(
"Knowledge4Zotero-export-convertsquare"
) as XUL.Checkbox
).checked = exportHighlight;
}
let embedLink = Zotero.Prefs.get("Knowledge4Zotero.embedLink");
if (typeof embedLink !== "undefined") {
(
@ -89,6 +105,13 @@ class AddonExport extends AddonBase {
let exportAutoSync = this._window.document.getElementById(
"Knowledge4Zotero-export-enableautosync"
) as XUL.Checkbox;
let exportHighlight = this._window.document.getElementById(
"Knowledge4Zotero-export-enablehighlight"
) as XUL.Checkbox;
let convertSquare = this._window.document.getElementById(
"Knowledge4Zotero-export-convertsquare"
) as XUL.Checkbox;
if (event) {
if (
@ -118,6 +141,9 @@ class AddonExport extends AddonBase {
} else {
exportAutoSync.disabled = true;
}
exportHighlight.disabled = !exportFile.checked;
convertSquare.disabled = !exportFile.checked;
}
doUnload() {
this.io.deferred && this.io.deferred.resolve();
@ -139,6 +165,16 @@ class AddonExport extends AddonBase {
"Knowledge4Zotero-export-enableautosync"
) as XUL.Checkbox
).checked;
let exportHighlight = (
this._window.document.getElementById(
"Knowledge4Zotero-export-enablehighlight"
) as XUL.Checkbox
).checked;
let convertSquare = (
this._window.document.getElementById(
"Knowledge4Zotero-export-convertsquare"
) as XUL.Checkbox
).checked;
let embedLink = (
this._window.document.getElementById(
"Knowledge4Zotero-export-embedLink"
@ -162,6 +198,8 @@ class AddonExport extends AddonBase {
Zotero.Prefs.set("Knowledge4Zotero.exportFile", exportFile);
Zotero.Prefs.set("Knowledge4Zotero.exportSingleFile", exportSingleFile);
Zotero.Prefs.set("Knowledge4Zotero.exportAutoSync", exportAutoSync);
Zotero.Prefs.set("Knowledge4Zotero.exportHighlight", exportHighlight);
Zotero.Prefs.set("Knowledge4Zotero.convertSquare", convertSquare);
Zotero.Prefs.set("Knowledge4Zotero.embedLink", embedLink);
Zotero.Prefs.set("Knowledge4Zotero.exportNote", exportNote);
Zotero.Prefs.set("Knowledge4Zotero.exportCopy", exportCopy);

View File

@ -741,8 +741,10 @@ class Knowledge extends AddonBase {
const translator = new Zotero.Translate.Export();
translator.setItems([newNote]);
translator.setLocation(Zotero.File.pathToFile(filename));
this._exportPromise = Zotero.Promise.defer();
translator.setTranslator(TRANSLATOR_ID_BETTER_MARKDOWN);
translator.translate();
await this._exportPromise.promise;
this._Addon.views.showProgressWindow(
"Better Notes",
`Note Saved to ${filename}`

View File

@ -103,10 +103,6 @@ class AddonSync extends AddonBase {
getSyncNoteIds(): Number[] {
const ids = Zotero.Prefs.get("Knowledge4Zotero.syncNoteIds");
if (typeof ids === "undefined") {
Zotero.Prefs.set("Knowledge4Zotero.syncNoteIds", "");
return [];
}
return ids.split(",").map((id: string) => Number(id));
}