Vulkan-Docs/doc/specs/vulkan/config/tilde_open_block.rb
Jon Leech df88ded281 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 03:06:55 -07:00

66 lines
2.2 KiB
Ruby

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