Description
When a need ID contains a dot (e.g., REQ_1.a), it's not possible to reference this need, for example using the :need: directive like :need:`REQ_1.a` .
This issue occurs because the function sphinx_needs.utils.split_need_id splits the provided ID at dots, which prevents proper referencing of IDs containing dots.
Steps to reproduce
- set
needs_id_regex in conf.py
needs_id_regex = r"REQ_\d\.[a-z]"
- create a need with id containing a dot:
REQ_1.a
- Try to reference it using
:need:`REQ_1.a` .
in rst
.. req:: req-1
:id: REQ_1.a
requirement 1
:need:`REQ_1.a`
- The reference fails or does not work as expected
WARNING: linked need REQ_1.a not found [needs.link_ref]
Possible solution
- add documentation about main id and part id with examples.
- add configuration to allow the split or to change the split character.
- update function
sphinx_needs.roles.need_ref.process_need_ref to test the need_id_full if the need_id_main is not found.
According to your answers, I can fix that with a pull request.
Description
When a need ID contains a dot (e.g.,
REQ_1.a), it's not possible to reference this need, for example using the:need:directive like:need:`REQ_1.a`.This issue occurs because the function
sphinx_needs.utils.split_need_idsplits the provided ID at dots, which prevents proper referencing of IDs containing dots.Steps to reproduce
needs_id_regexinconf.pyREQ_1.a:need:`REQ_1.a`.in rst
Possible solution
sphinx_needs.roles.need_ref.process_need_refto test theneed_id_fullif theneed_id_mainis not found.According to your answers, I can fix that with a pull request.