log-parser.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. /** 语句:log 打印信息(仅 console/UI,不写 log.txt) */
  2. const types = ['log']
  3. function parse(action, parseContext) {
  4. const { extractVarName } = parseContext
  5. const parsed = { type: 'log' }
  6. if (action.inVars && Array.isArray(action.inVars)) {
  7. parsed.inVars = action.inVars.map(v => extractVarName(v))
  8. } else parsed.inVars = []
  9. if (action.value) parsed.value = action.value
  10. return Object.assign({}, action, parsed)
  11. }
  12. async function execute(action, ctx) {
  13. const { variableContext, extractVarName, replaceVariablesInString } = ctx
  14. let message = ''
  15. if (action.inVars && action.inVars.length > 0) {
  16. const messages = action.inVars.map(varWithBraces => {
  17. const varName = extractVarName(varWithBraces)
  18. const v = variableContext[varName]
  19. return v !== undefined ? String(v) : varWithBraces
  20. })
  21. message = messages.join(' ')
  22. } else if (action.value) {
  23. message = replaceVariablesInString(action.value, variableContext)
  24. }
  25. if (typeof console !== 'undefined') console.log(message)
  26. if (typeof window !== 'undefined') {
  27. window.dispatchEvent(new CustomEvent('log-message', { detail: { message } }))
  28. }
  29. return { success: true }
  30. }
  31. module.exports = { types, parse, execute }