/** * Converts text in a fragment to snake_case. * * Use: * <pre> * {{#snakecase}}{{name}}{{/snakecase}} * </pre> */ function snakeCase() { return function(template) { var text = Case.snake(Hogan.compile(template).render(this)); if (this.generator) { text = maybeEscapeReservedWord(this.generator, text) } return text; } }
load(file) { if(!this.logger) { this.logger = this.akyuu.logger.get("service-loader"); } const directory = path.join(`${this.akyuu.projectRoot}/services`, file); const filenames = fs.readdirSync(directory); for(let i = 0; i < filenames.length; i++) { const stat = fs.statSync(`${directory}/${filenames[i]}`); if(stat.isDirectory()) { this.load(`${file}/${filenames[i]}`); } else if(_.endsWith(filenames[i], ".js")) { const ApiClass = require(`${directory}/${filenames[i]}`); const apiClassInstance = new ApiClass(); let apiClassName = apiClassInstance.constructor.name; apiClassName = Case.snake(apiClassName); this.services[apiClassName] = apiClassInstance; this.serviceClasses[apiClassName] = ApiClass; this.logger.info(`Service \`${apiClassName}\` loaded.`); } } }