diff --git a/components/prism-http.js b/components/prism-http.js index f94f6de926..edddb406bf 100644 --- a/components/prism-http.js +++ b/components/prism-http.js @@ -1,44 +1,50 @@ Prism.languages.http = { - 'request-line': { - pattern: /^(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b\shttps?:\/\/\S+\sHTTP\/[0-9.]+/, - inside: { - // HTTP Verb - property: /^\b(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/, - // Path or query argument - 'attr-name': /:\w+/ - } - }, - 'response-status': { - pattern: /^HTTP\/1.[01] [0-9]+.*/, - inside: { - // Status, e.g. 200 OK - property: /[0-9]+[A-Z\s-]+$/i - } - }, - // HTTP header name - keyword: /^[\w-]+:(?=.+)/m + 'request-line': { + pattern: /^(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b\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] [0-9]+.*/m, + inside: { + // Status, e.g. 200 OK + property: { + pattern: /(^HTTP\/1.[01] )[0-9]+.*/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 + '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]*?)\\n\\n[\\w\\W]*', 'i'), - lookbehind: true, - inside: { - rest: httpLanguages[contentType] - } - }; - Prism.languages.insertBefore('http', 'keyword', options); - } + 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); + } } diff --git a/components/prism-http.min.js b/components/prism-http.min.js index 05a0d74c2e..bd3b7287a3 100644 --- a/components/prism-http.min.js +++ b/components/prism-http.min.js @@ -1 +1 @@ -Prism.languages.http={"request-line":{pattern:/^(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b\shttps?:\/\/\S+\sHTTP\/[0-9.]+/,inside:{property:/^\b(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/,"attr-name":/:\w+/}},"response-status":{pattern:/^HTTP\/1.[01] [0-9]+.*/,inside:{property:/[0-9]+[A-Z\s-]+$/i}},keyword:/^[\w-]+:(?=.+)/m};var httpLanguages={"application/json":Prism.languages.javascript,"application/xml":Prism.languages.markup,"text/xml":Prism.languages.markup,"text/html":Prism.languages.markup};for(var contentType in httpLanguages)if(httpLanguages[contentType]){var options={};options[contentType]={pattern:new RegExp("(content-type:\\s*"+contentType+"[\\w\\W]*?)\\n\\n[\\w\\W]*","i"),lookbehind:!0,inside:{rest:httpLanguages[contentType]}},Prism.languages.insertBefore("http","keyword",options)} \ No newline at end of file +Prism.languages.http={"request-line":{pattern:/^(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b\shttps?:\/\/\S+\sHTTP\/[0-9.]+/m,inside:{property:/^(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/,"attr-name":/:\w+/}},"response-status":{pattern:/^HTTP\/1.[01] [0-9]+.*/m,inside:{property:{pattern:/(^HTTP\/1.[01] )[0-9]+.*/i,lookbehind:!0}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var httpLanguages={"application/json":Prism.languages.javascript,"application/xml":Prism.languages.markup,"text/xml":Prism.languages.markup,"text/html":Prism.languages.markup};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:!0,inside:{rest:httpLanguages[contentType]}},Prism.languages.insertBefore("http","header-name",options)} \ No newline at end of file