50 lines
1.2 KiB
Ruby
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
|