v1.2.9: 라이브 에디터·홈 피드·메인 커버 개선
라이브 모드 코드/콜아웃/토글 편집, 슬래시 명령, 홈 Latest List·Compact·Cards 보기, 사이트 설정 메인 화면 커버(720px) 및 HomeHero 반영. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
63
lib/markdown-callout.js
Normal file
63
lib/markdown-callout.js
Normal file
@@ -0,0 +1,63 @@
|
||||
/** @type {string[]} */
|
||||
export const CALLOUT_BACKGROUND_OPTIONS = ['gray', 'blue', 'green', 'yellow', 'red', 'purple', 'pink']
|
||||
|
||||
/** @type {string[]} */
|
||||
export const CALLOUT_EMOJI_OPTIONS = ['💡', '⚠️', '❗', '✅', '📌', '🔥', '💬']
|
||||
|
||||
/**
|
||||
* 콜아웃 선언부 옵션을 파싱한다.
|
||||
* @param {string} line - 콜아웃 선언 라인
|
||||
* @returns {{ calloutEmojiEnabled: boolean, calloutEmoji: string, calloutBackground: string }}
|
||||
*/
|
||||
export const parseCalloutOptions = (line) => {
|
||||
const options = {
|
||||
calloutEmojiEnabled: true,
|
||||
calloutEmoji: '💡',
|
||||
calloutBackground: 'blue'
|
||||
}
|
||||
const tokens = String(line ?? '').trim().split(/\s+/).slice(1)
|
||||
|
||||
tokens.forEach((token) => {
|
||||
const [rawKey, ...rawValueParts] = token.split('=')
|
||||
|
||||
if (!rawKey || !rawValueParts.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const key = rawKey.toLowerCase()
|
||||
const value = rawValueParts.join('=').trim()
|
||||
|
||||
if (key === 'emoji') {
|
||||
if (!value || value === 'none') {
|
||||
options.calloutEmojiEnabled = false
|
||||
options.calloutEmoji = '💡'
|
||||
} else {
|
||||
options.calloutEmojiEnabled = true
|
||||
options.calloutEmoji = value
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
if (key === 'bg' && CALLOUT_BACKGROUND_OPTIONS.includes(value)) {
|
||||
options.calloutBackground = value
|
||||
}
|
||||
})
|
||||
|
||||
return options
|
||||
}
|
||||
|
||||
/**
|
||||
* 콜아웃 선언 줄을 만든다.
|
||||
* @param {{ calloutEmojiEnabled?: boolean, calloutEmoji?: string, calloutBackground?: string }} options - 옵션
|
||||
* @returns {string} 선언 줄
|
||||
*/
|
||||
export const buildCalloutOpenerLine = (options = {}) => {
|
||||
const emojiEnabled = options.calloutEmojiEnabled !== false
|
||||
const emoji = emojiEnabled ? (options.calloutEmoji || '💡') : 'none'
|
||||
const background = CALLOUT_BACKGROUND_OPTIONS.includes(options.calloutBackground)
|
||||
? options.calloutBackground
|
||||
: 'blue'
|
||||
|
||||
return `:::callout emoji=${emoji} bg=${background}`
|
||||
}
|
||||
Reference in New Issue
Block a user