feat: support dot-path namespace names#186
Open
SoundMatt wants to merge 1 commit into
Open
Conversation
A namespace like `name: A.B.C` is now expanded to the same AST as explicitly nested `A -> B -> C` namespaces. All content (methods, properties, events, structs, typedefs, enumerations, interface) is placed on the innermost namespace; intermediate layers are empty containers. Expansion is recursive so children of a dot-path namespace are also expanded. Implementation: `_expand_dot_namespace()` in ifex_parser.py, called from `get_ast_from_yaml_file()` immediately after dacite conversion. All generation tools benefit automatically since they all go through the same parser entry point. Tests: three pytest cases cover full three-part path equivalence, plain names staying unchanged, and a two-part path unit-tested directly against the helper function. Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #93
Summary
A namespace name containing dots (e.g.
name: com.example.vehicle) is now expanded to the equivalent nested structure at parse time:Implementation
_expand_dot_namespace()is added toifex_parser.pyand called fromget_ast_from_yaml_file()immediately afterdacite.from_dict(). It recursively processes the namespace tree, splitting any dot-path name into nestedNamespaceobjects. All content (methods, properties, events, structs, typedefs, enumerations, interface, child namespaces) is moved to the innermost namespace; intermediate layers are empty containers.Since all generation tools share the same parser entry point, they all benefit automatically without individual changes.
Tests
tests/test_dot_path_namespace/contains:dotpath.ifex/nested.ifex— equivalent YAML fixturestest_dot_path_namespace.py— three test cases:_expand_dot_namespace()directly for a two-part path