Vulkan-Docs/config/tilde_open_block.rb

66 lines
2.2 KiB
Ruby
Raw Normal View History

Change log for September 5, 2017 Vulkan 1.0.60 spec update: * Bump API patch number and header version number to 60 for this update. Github Issues: * Document that <<queries-timestamps, Timestamp Queries>> can only be meaningfully compared when they are written from the same queue (public issue 216). * Document that the `<extension>` tag `type` attribute is required for non-disabled extensions (derived from, but does not close public issue 354). * Clean up registry schema length attribute descriptions to be consistent and correct (public issue 555). Internal Issues: * Replace as much of the hand-written extension appendix metadata as possible with asciidoc includes generated from corresponding attributes of +vk.xml+, and enhance the style guide to match. This avoids inconsistencies between +vk.xml+ and the appendices, and produces a more uniform style (internal issue 137). * Remove the generated extDependency.{py,sh} files from the tree and create them dynamically on demand instead, reducing merge conflicts (internal issue 713). * Add a prototype tool for generating in-place difference markup for sections guarded by asciidoc conditionals, and new syntax for open blocks to support it (internal issue 833). * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle types to the same physical device in the slink:VkPhysicalDeviceIDPropertiesKHR, flink:VkImportMemoryWin32HandleInfoKHR, slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR, slink:VkImportSemaphoreWin32HandleInfoKHR, slink:VkImportSemaphoreFdInfoKHR <<external-memory-handle-types-compatibility, External memory handle types compatibility>>, <<external-semaphore-handle-types-compatibility, External semaphore handle types compatibility>>, and <<external-fence-handle-types-compatibility, External fence handle types compatibility>> sections (internal issue 956). Other Issues: * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there is an interaction, but not a strict dependency), and add a new `extension` attribute to the `<require` XML tag to allow classifying a subset of interfaces of an extension as requiring another extension. Update the registry schema and documentation accordingly. New Extensions: * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask` GLSL extension) * `VK_EXT_sample_locations` * `VK_EXT_validation_cache`
2017-09-04 10:06:55 +00:00
require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal'
include ::Asciidoctor
module Asciidoctor
# This addition to the parser class overrides the "is_delimited_block?"
# method of the core parser, adding a new block delimiter of "~~~~" for open
# blocks, which can be extended to an arbitrary number of braces to allow
# nesting them, which is a limitation of the existing "only two dashes"
# delimiter: https://github.com/asciidoctor/asciidoctor/issues/1121
# The choice of tildes is based on comments in that bug.
class Parser
# Storing the original method so we can still call it from the overriding
# version
@OLD_is_delimited_block = method(:is_delimited_block?)
# Logic here matches the original Parser#is_delimited_block? method, see
# there for details of base implementation.
def self.is_delimited_block? line, return_match_data = false
# Quick check for a single brace character before forwarding to the
# original parser method.
if line[0] != '~'
return @OLD_is_delimited_block.(line, return_match_data)
else
line_len = line.length
if line_len <= 4
tip = line
tl = line_len
else
tip = line[0..3]
tl = 4
end
# Hardcoded tilde delimiter, since that's the only thing this
# function deals with.
if tip == '~~~~'
# tip is the full line when delimiter is minimum length
if tl < 4 || tl == line_len
if return_match_data
context = :open
masq = ['comment', 'example', 'literal', 'listing', 'pass', 'quote', 'sidebar', 'source', 'verse', 'admonition', 'abstract', 'partintro'].to_set
BlockMatchData.new(context, masq, tip, tip)
else
true
end
elsif %(#{tip}#{tip[-1..-1] * (line_len - tl)}) == line
if return_match_data
context = :open
masq = ['comment', 'example', 'literal', 'listing', 'pass', 'quote', 'sidebar', 'source', 'verse', 'admonition', 'abstract', 'partintro'].to_set
BlockMatchData.new(context, masq, tip, line)
else
true
end
else
nil
end
else
nil
end
end
end
end
end