diff --git a/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/Config.yaml b/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/Config.yaml new file mode 100644 index 0000000..dd9fb8f --- /dev/null +++ b/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/Config.yaml @@ -0,0 +1,13 @@ +--- +name: OBClipper +identifier: me.00dani.obclipper +icon: iconify:simple-icons:obsidian +popclip version: 4225 +options: + - identifier: vault + label: Vault Name + type: string + default value: silica + +shell script file: clip.zsh +capture html: true diff --git a/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/clip.zsh b/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/clip.zsh new file mode 100755 index 0000000..47ebf0a --- /dev/null +++ b/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/clip.zsh @@ -0,0 +1,9 @@ +#!/bin/zsh +uriencode() { + jq -nr --arg input $1 '$input | @uri' +} + +HOOK="$(osascript -l JavaScript hooked.js)" +CLIPPING="$POPCLIP_MARKDOWN" +[[ -n $HOOK ]] && CLIPPING+=$'\n'"$HOOK #clipped" +exec open "obsidian://advanced-uri?vault=$(uriencode $POPCLIP_OPTION_VAULT)&daily=true&mode=append&data=$(uriencode $CLIPPING)" diff --git a/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/hooked.js b/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/hooked.js new file mode 100644 index 0000000..e921509 --- /dev/null +++ b/Library/Application Support/PopClip/Extensions/OBClipper.popclipext/hooked.js @@ -0,0 +1,12 @@ +(function() { + const titleSpecials = /([\[\]\\*_])/g; + const urlSpecials = /([()\\])/g; + const mdEscape = (str, specials) => str.replace(specials, '\\$1'); + const app = Application('Hookmark'); + let mark = app.bookmarkFromActiveWindow(); + if (typeof mark === 'string') { + delay(1); + mark = app.bookmarkByRequestHandle(mark); + } + return `[${mdEscape(mark.name(), titleSpecials)}](${mdEscape(mark.address(), urlSpecials)})`; +})();