1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# 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
|