블록 설정 패널 확장 v1.5.37
This commit is contained in:
@@ -1,15 +1,45 @@
|
||||
/**
|
||||
* 토글 선언 줄을 파싱한다.
|
||||
* @param {string} line - 토글 선언 줄
|
||||
* @returns {{ title: string, defaultOpen: boolean }} 토글 옵션
|
||||
*/
|
||||
export const parseToggleOpenerLine = (line) => {
|
||||
const raw = String(line ?? '').trim().replace(/^:::toggle\s*/, '').trim()
|
||||
const tokens = raw.split(/\s+/).filter(Boolean)
|
||||
const state = tokens[0]?.toLowerCase()
|
||||
const hasStateToken = ['open', 'opened', 'default-open', 'closed', 'close', 'default-closed'].includes(state)
|
||||
const defaultOpen = ['open', 'opened', 'default-open'].includes(state)
|
||||
const title = (hasStateToken ? tokens.slice(1).join(' ') : raw).trim()
|
||||
|
||||
return {
|
||||
title,
|
||||
defaultOpen
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 토글 선언 줄을 만든다.
|
||||
* @param {{ title?: string, defaultOpen?: boolean }} options - 옵션
|
||||
* @returns {string} 토글 선언 줄
|
||||
*/
|
||||
export const buildToggleOpenerLine = (options = {}) => {
|
||||
const title = String(options.title ?? '').trim() || '더 보기'
|
||||
const state = options.defaultOpen ? 'open' : 'closed'
|
||||
|
||||
return `:::toggle ${state} ${title}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 토글 블록 마크다운 줄 배열을 만든다.
|
||||
* @param {{ title?: string, body?: string }} options - 옵션
|
||||
* @param {{ title?: string, body?: string, defaultOpen?: boolean }} options - 옵션
|
||||
* @returns {string[]} 마크다운 줄
|
||||
*/
|
||||
export const buildToggleBlockLines = (options = {}) => {
|
||||
const title = String(options.title ?? '').trim() || '더 보기'
|
||||
const body = String(options.body ?? '').replace(/\r/g, '')
|
||||
const bodyLines = body.length ? body.split('\n') : ['']
|
||||
|
||||
return [
|
||||
`:::toggle ${title}`,
|
||||
buildToggleOpenerLine(options),
|
||||
...bodyLines,
|
||||
':::'
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user