* Added support for extended properties to `Filter`. Unlike the basic properties, which allow the caller to specify a list of acceptable values, the extended properties only supports a map of properties, all of which must be available on the issue and match the given value. * Made `Issue` a concrete class. There was no reason it could not be a concrete object. The main difference is that the extending classes all add some sort of persistence to the issue, but having an in-memory `Issue` in its most basic form can be useful and should be allowed. * Changed the default priority for new issues from 9 to 5. * Bug fix on `FileIssue.formatIssue()`. If was not properly returning its result leading to failure if no extended properties were given. * Reworked `FileIssue.formatIssue()` to only print the horizontal rule seperating the issue text from the extended properties if there are extended properties to print as well. * Changed the `FileProject.createNewIssue()` to handle extended properties and handle the basic properties in a manner more consistent with `Issue`. It is now creating an `Issue` object and using the `FileIssue.formatIssue()` function to write that to a new issue file, then loading that file back in as a `FileIssue`. This cuts down on code duplication and makes it so that the options map that `FileProject.createNewIssue()` expects is the same as the options to the `Issue` constructor.
Description
Personal Issue Tracker. This was a small project to create a simple, file-based issue tracker with pleasant graphical and text-based user interfaces.
Languages
Nim
100%