You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fold #47 (MarkdownGenerator removal) into Phase 4 #40
Research confirmed swift-markdown supports programmatic construction
(Heading/Paragraph/CodeBlock/etc. initializers + MarkupFormatter), so
the earlier "parse-only" assertion was incorrect. eneko/MarkdownGenerator
is 5 years stale (v1.1.0, Jan 2021) and has a single consumer in
Tagscriber/KannaMarkdownGenerator.swift — swapping it out during the
Kanna→SwiftSoup rewrite costs nothing extra and removes one dependency.
|#43| Upgrade SyndiKit subrepo from 0.3.7 to 0.8.1 | Open |
68
-
|#47| Remove MarkdownGenerator dependency | Open |
68
+
|#47| Remove MarkdownGenerator dependency | Open — fold into Phase 4 #40|
69
69
70
70
**Notes:**
71
71
-#43 should be resolved before Phase 2 — SyndiKit 0.3.7 predates the Swift 6.0 concurrency work. 0.8.1 has `Package@swift-6.0.swift` which SPM picks up automatically under Swift 6.3, providing proper `Sendable` conformances. Not a hard blocker (a Swift 6.3 parent can depend on a 5.5 package) but resolving it first avoids concurrency warnings during Phase 2.
72
+
-#47 no longer needs a "bring local" vendor step. `eneko/MarkdownGenerator` is used by exactly one file (`Sources/Tagscriber/KannaMarkdownGenerator.swift`) and swift-markdown (already adopted in Phase 4 #40) covers generation as well as parsing — see the Phase 4 dependency table. The removal will happen as part of the same Phase 4 rewrite that renames `KannaMarkdownGenerator` → `SwiftSoupMarkdownGenerator`.
|#40| Replace Ink with swift-markdown| Ink is used transitively via Publish's markdown pipeline |
165
+
|#40| Replace Ink with swift-markdown; also absorbs #47 (MarkdownGenerator removal) | Ink is used transitively via Publish's markdown pipeline. swift-markdown covers both parsing (replacing Ink) and generation (replacing MarkdownGenerator in `Tagscriber/KannaMarkdownGenerator.swift`) via its public block/inline initializers + `MarkupFormatter`.|
165
166
|#41| Replace ShellOut with swift-subprocess (Tagscriber) | Only affects `Tagscriber/PandocMarkdownGenerator.swift`|
166
167
|#46| Replace ShellOut with swift-subprocess (Publish/NPMPublishPlugin) | Affects subrepos — NPMPublishPlugin currently runs `npm ci` + `npm run publish` in `Styling/` via ShellOut; replacing ShellOut requires updating the plugin itself. If node-swift (#51) is viable it may eliminate NPMPublishPlugin entirely (run npm via native Node.js embedding). |
167
168
| TBD | Replace Kanna with SwiftSoup in `Tagscriber`| Rename `KannaMarkdownGenerator` → `SwiftSoupMarkdownGenerator`; XPath → CSS selectors |
| Ink | ✅ Replace with swift-markdown | Transitive via Publish subrepo |
175
176
| ShellOut | ✅ Replace with swift-subprocess | Official Apple framework |
176
177
| Kanna | ✅ Replace with SwiftSoup | Used in `Tagscriber/KannaMarkdownGenerator.swift` for HTML traversal (tag names, text, attributes, child selection). SwiftSoup is a pure Swift Linux-compatible replacement — XPath swaps for CSS selectors, properties become method calls. Rename `KannaMarkdownGenerator` → `SwiftSoupMarkdownGenerator`. |
177
-
| MarkdownGenerator |❌ Keep (bring local via#47) | Linux-compatible; swift-markdown is parse-only, not generation. Research newer generation alternatives — check library age/activity before bringing local. |
178
+
| MarkdownGenerator |✅ Replace with swift-markdown (absorbs#47) |`eneko/MarkdownGenerator` is stale (v1.1.0, Jan 2021, Swift 4.0+) and used by only one file, `Sources/Tagscriber/KannaMarkdownGenerator.swift`. swift-markdown supports programmatic construction — `Heading`, `Paragraph`, `CodeBlock`, `BlockQuote`, `UnorderedList`/`OrderedList`, `Image`, `Link`, `Emphasis`, `Strong` all expose public initializers — and `MarkupFormatter` renders a `Markup` tree back to CommonMark. Swift 6 concurrency-ready (immutable value types), Linux-compatible. Net dependency delta: −1 (since swift-markdown is already added by this row's #40). Migration happens in the same rewrite that renames `KannaMarkdownGenerator` → `SwiftSoupMarkdownGenerator`. |
178
179
| Yams | ❌ Keep | Foundation has no YAML support |
0 commit comments