Use a dictionary instead of an array.

Should make it easier to define badges.
This commit is contained in:
WinnerWind 2025-07-15 16:23:55 +05:30
parent da13359e5a
commit b669be6e06

View File

@ -99,7 +99,12 @@ const REGEXP = /\[!!([^\]]+)\]/gm
const CODEREGEX = /`([^`\n]+)`/g const CODEREGEX = /`([^`\n]+)`/g
export interface Options { export interface Options {
customBadges: Array<[string, string, [number, number, number, number], number]> // Write in format [ [icon,name,[RED,GREEN,BLUE,ALPHA],TEXT_ALPHA], [icon,name,[RED,GREEN,BLUE,ALPHA],TEXT_ALPHA] ] customBadges: Array<{
name: string
icon: string
color: [number, number, number, number]
textOpacity: number
}>
useObsidianCSS: boolean useObsidianCSS: boolean
} }
@ -116,7 +121,7 @@ export const InlineBadges: QuartzTransformerPlugin<Partial<Options>> = (userOpts
textTransform(_ctx, src) { textTransform(_ctx, src) {
// Append custom badges. // Append custom badges.
for (let badge of opts.customBadges) { for (let badge of opts.customBadges) {
allBadges.push([badge[1], badge[1], badge[0]]) // Pushes it to the array in the format [icon,icon,name]. allBadges.push([badge.name, badge.name, badge.icon]) // Pushes it to the array in the format.
} }
var srcReplacement: string = src //Start by assuming there are no badges. var srcReplacement: string = src //Start by assuming there are no badges.
@ -143,13 +148,13 @@ export const InlineBadges: QuartzTransformerPlugin<Partial<Options>> = (userOpts
}) })
// Sets the colour of custom badges. // Sets the colour of custom badges.
for (let badgeDef of opts.customBadges) { for (let badgeDef of opts.customBadges) {
let badgeColor: string = `${badgeDef[2][0]},${badgeDef[2][1]},${badgeDef[2][2]}` let badgeColor: string = `${badgeDef.color[0]},${badgeDef.color[1]},${badgeDef.color[2]}`
let textColor: string = `rgba(var(--badge-color),${badgeDef[3]})` let textColor: string = `rgba(var(--badge-color),${badgeDef.textOpacity})`
let badgeName: string = badgeDef[1] // Removes the "" from the name. let badgeName: string = badgeDef.name
css.push({ css.push({
content: `.inline-badge[data-inline-badge=${badgeName}] { content: `.inline-badge[data-inline-badge=${badgeName}] {
--badge-color: ${badgeColor}; --badge-color: ${badgeColor};
color: rgba(var(--badge-color), ${badgeDef[2][3]}); color: rgba(var(--badge-color), ${badgeDef.color[3]});
background-color: ${textColor}; background-color: ${textColor};
}`, }`,
inline: true, inline: true,