Helpful niknaks or "things" that you may grasp for now and then
Go to file
Tristan B. Velloza Kildaire 1a754cf7e6
Feature: Generic tree and visitation framework (#17)
* Tree

- WIP

* Tree

- Added initial dfs

* Tree

- By default use the `always` strat

* Tree

- Added a TODO

* Tree

- Added ability to append

Tree (unittests)

- Updated unittests to test appending

* InclusionStratergy

- Now uses the `TreeNode!(T)` instead of the `T` itself

* VisitationTree

- Working on a visitation tree implementation

* Tree

- Pass in, explcitly, the touch startergy

* Tree

- Correct visitation stratergy

* VisitationTree (unittests)

- Added missing assertions

* Tree (unittests)

- Added missing assertions

* Methods

- Added rightward shifting mechanism

* Methods

- Added leftwards shifting mechanism

* TreeNode

- Added removal
- Added indexing support

* Tree

- Reworking opSlicwe

* Tree

- opSlice done

* Tree

- Added normal opSlice as well

* Tree (unittests)

- Updated test for parametwerized opSlice

* Tree

- Added opIndex

* Tree

- Cleaned up
- Removed `getValue()`

Tree (unittests)

- Added test for `removeNode(Tree!(T))`

* Containers

- Added `shiftIntoLeftwards` and `shiftIntoRightwards`

* Containers (unittests)

- Use new methods

* Containers

- Cleaned up

* InclusionStratergy

- Documented

TouchStratergy

- Documented

* Containers

- Documented method

* niknaks.arrays

- Moved here

niknaks.containers

- Moved here

* niknaks.arrays

- Updated unittestesd (test shrinking)
- Added docs

* niknaks.arrays

- Refactored

* niknaks.arrays

- Added this

* VisitationTree

- Documented

* VisitationTree

- Documented

* Tree (unittests)

- Added docs

* Tree (unittests)

- Moved import

* Tree

- Added some docs

* Tree

- CLeaned up

* Tree

- Documented

* Tree

- Documented

* Tree

- Documented
- Cleaned

* Always(T)

- Documented

* Tree

- Added `opDollar()` and `@property`'d `length()`

* Tree

- Adde doc

* Tree

- Renamed `Tree!(T)` to `Graph!(T)`

* Graph

- Typo fix

* Graph

- Clean up

* Graph

- Renamed

* Graph

- Documented helper methods

* Graph

- Typo fix

* graph

-  Documented `dfs(...)`

* Graph

-  Documented `toString()`

* Graph (unittests)

- Added tests for `opIndex(size_t)`

* Graph

- Implemented `getValue()`

Graph (unittests)

- Added tests for `getValue()`

* Graph (unittests)

- Added test for `opDollar()`

* README

- Updated docs
2024-05-04 10:51:31 +02:00
.github/workflows Pipelines 2023-10-15 13:19:18 +02:00
branding Branding 2023-09-30 14:26:58 +02:00
source/niknaks Feature: Generic tree and visitation framework (#17) 2024-05-04 10:51:31 +02:00
.gitignore - Updated `.gitignore` 2023-09-30 14:58:04 +02:00
CONTRIBUTING.md Update CONTRIBUTING.md 2023-09-30 17:59:38 +02:00
LICENSE - Added README and LICENSE 2023-09-30 13:10:54 +02:00
README.md Feature: Generic tree and visitation framework (#17) 2024-05-04 10:51:31 +02:00
dub.json Dub 2023-10-01 17:59:17 +02:00

README.md

Niknaks

DUB DUB DUB D Coverage Status

Helpful niknaks or "things" that you may grasp for now and then

Usage

To add the package to your project use the following:

dub add niknaks

Now read the DOCS!

Modules

Below is a short description of what each module provides, the list is expected to grow over time.

  • niknaks.functional
    • Predicates
    • Optionals
  • niknaks.arrays
    • Unique element generation
    • Prescence checking
  • niknaks.bits
    • Integral to byte conversions
    • Byte ordering functions
  • niknaks.debugging
    • Automagic dumping of arrays to textual representation
      • Supports arrays-of-arrays-of...
    • Enter-leave (with argument and name printing) for methods
    • Some textual manipulation routines as well
  • niknaks.containers
    • Some useful container types
    • Things such as CacheMap, Graph and VisitationTree
  • niknaks.mechanisms
    • User-defined input prompter, retry mechanisms
  • niknaks.config
    • Configuration entries and management

License

LGPL 3.0

Contributing

If there is something let me know or open a pull request for it. Try to keep the implementation generic as in by using parameterized types via D's templating capabilities.

Only make use of exceptions where it is absolutely necessary, normally go for an exception-less implementation and have an exception-based one which re-uses the former.

For more information please see CONTRIBUTING.