UNPKG

backendjs

Version:
58 lines (52 loc) 1.58 kB
// // Author: Vlad Seryakov vseryakov@gmail.com // Jan 2017 // var fs = require('fs') var path = require("path"); var bkjs = require('backendjs'); var lib = bkjs.lib; var paths = ["."]; for (var i = 2; i < process.argv.length; i++) { if (process.argv[i][0] != "-") paths.push(process.argv[i]); } var files = []; for (var i in paths) { files = files.concat(lib.findFileSync(paths[i], { depth: 2, types: "f", include: /\.js$/, exclude: /(tools|tests)\// })) } var msgs = {}; var locale = {}; var lang = lib.getArg("-lang"); if (lang) locale = JSON.parse(fs.readFileSync("locales/" + lang + ".json")); var rx = [ /api.sendReply\(res,[ 0-9]+, ?"([^\"]+)"/, /message: ?"([^\"]+)"/, /[_ ]msg: ?"([^\"]+)"/, /__\("([^""]+)"/, /phrase: ?"([^\"]+)"/, /"([^\"@]*@[^\"@]+@[^\"]*)"/, ]; files.forEach(function(file) { var doc = ""; var data = fs.readFileSync(file).toString().split("\n"); for (var i = 0; i < data.length; i++) { var line = data[i].trim(); if (!line || line[0] == "/") continue; // Skip config help if (/{ *name:.+descr:/.test(line)) continue; for (var j in rx) { var d = line.match(rx[j]); if (d) { // Single placeholder if (/^[^a-z]*@[a-z0-9_]+@[^a-z]*$/i.test(d[1])) continue; msgs[d[1]] = locale[d[1]] || ""; break; } } } }); if (lib.isArg("-merge")) { for (var p in locale) if (!msgs[p]) msgs[p] = locale[p]; } console.log(JSON.stringify(msgs, null, " ")); process.exit(0);