Compare commits
2 Commits
d584fe8bf7
...
569bef3226
Author | SHA1 | Date | |
---|---|---|---|
569bef3226 | |||
8fa7d4170f |
|
@ -24,7 +24,7 @@ Plugin.prototype.init = function (md) {
|
|||
export function tagParser(id, state, silent) {
|
||||
let input = state.src.slice(state.pos);
|
||||
|
||||
const match = /^#[^ ]+/.exec(input)
|
||||
const match = /^#\S+/.exec(input)
|
||||
if (!match) {
|
||||
return false
|
||||
}
|
||||
|
|
109
editor/src/sr.js
109
editor/src/sr.js
|
@ -9,6 +9,46 @@ function fillResult($modal, result) {
|
|||
$modal.find('.block-text').show().val(result.line)
|
||||
}
|
||||
|
||||
function replaceBlock(id, oldText) {
|
||||
return fetch('/api/block/replace', {
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
body: qs.encode({id, text: oldText}),
|
||||
});
|
||||
}
|
||||
|
||||
function appendBlock(id, newText) {
|
||||
return fetch('/api/block/append', {
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
body: qs.encode({id, text: newText}),
|
||||
});
|
||||
}
|
||||
|
||||
function resetSRBox(text) {
|
||||
let newText = text.replace(/#(?:\[\[)?sr\/(\d+)(?:\]\])?/, '#sr/1');
|
||||
return newText;
|
||||
}
|
||||
|
||||
function processSRBox(review, originalText) {
|
||||
let oldText = originalText
|
||||
.replace(/#(?:\[\[)?sr\/(\d+)(?:\]\])?/, function (text, srCount) {
|
||||
if (review === 'never') return '';
|
||||
let nextCount = 1;
|
||||
const count = parseInt(srCount)
|
||||
if (review === 'again') nextCount = 1
|
||||
if (review === 'soon') nextCount = count
|
||||
if (review === 'later') nextCount = count + 1
|
||||
return '#sr/' + nextCount;
|
||||
}).trim()
|
||||
if (review === 'never') return oldText.replace(/#(?:\[\[)?review(?:\]\])?/, '')
|
||||
return oldText
|
||||
}
|
||||
|
||||
$(function () {
|
||||
let reviewBlocks = [];
|
||||
|
||||
|
@ -50,19 +90,15 @@ $(function () {
|
|||
let text = $modal.find('.block-text').val()
|
||||
let id = $modal.data('block-id')
|
||||
|
||||
// let oldText = text
|
||||
// .replace(/#\[\[review\]\]/, '')
|
||||
// .replace(/#\[\[sr\/(\d+)\]\]/g, '')
|
||||
// .trim()
|
||||
|
||||
processText(review, text, originalText, id)
|
||||
.then(() => {
|
||||
if (reviewBlocks.length > 0) {
|
||||
const first = reviewBlocks.shift()
|
||||
// reload note with id
|
||||
search.startQuery('id:' + first.id, {internal: false}).then((results) => {
|
||||
fillResult($modal, results[0])
|
||||
})
|
||||
search.startQuery('id:' + first.id, {internal: false})
|
||||
.then((results) => {
|
||||
fillResult($modal, results[0])
|
||||
})
|
||||
} else {
|
||||
$('.review-modal .block-text').hide();
|
||||
$('.review-modal .block-title').hide();
|
||||
|
@ -73,59 +109,10 @@ $(function () {
|
|||
}).catch(e => console.log(e))
|
||||
});
|
||||
|
||||
function processText(review, text, originalText, id) {
|
||||
const changed = text !== originalText
|
||||
if (changed) {
|
||||
let newText = text.replace(/#\[\[sr\/(\d+)\]\]/, '#[[sr/1]]');
|
||||
return fetch('/api/block/append', {
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
body: qs.encode({id, text: newText}),
|
||||
}).then(() => {
|
||||
let oldText = originalText
|
||||
.replace(/#\[\[sr\/(\d+)\]\]/, function (text, srCount) {
|
||||
if (review === 'never') return '';
|
||||
let nextCount = 1;
|
||||
const count = parseInt(srCount)
|
||||
if (review === 'again') nextCount = 1
|
||||
if (review === 'soon') nextCount = count
|
||||
if (review === 'later') nextCount = count + 1
|
||||
return '#[[sr/' + nextCount + ']]';
|
||||
}).trim()
|
||||
if (review === 'never') oldText = oldText.replace(/#\[\[review\]\]/, '')
|
||||
return fetch('/api/block/replace', {
|
||||
method: 'post',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: qs.encode({id, text: oldText}),
|
||||
}).then(() => {
|
||||
return text
|
||||
})
|
||||
})
|
||||
} else {
|
||||
let oldText = text
|
||||
.replace(/#\[\[sr\/(\d+)\]\]/, function (text, srCount) {
|
||||
if (review === 'never') return '';
|
||||
|
||||
let nextCount = 1;
|
||||
const count = parseInt(srCount)
|
||||
if (review === 'again') nextCount = 1
|
||||
if (review === 'soon') nextCount = count
|
||||
if (review === 'later') nextCount = count + 1
|
||||
return '#[[sr/' + nextCount + ']]';
|
||||
}).trim()
|
||||
if (review === 'never') oldText = oldText.replace(/#\[\[review\]\]/, '')
|
||||
|
||||
return fetch('/api/block/replace', {
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
body: qs.encode({id, text: oldText}),
|
||||
}).then(() => {
|
||||
return text
|
||||
})
|
||||
async function processText(review, text, originalText, id) {
|
||||
if (text !== originalText) {
|
||||
await appendBlock(id, resetSRBox(text))
|
||||
}
|
||||
await replaceBlock(id, processSRBox(review, originalText))
|
||||
}
|
||||
});
|
||||
|
|
14
main.go
14
main.go
|
@ -922,11 +922,7 @@ func (h *indexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
func renderLinks(pageText string, edit bool) string {
|
||||
hrefRE, err := regexp.Compile(`#?\[\[\s*([^\]]+)\s*\]\]`)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
hrefRE := regexp.MustCompile(`#?\[\[\s*([^\]]+)\s*\]\]`)
|
||||
pageText = hrefRE.ReplaceAllStringFunc(pageText, func(s string) string {
|
||||
tag := false
|
||||
if s[0] == '#' {
|
||||
|
@ -955,6 +951,14 @@ func renderLinks(pageText string, edit bool) string {
|
|||
|
||||
return fmt.Sprintf("[%s](/%s%s)", s, editPart, cleanNameURL(s))
|
||||
})
|
||||
|
||||
tagRE := regexp.MustCompile(`#(\S+)`)
|
||||
pageText = tagRE.ReplaceAllStringFunc(pageText, func(s string) string {
|
||||
s = strings.TrimPrefix(s, "#")
|
||||
s = strings.TrimSpace(s)
|
||||
return fmt.Sprintf(`<a href="/%s" class="tag">%s</a>`, url.PathEscape(cleanNameURL(s)), s)
|
||||
})
|
||||
|
||||
return pageText
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user