Changeset ea3e722 in Klonkt for src/services/ap-core.js
- Timestamp:
- 08/09/2026 08:34:57 AM (4 weeks ago)
- Branches:
- main
- Children:
- 5ae4d61
- Parents:
- d60c498
- File:
-
- 1 edited
-
src/services/ap-core.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ap-core.js
rd60c498 rea3e722 124 124 return { label, slug }; 125 125 } 126 127 /** 128 * De #hashtags die in het LIJF van een post gelinkt staan, zoals ze GESCHREVEN 129 * zijn. De slug in de href is kleingeschreven -- dat is een adres -- maar de 130 * naam niet: #DoenweNiet blijft #DoenweNiet. 131 */ 132 export function hashtagTags(base, content) { 133 const tags = [], seen = new Set(); 134 const re = /class="[^"]*\bhashtag\b[^"]*"[^>]*>#([\p{L}\p{M}\p{N}_]+)</giu; 135 let m; 136 while ((m = re.exec(content || ''))) { 137 const k = m[1].toLowerCase(); 138 if (seen.has(k)) continue; seen.add(k); 139 tags.push({ type: 'Hashtag', href: `${base}/tag/${encodeURIComponent(k)}`, name: '#' + m[1] }); 140 } 141 return tags; 142 } 143 144 /** 145 * Het tagveld van een post en de #hashtags uit het lijf, samen en ontdubbeld. 146 * 147 * HET LIJF GAAT VOOR (Robin, 9-8): staat een tag allebei, dan wint de vorm 148 * zoals hij GESCHREVEN is. Het tagveld gaat door tagParts, en die maakt van 149 * "Doen we Niet" het CamelCase #DoenWeNiet -- nodig, want een hashtag mag geen 150 * spaties bevatten. Maar als iemand in zijn tekst #DoenweNiet heeft getypt is 151 * dat geen benadering meer maar de tag zelf, en dan hoort die te staan zoals 152 * hij er staat. Eerder won het veld, en verdween de geschreven vorm. 153 */ 154 export function buildHashtagList(base, tagsField, content) { 155 const out = [], seen = new Set(); 156 for (const h of hashtagTags(base, content)) { 157 const k = h.name.slice(1).toLowerCase(); if (seen.has(k)) continue; seen.add(k); 158 out.push(h); 159 } 160 for (const t of normalizeTags(tagsField)) { 161 const p = tagParts(t); if (!p || seen.has(p.slug)) continue; seen.add(p.slug); 162 out.push({ type: 'Hashtag', href: `${base}/tag/${encodeURIComponent(p.slug)}`, name: '#' + p.label }); 163 } 164 return out; 165 }
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)