Skip to content

Instantly share code, notes, and snippets.

@thoferon
Created January 13, 2020 08:32
Show Gist options
  • Save thoferon/68b19c5db8f98f04f9dfdfbb6701fd5b to your computer and use it in GitHub Desktop.
Save thoferon/68b19c5db8f98f04f9dfdfbb6701fd5b to your computer and use it in GitHub Desktop.
import parser from "./nonSequentialActions.js"
function generateDocumentation (parser) {
switch (parser.action) {
case "pure":
return null
case "stringField":
return { [parser.key]: "string" }
case "numberField":
return { [parser.key]: "number" }
case "objectField":
return { [parser.key]: generateDocumentation(parser.parser) }
case "apply":
const doc1 = generateDocumentation(parser.parser1)
const doc2 = generateDocumentation(parser.parser2)
if (doc1 === null) {
return doc2
} else if (doc2 === null) {
return doc1
} else {
return {...doc1, ...doc2}
}
}
}
console.log(generateDocumentation(parser))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment