Changeset 0677bac in Klonkt for src/services/ap-core.js
- Timestamp:
- 08/09/2026 08:24:16 AM (4 weeks ago)
- Branches:
- main
- Children:
- d60c498
- Parents:
- a5d14c7
- File:
-
- 1 edited
-
src/services/ap-core.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ap-core.js
ra5d14c7 r0677bac 93 93 })[(e || '').toLowerCase()] || 'image/jpeg'; 94 94 } 95 96 /** 97 * Het tagveld van een post als lijst. Het staat in de database als JSON-ARRAY 98 * en niet als kommalijst -- op komma's splitsen levert `#["Doen we Niet"` op, 99 * en dat faalt niet, het liegt. Vandaar een echte parser, met de kommavorm als 100 * terugval voor wat er handmatig is ingevuld. 101 */ 102 export function normalizeTags(t) { 103 if (Array.isArray(t)) return t; 104 if (typeof t === 'string') { 105 const s = t.trim(); if (!s) return []; 106 if (s[0] === '[') { try { const a = JSON.parse(s); return Array.isArray(a) ? a : []; } catch { /* dan toch als kommalijst */ } } 107 return s.split(',').map((x) => x.trim()).filter(Boolean); 108 } 109 return []; 110 } 111 112 /** 113 * Een tag -> { label, slug }. Tags van meerdere woorden worden CamelCase 114 * (#LiveMusic) voor de weergavenaam -- een Mastodon-hashtag mag geen spaties 115 * bevatten en CamelCase is daar de toegankelijkheidsnorm; de slug en de href 116 * blijven kleingeschreven ("livemusic"). 117 */ 118 export function tagParts(raw) { 119 const words = String(raw || '').trim().split(/[\s_]+/).map((w) => w.replace(/[^\p{L}\p{M}\p{N}]/gu, '')).filter(Boolean); 120 if (!words.length) return null; 121 const slug = words.join('').toLowerCase(); 122 if (!slug) return null; 123 const label = words.length > 1 ? words.map((w) => w[0].toUpperCase() + w.slice(1)).join('') : words[0]; 124 return { label, slug }; 125 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)