51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
|
Prism.languages.http = {
|
||
|
'request-line': {
|
||
|
pattern: /^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\shttps?:\/\/\S+\sHTTP\/[0-9.]+/m,
|
||
|
inside: {
|
||
|
// HTTP Verb
|
||
|
property: /^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/,
|
||
|
// Path or query argument
|
||
|
'attr-name': /:\w+/
|
||
|
}
|
||
|
},
|
||
|
'response-status': {
|
||
|
pattern: /^HTTP\/1.[01] \d+.*/m,
|
||
|
inside: {
|
||
|
// Status, e.g. 200 OK
|
||
|
property: {
|
||
|
pattern: /(^HTTP\/1.[01] )\d+.*/i,
|
||
|
lookbehind: true
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
// HTTP header name
|
||
|
'header-name': {
|
||
|
pattern: /^[\w-]+:(?=.)/m,
|
||
|
alias: 'keyword'
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// Create a mapping of Content-Type headers to language definitions
|
||
|
var httpLanguages = {
|
||
|
'application/json': Prism.languages.javascript,
|
||
|
'application/xml': Prism.languages.markup,
|
||
|
'text/xml': Prism.languages.markup,
|
||
|
'text/html': Prism.languages.markup
|
||
|
};
|
||
|
|
||
|
// Insert each content type parser that has its associated language
|
||
|
// currently loaded.
|
||
|
for (var contentType in httpLanguages) {
|
||
|
if (httpLanguages[contentType]) {
|
||
|
var options = {};
|
||
|
options[contentType] = {
|
||
|
pattern: new RegExp('(content-type:\\s*' + contentType + '[\\w\\W]*?)(?:\\r?\\n|\\r){2}[\\w\\W]*', 'i'),
|
||
|
lookbehind: true,
|
||
|
inside: {
|
||
|
rest: httpLanguages[contentType]
|
||
|
}
|
||
|
};
|
||
|
Prism.languages.insertBefore('http', 'header-name', options);
|
||
|
}
|
||
|
}
|