asciidoctor-liquibase
Version:
Asciidoctor.js extension to render liquibase changesets as entity relationship diagram
157 lines (153 loc) • 6.67 kB
JavaScript
// *** WARNING: DO NOT MODIFY *** This is a generated JavaScript source code!
//
// Generated by LF-ET 2.2.1 (230826a), https://www.lohrfink.de/lfet
// From decision table
// "/opt/data/github/asciidoctor/asciidoctor-liquibase/lfet/liquibase-parser.lfet"
// 03.09.2023 22:06
//
// Changes to this code resulting from refactorings can be synchronised
// with LF-ET using the function "Scrapbook Import".
//
// Prolog Decision Table ---->
const { stringify } = require('./utils')
function parseLiquibaseChangeSet (processModel, currentFile, elements, logger, vfs, tillTag) {
const content = []
let _step = 1
let _exit = false
let currentElement
let elementIndex = 0
let elementDetails
//
do {
_exit = true
// $$BasicIndentLevel=2
// Prolog Decision Table <----
// Condition B01/01: Step / 1 / Step 1
if (_step === 1) {
// Condition B02/01: One more element to process / Y / Yes
if (elementIndex < elements.length) {
// Condition B05/01: changeset format / xml / xml based changeset definitions
if (currentFile.endsWith('xml')) {
// Rule R01 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 1 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A01/01: define elementName callback function / xml / xml
const elementNameCallback = (_element, _elementName) => { return _element['#name'] === _elementName }
// Action A02/01: define tagValue callback function / xml / xml
const tagValueCallback = (_element) => { return _element.$.tag }
// Action A03/01: next element / X / execute action
currentElement = elements[elementIndex++]
elementDetails = require('./liquibase-elements.js').liquibaseElement(currentElement, logger, processModel.tillTag, elementNameCallback, tagValueCallback)
processModel.finishedProcessing = (processModel.finishedProcessing ^ elementDetails.finishedProcessing) === 1
// Action A06/01: next Step / + / next Step
_step++
_exit = false
// Rule R01 <----
// Condition B05/02: changeset format / yaml / yaml based changeset definitions
} else if (currentFile.endsWith('yaml')) {
// Rule R02 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 2 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A01/02: define elementName callback function / yaml / yaml
const elementNameCallback = (_element, _elementName) => { return _element[_elementName] }
// Action A02/02: define tagValue callback function / yaml / yaml
const tagValueCallback = (_element) => { return _element.tagDatabase.tag }
// Action A03/01: next element / X / execute action
currentElement = elements[elementIndex++]
elementDetails = require('./liquibase-elements.js').liquibaseElement(currentElement, logger, processModel.tillTag, elementNameCallback, tagValueCallback)
processModel.finishedProcessing = (processModel.finishedProcessing ^ elementDetails.finishedProcessing) === 1
// Action A06/01: next Step / + / next Step
_step++
_exit = false
// Rule R02 <----
} else {
// Rule R03 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 3 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A06/02: next Step / Ex / Exit
_exit = true
// Rule R03 <----
}
} else {
// Rule R04 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 4 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A06/02: next Step / Ex / Exit
_exit = true
// Rule R04 <----
}
// Condition B01/02: Step / 2 / Step 2
} else if (_step === 2) {
// Condition B03/01: Element should ignored / Y / Yes
if (elementDetails.ignore) {
// Rule R05 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 5 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A05/01: ignore element / X / execute action
logger.info(`${stringify(currentElement)} ignored.`)
// Action A06/03: next Step / 1 / Step 1
_step = 1
_exit = false
// Rule R05 <----
} else {
// Condition B04/01: Processing finished / Y / Yes
if (processModel.finishedProcessing) {
// Rule R06 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 6 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A06/02: next Step / Ex / Exit
_exit = true
// Rule R06 <----
} else {
// Rule R07 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 7 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A04/01: call extractor / X / execute action
require(`./extractor/${elementDetails.elementName}.js`).extract(currentElement, currentFile, processModel, logger, vfs)
// Action A06/01: next Step / + / next Step
_step++
_exit = false
// Rule R07 <----
}
}
} else {
// Condition B04/01: Processing finished / Y / Yes
if (processModel.finishedProcessing) {
// Rule R08 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 8 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A06/02: next Step / Ex / Exit
_exit = true
// Rule R08 <----
} else {
// Rule R09 ---->
// Trace ---->
logger.info(`liquibase-parser - 20230903.220611 - 9 / 9 - ${currentFile} - ${stringify(processModel)}`)
// Trace <----
// Action A06/03: next Step / 1 / Step 1
_step = 1
_exit = false
// Rule R09 <----
}
}
// Epilog Decision Table ---->
//
} while (_exit === false)
return content
}
module.exports = {
parseLiquibaseChangeSet: (processModel, currentFile, elements, logger, vfs, tillTag) => {
return parseLiquibaseChangeSet(processModel, currentFile, elements, logger, vfs, tillTag)
}
}
// Epilog Decision Table <----
// End of generated JavaScript source code
// Generated by LF-ET 2.2.1 (230826a), https://www.lohrfink.de/lfet