@@ -2,6 +2,8 @@ import '@logseq/libs';
22import SettingSchemaDesc from '@logseq/libs/dist/LSPlugin.user' ;
33
44const markupChoices = [ "markdown" , "orgmode" ]
5+ const markupHeadMrk = [ "#" , "*" ]
6+ const markupTimeMrk = [ "**" , "*" ]
57const settingsTemplate :SettingSchemaDesc [ ] = [ {
68 key : "defaultTitle" ,
79 type : 'boolean' ,
@@ -13,40 +15,72 @@ const settingsTemplate:SettingSchemaDesc[] = [{
1315 type : 'boolean' ,
1416 default : true ,
1517 title : "Create a bold timestamp? (If not a header)" ,
16- description : "Insert a bold timestamp, otherwise it is only the time ." ,
18+ description : "Insert a bold timestamp. Not for header or custom text ." ,
1719 } , {
1820 key : "markup" ,
1921 type : 'enum' ,
2022 enumChoices : markupChoices ,
2123 enumPicker : 'radio' ,
2224 default : markupChoices [ 0 ] ,
2325 title : "What markup language to use?" ,
24- description : "Markdown and orgmode use different markup, choose yours ." ,
26+ description : "Markdown or Org-mode ." ,
2527 } , {
2628 key : "level" ,
2729 type : 'number' ,
2830 default : 3 ,
2931 title : "Title level?" ,
3032 description : "Insert timestamped heading level, default to 3 (### HH:MM title)" ,
31- }
33+ } , {
34+ key : "cstTime" ,
35+ type : 'string' ,
36+ default : "" ,
37+ title : "Custom time stamp?" ,
38+ description : "Leave empty for default, \n Use '<time>' as placeholder.\nExample: '[<time>]'" ,
39+ }
3240]
3341logseq . useSettingsSchema ( settingsTemplate )
3442
35-
36- async function updateBlock ( block , simple ) {
37- let content = / ^ # { 1 , 6 } \s + / . test ( block . content )
38- ? block . content . replace ( / ^ # { 1 , 6 } \s + / , '' )
39- : block . content ;
40- var today = new Date ( ) ;
41- let time = today . getHours ( ) + ":" + String ( today . getMinutes ( ) ) . padStart ( 2 , '0' )
42- let timePrefix = ( logseq . settings . markup === markupChoices [ 0 ] ) ? "**" : "*"
43- let timestamp = ( logseq . settings . defaultTitle ) ? " " + time + " " : timePrefix + time + timePrefix + " "
44- let linePrefix = ( logseq . settings . markup === markupChoices [ 0 ] ) ? "#" : "*"
45- let prefix = simple ? linePrefix . repeat ( logseq . settings . level ) : ''
46- await logseq . Editor . updateBlock (
47- block . uuid ,
48- prefix + timestamp + content
49- ) ;
43+ async function updateBlock ( block , insertHeader ) {
44+
45+ //prefixB
46+ let prefix = markupHeadMrk [ markupChoices . indexOf ( logseq . settings . markup ) ] . repeat ( logseq . settings . level )
47+ const prefixB = ( insertHeader ) ? prefix : ""
48+
49+ //timeB
50+ const today = new Date ( ) ;
51+ const time = today . getHours ( ) + ":" + String ( today . getMinutes ( ) ) . padStart ( 2 , '0' )
52+ //FIX: don't bold if header
53+ const timePrefix = ( insertHeader ) ? "" : markupTimeMrk [ markupChoices . indexOf ( logseq . settings . markup ) ]
54+ const timeHolder = ( logseq . settings . cstTime )
55+ ? logseq . settings . cstTime
56+ : timePrefix + "<time>" + timePrefix
57+ const reTime = new RegExp ( "<time>" )
58+ const timeB = timeHolder . replace ( reTime , time )
59+
60+ //contentB
61+ prefix = prefix . replace ( / \* / g, "\\*" ) //fix regex
62+ const re = new RegExp ( `^${ ( prefix === "*" ) ? "\*" : prefix } {1,6}\s+` )
63+ let contentB = re . test ( block . content )
64+ ? block . content . replace ( re , '' )
65+ : block . content ;
66+
67+ // const mdHeader = "#".repeat(logseq.settings.level)
68+
69+ // const linePrefix = (logseq.settings.markup)
70+ // ? markupHeadMrk[logseq.settings.markup]
71+ // : logseq.settings.cstPrefix
72+
73+
74+ // const timePrefix = (logseq.settings.markup) ? markupTimeMrk[logseq.settings.markup] : false
75+ // let timestamp = (logseq.settings.defaultTitle) ? " <time> " : timePrefix + "<time>" + timePrefix + " "
76+ // const re2 =
77+
78+ // let prefix = simple ? linePrefix.repeat(logseq.settings.level) : ''
79+
80+ await logseq . Editor . updateBlock (
81+ block . uuid ,
82+ `${ prefixB } ${ timeB } ${ contentB } `
83+ ) ;
5084}
5185
5286async function insertInterstitional ( simple ) {
@@ -99,6 +133,7 @@ async function parseQuery(randomQuery,queryTag){
99133
100134async function onTemplate ( uuid ) {
101135 //is block(uuid) on a template?
136+ //returns boolean
102137 try {
103138 const block = await logseq . Editor . getBlock ( uuid , { includeChildren : false } )
104139 const checkTPL = ( block . properties && block . properties . template != undefined ) ? true : false
0 commit comments