| # Copyright 2020-2023 The Khronos Group Inc. |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal' |
| |
| include ::Asciidoctor |
| |
| class VUIDExpanderTreeprocessor < Extensions::Treeprocessor |
| def process document |
| # Find all list items inside Valid Usage sidebar blocks |
| document.find_by(context: :sidebar).each do |sidebar| |
| # Get sidebar title from instance variable to avoid side-effects from substitutions |
| if sidebar.title? and sidebar.instance_variable_get(:@title).start_with? "Valid Usage" |
| sidebar.find_by(context: :list_item) do |item| |
| # Get item text directly from instance variable to avoid inline substitutions |
| original_text = item.instance_variable_get(:@text) |
| # Find VUID anchor and append with matching VUID-styled text and line break |
| item.text = original_text.gsub(/(\[\[(VUID-[^\]]*)\]\])/, "\\1 [vuid]#\\2# +\n") |
| end |
| end |
| end |
| nil |
| end |
| end |
| |
| Extensions.register do |
| treeprocessor VUIDExpanderTreeprocessor |
| end |