doorstop-dev / doorstop

Requirements management using version control.
https://doorstop.readthedocs.io
Other
465 stars 126 forks source link

Level with alphanumeric character #623

Open baedorf opened 7 months ago

baedorf commented 7 months ago

We use a requirement catalog containing requirements like numbering like 1.1.2.a, but there could also be more subchapters like 1.1.2.1 so it is not possible to simple numbers. We would like to use this as level, but seems not to be possible. Is there a way to use levels with characters?

neerdoc commented 7 months ago

Hi @baedorf, unfortunately this is not possible with the current design. Only numeric levels are supported and only a . (period) is allowed as separator. In addition, any level ending with a 0 (zero) is interpreted as a heading.

If support for this is to be added, you will have to request it and explain all different use-cases that can affect it, for example sorting the levels, e.g., if there are levels 1.1, 1.2, 1.a, 1.b, how are they to be sorted?

baedorf commented 6 months ago

I try to explain our use case. We have a general requirements catalog with a structure like

1 Chapter_1 a This is the first requirement of Chapter_1 ... 1.1 Chapter_1_1 a This is a requirement of Chapter_1_1 ... 1.1.1 Chapter_1_1_1 // no requirements only additional sub chapters 1.1.1.1 Chapter_1_1_1_1 1.1.1.2 Chapter_1_1_1_2 a this is a requirement of Chapter_1_1_1_2 b regular requirement b

but it is also possible to create and add a new requirement not contained in the general catalog like

1.1.1.2 Chapter_1_1_1_2 a this is a requirement of Chapter_1_1_1_2 a1 manual created and added requirement b regular requirement b

The manual created requirement will always a combination of the requirement character level, e.g. a, and a number indicating position, e.g. 1, after the "original" requirement. This leads to something like a1. Our tool stores all requirements with a position in the requirement list of a chapter which is different of the requirement number! Internally all elements have a numeric position which will not be visible to the user.

Because we want stable requirement ids it is not possible for us to simply enumerate all requirements because of the manual added ones.