Vulkan-Docs/doc/specs/vulkan/config/vulkan-macros/extension.rb

240 lines
4.6 KiB
Ruby

# Copyright (c) 2016-2017 The Khronos Group Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal'
include ::Asciidoctor
class VulkanInlineMacroBase < Extensions::InlineMacroProcessor
use_dsl
using_format :short
end
class NormativeInlineMacroBase < VulkanInlineMacroBase
def text
'normative'
end
def process parent, target, attributes
'<strong class="purple">' + text + '</strong>'
end
end
class LinkInlineMacroBase < VulkanInlineMacroBase
def process parent, target, attributes
'<code><a href="#' + target + '">' + target + '</a></code>'
end
end
class CodeInlineMacroBase < VulkanInlineMacroBase
def process parent, target, attributes
'<code>' + target + '</code>'
end
end
class StrongInlineMacroBase < VulkanInlineMacroBase
def process parent, target, attributes
'<code>' + target + '</code>'
end
end
class ParamInlineMacroBase < VulkanInlineMacroBase
def process parent, target, attributes
'<code>' + target + '</code>'
end
end
class CanInlineMacro < NormativeInlineMacroBase
named :can
match /can:(\w*)/
def text
'can'
end
end
class CannotInlineMacro < NormativeInlineMacroBase
named :cannot
match /cannot:(\w*)/
def text
'cannot'
end
end
class MayInlineMacro < NormativeInlineMacroBase
named :may
match /may:(\w*)/
def text
'may'
end
end
class MayNotInlineMacro < NormativeInlineMacroBase
named :maynot
match /maynot:(\w*)/
def text
'may not'
end
end
class MustInlineMacro < NormativeInlineMacroBase
named :must
match /must:(\w*)/
def text
'must'
end
end
class MustNotInlineMacro < NormativeInlineMacroBase
named :mustnot
match /mustnot:(\w*)/
def text
'must not'
end
end
class OptionalInlineMacro < NormativeInlineMacroBase
named :optional
match /optional:(\w*)/
def text
'optional'
end
end
class RecommendInlineMacro < NormativeInlineMacroBase
named :recommend
match /recommend:(\w*)/
def text
'recommend'
end
end
class RequiredInlineMacro < NormativeInlineMacroBase
named :required
match /required:(\w*)/
def text
'required'
end
end
class ShouldInlineMacro < NormativeInlineMacroBase
named :should
match /should:(\w*)/
def text
'should'
end
end
class ShouldNotInlineMacro < NormativeInlineMacroBase
named :shouldnot
match /shouldnot:(\w*)/
def text
'should not'
end
end
class FlinkInlineMacro < LinkInlineMacroBase
named :flink
match /flink:(\w+)/
end
class FnameInlineMacro < StrongInlineMacroBase
named :fname
match /fname:(\w+)/
end
class FtextInlineMacro < StrongInlineMacroBase
named :ftext
match /ftext:(\w+)/
end
class SnameInlineMacro < CodeInlineMacroBase
named :sname
match /sname:(\w+)/
end
class SlinkInlineMacro < LinkInlineMacroBase
named :slink
match /slink:(\w+)/
end
class StextInlineMacro < CodeInlineMacroBase
named :stext
match /stext:(\w+)/
end
class EnameInlineMacro < CodeInlineMacroBase
named :ename
match /ename:(\w+)/
end
class ElinkInlineMacro < LinkInlineMacroBase
named :elink
match /elink:(\w+)/
end
class EtextInlineMacro < CodeInlineMacroBase
named :etext
match /etext:([\w\*]+)/
end
class PnameInlineMacro < ParamInlineMacroBase
named :pname
match /pname:((\w[\w.]*)*\w+)/
end
class PtextInlineMacro < ParamInlineMacroBase
named :ptext
match /ptext:((\w[\w.]*)*\w+)/
end
class DnameInlineMacro < CodeInlineMacroBase
named :dname
match /dname:(\w+)/
end
class DlinkInlineMacro < LinkInlineMacroBase
named :dlink
match /dlink:(\w+)/
end
class TnameInlineMacro < CodeInlineMacroBase
named :tname
match /tname:(\w+)/
end
class TlinkInlineMacro < LinkInlineMacroBase
named :tlink
match /tlink:(\w+)/
end
class BasetypeInlineMacro < CodeInlineMacroBase
named :basetype
match /basetype:(\w+)/
end
class CodeInlineMacro < StrongInlineMacroBase
named :code
match /code:(\w+)/
end