Как документировать вложенную функцию в методе в JSdoc - PullRequest
0 голосов
/ 20 февраля 2019

В javascript у меня есть метод, который имеет функцию внутри него, при попытке документировать его с помощью программы JSdocs я предполагал, что должно выглядеть следующим образом:

 /**
  * @memberof dataBase#query
  * @inner
  * @function makeArray
  * @description ..
*/

или как это:

/**
  * @function dataBase#query~makeArray
  * @description ..
*/

Но по какой-то причине оно не отображается.

Вопрос: Есть ли способ длямне задокументировать такую ​​функцию?

РЕДАКТИРОВАТЬ:

Вы можете заметить некоторые места в моем коде ниже, где строка продолжается до следующей строки, это просто из-за ограниченного пространства, предоставленногопо блоку вопросов stackoverflow и не является частью моего исходного кода.

Вот код, который я хочу документировать (в частности, функцию makeArray внутри метода запроса):

exports.dataBase = class dataBase {
  constructor(connection, X64) {
    this.connectString = connection
    this.X64 = X64
    this.connection = adodb.open(connection, X64)
    this._this = this
    this.shortcuts = require('./shortcuts')
  }

  async close() {
    await this.connection.close()
    return
  }

  async reopen() {
    this.connection = adodb.open(this.connectString, this.X64)
    return
  }

  async shortcut(type, data) {
    await this.shortcuts.data[type](data, this._this)
    return 
  }

  async runSQL(sql) {
    let type
    if(sql.match('SELECT')) {
      type = 'query'
    } else {
      type = 'execute'
    }
    let data
    let self = this
    await new Promise((resolve, reject) => {
      self.connection[type](sql).then(result => {
        data = result
        resolve()
      }).catch(err => {
        console.log(err)
      })
    }).catch(err => {
      console.log(err)
    })
    return data
  }

  async query(table, columns = '*' || [], rows = '*' || [], options = '*'             
|| []) {
    function makeArray(str) {
      if(typeof str === 'string' && str !== '*') {
        return [str]
      }
    }

    makeArray(columns)
    makeArray(rows)
    makeArray(options)

    function processData(table, columns, rows, options) {
      function processColumns(columns) {
        let retval = ''
        for(let i in columns) {
          if(i != columns.length - 1) {
            retval += `${columns[i]},`
          } else {
            retval += `${columns[i]}`
            return retval
          }
        }

      }

      function processRows(rows) {
        let retval = ''
        for(let i in rows) {
          if(i != rows.length - 1) {
            retval += `ID=${rows[i]} AND `
          } else {
            retval += `ID=${rows[i]}`
          }
        }
        return retval
      }

      function processOptions(options) {
        let retval = ''
        for(let i in rows) {
            retval += ` AND ${options[i]}`
        }
        return retval
      }

      let SQLcolumns = processColumns(columns)
      let SQLrows = processRows(rows)
      let SQLoptions = processOptions(options)

      if(rows === '*' && options === '*') {
        return `SELECT ${SQLcolumns} FROM [${table}];`
      } else if(options === '*') {
        return `SELECT ${SQLcolumns} FROM [${table}] WHERE ${SQLrows};`
      } else if(rows === '*') {
        return `SELECT ${SQLcolumns} FROM [${table}] WHERE ${SQLoptions};`
      } else {
        return `SELECT ${SQLcolumns} FROM [${table}] WHERE     
 ${SQLrows}${SQLoptions};`
      }
    }

    let data
    await this.runSQL(processData(table, columns, rows,     
options)).then((result) => {
      data = result
    }).catch(err => {
      console.log(err)
    })
    return data
  }

  async createTable(name, columns, rows = null) {
    function processColumns(columns) {
      let retval = ''
      for(let i of Object.keys(columns)) {
        if(i !== Object.keys(columns)[columns.size() - 1]) {
          retval += `${i} ${columns[i]},\n`
        } else {
          retval += `${i} ${columns[i]}`
        }
      }
      return retval
    }
    let data
    let SQLcolumns = processColumns(columns)

    await this.runSQL(`CREATE TABLE ${name}     
(\n${SQLcolumns}\n);`).then((result) => {
      data = result
    })  

    if(rows !== null) {
      this.addRecords(name, rows)
    }
  }

  async addRecords(table, values) {
    let data = []
    function processValues(values) {
      let retval = ''
      for(let i of Object.keys(values)) {
        if(i !== Object.keys(values)[values.size() - 1]) {
          retval += `${values[i]}, `
        } else {
          retval += values[i]
        }
      }
      return retval
    }

    for(let i of values) {
      let SQLvalues
      SQLvalues = processValues(i)
      await this.runSQL(`INSERT INTO [${table}] VALUES 
(${SQLvalues});`).then((result) => {
        data.push(result)
      })
    }

    return data
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...