-
Notifications
You must be signed in to change notification settings - Fork 25
Even further with Tag... #36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Conflicts: Sources/SwiftSgml/TagBuilder.swift
|
Not sure if you started working on the merge yet. But I added a few more things. Like handling the "lang" attribute |
Other Global Attributes... add nil values and conditions
Conflicts: Sources/SwiftHtml/Attributes/Events.swift Sources/SwiftHtml/Tags/Body.swift Sources/SwiftHtml/Tags/Head.swift Sources/SwiftHtml/Tags/Html.swift Sources/SwiftSgml/Tag.swift Tests/SwiftHtmlTests/SwiftHtmlTests.swift
|
Is there any update on this PR? |
|
Is this repo abandoned? |
|
I'd like to do a complete overhaul for the library, but unfortunately time is my enemy nowadays. :( |
|
Give out some tasks, junior level swift developer.On May 15, 2025, at 3:49 PM, Tibor Bödecs ***@***.***> wrote:
tib left a comment (BinaryBirds/swift-html#36)
I'd like to do a complete overhaul for the library, but unfortunately time is my enemy nowadays. :(
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
|
Sorry for the long wait, I'm going to release v2 very soon, which will transition away from classes, so this PR won't be needed. You can follow the process here #39 |
This PR goes further than my previous one with changes to
TagAnd I'll admit it may be a bridge too far. Not sure. But I thought I'd put it out there.
It tries to address some things that have always struck me as odd or confusing about the library...
•
Tagappears like the base class. And thenGroupTagis a derivation. But it should really be the other way around.GroupTagis more foundational. It's just a renderless collection of childTags. Every other kind ofTagis a specialization: name, attributes and even more children. So this PR eliminatesGroupTagand makesTagrenderless by default. And then provides options and subclasses to specialize.TagBuilderjust puts components inside anotherTag.•
Nodehas always confused me. And why its properties should be separate. Maybe there's a good reason, but I don't see it in the library. So I moved them all intoTag. And I think it makes how to use the class more apparent. I also eliminated.groupand made thetypeproperty onTagoptional. Because that's essentially what the class is... a nothing, invisible container.• Lots of empty arrays get allocated.
Tag.childrenandNode.attributesare[]by default. And while it might not seem like a lot memory allocation, I wonder if it adds up in large hierarchies. So I made them optional.