Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marrus-sh/nib
🖋 A Swift implementation of the XML suite of specifications.
https://github.com/marrus-sh/nib
Last synced: 6 days ago
JSON representation
🖋 A Swift implementation of the XML suite of specifications.
- Host: GitHub
- URL: https://github.com/marrus-sh/nib
- Owner: marrus-sh
- License: other
- Created: 2018-07-22T08:08:46.000Z (over 6 years ago)
- Default Branch: current
- Last Pushed: 2021-03-17T12:54:41.000Z (almost 4 years ago)
- Last Synced: 2025-01-01T18:18:23.062Z (8 days ago)
- Language: Swift
- Homepage:
- Size: 514 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
- Changelog: CHANGELOG.markdown
- Contributing: CONTRIBUTING.markdown
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.markdown
Awesome Lists containing this project
README
# Nib #
A Swift implementation of various XML specifications.
Intended for use with RDF tools and libraries, but conceivably could be utilized elsewhere.| Swift version | Package version |
| :-: | :-: |
| 5.3 | 0.1 |Make something using Nib?
Feel free to talk about it in the [GitHub Discussions](https://github.com/marrus-sh/Nib/discussions/categories/demoscene).## Should I Use This Library? ##
*Ideally,* **you should not.**
Nib is built as a highly precise/exact implementation of the algorithms present in the specifications it implements, which makes it more of a reference implementation than an optimized library for general usage.
*However,* there is something of a paucity of highly‐optimized native Swift implementations for the sorts of things that Nib accomplishes, so **you may find that it is the best, most‐reliable tool for the job nonetheless.**Nib takes advantage of the flexibility of the Swift language to implement a number of DSLs for expressing common data structures or operations.
If you are going to be scared off by something like `.EmptyElemTag′ | [.STag′, .content′, .ETag′]` then you might want to pick a different library.**Nib requires an editor which supports Unicode and a programmer willing to input Unicode characters.**
## Supports ##
| Technology | Specification(s) | Notes |
| --- | :-: | --- |
| XML EBNF | [1.1 (2nd ed.)](https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-notation) | Requires transcription into a DSL. Greedy matching only. Uses the XML 1.1 definition of `Char` when matching bracketed expressions. Does not support validity constraints. |## Dependencies ##
Nib requires Swift ≥ 5.3.
Future versions of Nib will likely require even later versions of Swift.Future versions of Nib will likely require Foundation.
[`swift-corelibs-foundation`](https://github.com/apple/swift-corelibs-foundation) should provide sufficient compatibility for non-Apple platforms.## Documentation ##
[Browse the source.](Sources/)
Source modules are named according to the specification they implement.
Informative documentation and examples are provided as `.markdown` files in the `Documentation` directory within each module.## License ##
Copyright © 2020–2021 kibigo!.
The `.swift` source code files in this repository are made available under the terms of the Mozilla Public License, version 2.0.
For more information, see [LICENSE](LICENSE).The `.markdown` documentation files in this repository are *instead* made available under the terms of the Creative Commons Attribution-ShareAlike 4.0 International Public License 🅭🅯🄎.
__*This requires that modified documentation files provide a link back to the original documentation and indicate that changes were made.*__
(The history feature of GitHub’s main interface reasonably satisfies this requirement so long as it is easily accessible; be careful when uploading files elsewhere or hosting, including through GitHub Pages.)
For more information, see [DOCLICENSE](DOCLICENSE).When you contribute to this repository (e.g. by submitting a Pull Request on GitHub), you agree to license your contributions in the same way.