strip source quote-aware and resolve dynamic class references

- strip # comments with quote-state tracking so a hash in a string no
  longer truncates the line
- skip heredoc bodies in every @(EOT) form so documentation text is not
  indexed as a class reference
- take every literal name out of a selector, following a bare variable
  through the assignments in its own file
- record a class reference that stays unresolved against its file, with
  any literal prefix, instead of dropping it
- read a class name case insensitively in a title or type reference
- tag each edge as a declaration or an ordering reference
This commit is contained in:
2026-09-12 17:18:56 +10:00
parent 6551ab9f13
commit 1c1df7f953
6 changed files with 873 additions and 228 deletions
@@ -5,5 +5,6 @@ class profiles::base {
class { 'profiles::viaclass': }
include profiles::cycle::a
include profiles::listed::a, profiles::listed::b
include profiles::dynamic
profiles::defined::thing { 'x': }
}
@@ -0,0 +1,3 @@
class profiles::dynamic {
include "profiles::dyn_${facts['role']}"
}