src/plugins/editor-autosuggest-snippets/snippets.js
const operationRegex = "get|put|post|delete|options|head|patch"
/**
* Makes an HTTP operation snippet's content based on operation name
*
* @param {string} operationName - the HTTP verb
*
* @return {string} - the snippet content for that operation
*/
function makeOperationSnippet(operationName) {
return [
"${1:" + operationName + "}:",
" summary: ${2}",
" description: ${2}",
" responses:",
" ${3:200:}",
" description: ${4:OK}",
"${6}"
].join("\n")
}
/**
* Makes an HTTP response code snippet's content based on code
*
* @param {string} code - HTTP Response Code
*
* @return {string} - Snippet content
*/
function makeResponseCodeSnippet(code) {
return [
"${1:" + code + "}:",
" description: ${2}",
"${3}"
].join("\n")
}
export default [
{
name: "swagger",
trigger: "sw",
path: [],
content: [
"swagger: '2.0'",
"${1}"
].join("\n")
},
{
name: "info",
trigger: "info",
path: [],
content: [
"info:",
" version: ${1:0.0.0}",
" title: ${2:title}",
" description: ${3:description}",
" termsOfService: ${4:terms}",
" contact:",
" name: ${5}",
" url: ${6}",
" email: ${7}",
" license:",
" name: ${8:MIT}",
" url: ${9:http://opensource.org/licenses/MIT}",
"${10}"
].join("\n")
},
{
name: "get",
trigger: "get",
path: ["paths", "."],
content: makeOperationSnippet("get")
},
{
name: "post",
trigger: "post",
path: ["paths", "."],
content: makeOperationSnippet("post")
},
{
name: "put",
trigger: "put",
path: ["paths", "."],
content: makeOperationSnippet("put")
},
{
name: "delete",
trigger: "delete",
path: ["paths", "."],
content: makeOperationSnippet("delete")
},
{
name: "patch",
trigger: "patch",
path: ["paths", "."],
content: makeOperationSnippet("patch")
},
{
name: "options",
trigger: "options",
path: ["paths", "."],
content: makeOperationSnippet("options")
},
// operation level parameter
{
name: "parameter",
trigger: "param",
path: ["paths", ".", ".", "parameters"],
content: [
"- name: ${1:parameter_name}",
" in: ${2:query}",
" description: ${3:description}",
" type: ${4:string}",
"${5}"
].join("\n")
},
// path level parameter
{
name: "parameter",
trigger: "param",
path: ["paths", ".", "parameters"],
content: [
"- name: ${1:parameter_name}",
" in: ${2:path}",
" required: true",
" description: ${3:description}",
" type: ${4:string}",
"${5}"
].join("\n")
},
{
name: "response",
trigger: "resp",
path: ["paths", ".", ".", "responses"],
content: [
"${1:code}:",
" description: ${2}",
" schema: ${3}",
"${4}"
].join("\n")
},
{
name: "200",
trigger: "200",
path: ["paths", ".", operationRegex, "responses"],
content: makeResponseCodeSnippet("200")
},
{
name: "300",
trigger: "300",
path: ["paths", ".", operationRegex, "responses"],
content: makeResponseCodeSnippet("300")
},
{
name: "400",
trigger: "400",
path: ["paths", ".", operationRegex, "responses"],
content: makeResponseCodeSnippet("400")
},
{
name: "500",
trigger: "500",
path: ["paths", ".", operationRegex, "responses"],
content: makeResponseCodeSnippet("500")
},
{
name: "model",
trigger: "mod|def",
regex: "mod|def",
path: ["definitions"],
content: [
"${1:ModelName}:",
" type: object",
" properties:",
" ${2}"
]
}
]