rf-web/vendor/bundle/gems/rouge-3.12.0/lib/rouge/lexers/apiblueprint.rb
2019-10-21 10:18:17 +02:00

50 lines
1.2 KiB
Ruby

# frozen_string_literal: true
module Rouge
module Lexers
load_lexer 'markdown.rb'
class APIBlueprint < Markdown
title 'API Blueprint'
desc 'Markdown based API description language.'
tag 'apiblueprint'
aliases 'apiblueprint', 'apib'
filenames '*.apib'
mimetypes 'text/vnd.apiblueprint'
prepend :root do
# Metadata
rule(/(\S+)(:\s*)(.*)$/) do
groups Name::Variable, Punctuation, Literal::String
end
# Resource Group
rule(/^(#+)(\s*Group\s+)(.*)$/) do
groups Punctuation, Keyword, Generic::Heading
end
# Resource \ Action
rule(/^(#+)(.*)(\[.*\])$/) do
groups Punctuation, Generic::Heading, Literal::String
end
# Relation
rule(/^([\+\-\*])(\s*Relation:)(\s*.*)$/) do
groups Punctuation, Keyword, Literal::String
end
# MSON
rule(/^(\s+[\+\-\*]\s*)(Attributes|Parameters)(.*)$/) do
groups Punctuation, Keyword, Literal::String
end
# Request/Response
rule(/^([\+\-\*]\s*)(Request|Response)(\s+\d\d\d)?(.*)$/) do
groups Punctuation, Keyword, Literal::Number, Literal::String
end
end
end
end
end