blob: 3d222049276145b7c6b091accb15fbcfb0a94690 [file] [log] [blame]
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'
def self.analyze_text(text)
return 1 if text.start_with?('FORMAT: 1A\n')
end
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