1e5c31af7Sopenharmony_ci# Copyright 2020-2024 The Khronos Group Inc. 2e5c31af7Sopenharmony_ci# 3e5c31af7Sopenharmony_ci# SPDX-License-Identifier: Apache-2.0 4e5c31af7Sopenharmony_ci 5e5c31af7Sopenharmony_cirequire 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal' 6e5c31af7Sopenharmony_ci 7e5c31af7Sopenharmony_ciinclude ::Asciidoctor 8e5c31af7Sopenharmony_ci 9e5c31af7Sopenharmony_ciclass VUIDExpanderTreeprocessor < Extensions::Treeprocessor 10e5c31af7Sopenharmony_ci def process document 11e5c31af7Sopenharmony_ci # Find all list items inside Valid Usage sidebar blocks 12e5c31af7Sopenharmony_ci document.find_by(context: :sidebar).each do |sidebar| 13e5c31af7Sopenharmony_ci # Get sidebar title from instance variable to avoid side-effects from substitutions 14e5c31af7Sopenharmony_ci if sidebar.title? and sidebar.instance_variable_get(:@title).start_with? "Valid Usage" 15e5c31af7Sopenharmony_ci sidebar.find_by(context: :list_item) do |item| 16e5c31af7Sopenharmony_ci # Get item text directly from instance variable to avoid inline substitutions 17e5c31af7Sopenharmony_ci original_text = item.instance_variable_get(:@text) 18e5c31af7Sopenharmony_ci # Find VUID anchor and append with matching VUID-styled text and line break 19e5c31af7Sopenharmony_ci item.text = original_text.gsub(/(\[\[(VUID-[^\]]*)\]\])/, "\\1 [vuid]#\\2# +\n") 20e5c31af7Sopenharmony_ci end 21e5c31af7Sopenharmony_ci end 22e5c31af7Sopenharmony_ci end 23e5c31af7Sopenharmony_ci nil 24e5c31af7Sopenharmony_ci end 25e5c31af7Sopenharmony_ciend 26e5c31af7Sopenharmony_ci 27e5c31af7Sopenharmony_ciExtensions.register do 28e5c31af7Sopenharmony_ci treeprocessor VUIDExpanderTreeprocessor 29e5c31af7Sopenharmony_ciend 30