Skip to content

Commit

Permalink
feat: add support for google translate API
Browse files Browse the repository at this point in the history
  • Loading branch information
gerard2perez committed Oct 23, 2017
1 parent dd1ec1f commit c68316b
Show file tree
Hide file tree
Showing 21 changed files with 358 additions and 162 deletions.
69 changes: 69 additions & 0 deletions .esdoc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
"source":"src",
"destination":"doc",
"plugins":[
{
"name":"esdoc-standard-plugin",
"option":{
"accessor":{
"access":[
"public",
"protected",
"private"
],
"autoPrivate":true
},
"undocumentIdentifier":{
"enable":true
},
"unexportedIdentifier":{
"enable":false
},
"coverage":{
"enable":true
},
"brand":{
"logo":"./koaton-cli.png",
"title":"My Library",
"description":"this is awesome library",
"repository":"https://github.com/gerard2p/koaton",
"site":"http://koaton.io",
"author":"https://github.com/gerard2p",
"image":"http://koaton.io/static/images/logo.png"
},
"test":{
"type":"mocha",
"source":"test",
"includes":[
"\\.(js|es6)$"
]
}
}
},
{
"name":"esdoc-importpath-plugin",
"option":{
"replaces":[
{
"from":"src/",
"to":""
}
]
}
},
{
"name": "esdoc-ecmascript-proposal-plugin",
"option": {
"classProperties": true,
"objectRestSpread": true,
"doExpressions": true,
"functionBind": true,
"functionSent": true,
"asyncGenerators": true,
"decorators": true,
"exportExtensions": true,
"dynamicImport": true
}
}
]
}
1 change: 1 addition & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ globals:
TemplatePath: true
Events: true
LibPath: true
CLIPath: true
makeObjIterable: true
__ok: true
__nok: true
Expand Down
27 changes: 14 additions & 13 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/doc/
/bower_components/
/node_modules/
.DS_Store
Expand All @@ -17,18 +18,18 @@ npm-debug*
.barebone.js
/package-lock.json

commands
functions
support
utils
adapters.js
deamon.js
globals.js
index.js
jutsus.js
modelmanager.js
secret.js
spinner.js
welcome.js
/commands
/functions
/support
/utils
/adapters.js
/deamon.js
/globals.js
/index.js
/jutsus.js
/modelmanager.js
/secret.js
/spinner.js
/welcome.js

koaton-cli-0.0.0-development.tgz
17 changes: 13 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@
"test": "cross-env NODE_ENV=koaton mocha test/unit/**/*.js test/integration.js --compilers js:babel-register",
"test:live": "npm t -- -w",
"cover": "nyc npm t",
"cover:reload": "node reloadcoverage.js",
"cover:watch": "npm run cover & chokidar src test -c \"cls & npm run cover\"",
"esdoc:watch": "npm run esdoc & chokidar src test -c \"cls & npm run esdoc\"",
"esdoc:reload": "node scripts/reloadjsdoc.js",
"esdoc": "esdoc",
"esdoc:live": "npm-run-all --parallel esdoc:watch esdoc:reload",
"cover:reload": "node reloadcoverage.js",
"cover:live": "npm-run-all --parallel cover:watch cover:reload",
"codeclimate": "codeclimate analyze -f html -e duplication > duplication.html",
"commit": "git add -A & git-cz",
Expand Down Expand Up @@ -47,22 +51,27 @@
"upath": "^1.0.0"
},
"devDependencies": {
"babel-plugin-istanbul": "^4.1.4",
"babel-plugin-istanbul": "^4.1.5",
"commitizen": "^2.8.6",
"cross-env": "^5.0.1",
"cz-conventional-changelog": "^2.0.0",
"detect-port": "^1.2.1",
"esdoc": "^1.0.3",
"esdoc-ecmascript-proposal-plugin": "^1.0.0",
"esdoc-importpath-plugin": "^1.0.1",
"esdoc-standard-plugin": "^1.0.0",
"eslint": "^4.4.1",
"eslint-config-happiness": "^10.2.1",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-node": "^5.1.1",
"eslint-plugin-promise": "^3.5.0",
"eslint-plugin-standard": "^3.0.1",
"gulp-livereload": "^3.8.1",
"husky": "^0.14.3",
"koaton-exporter": "^1.2.1",
"mocha": "^3.2.0",
"npm-run-all": "^4.0.1",
"nyc": "^11.1.0",
"npm-run-all": "^4.1.1",
"nyc": "^11.2.1",
"ps-tree": "^1.1.0",
"semantic-release": "^6.3.2"
},
Expand Down
11 changes: 11 additions & 0 deletions scripts/dropdatabase.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
var join = require('upath').join;
var mongoose = require(join(process.cwd(), 'testingapp/node_modules/mongoose'));
mongoose.connect('mongodb://localhost/testingapp');
let con = mongoose.connection;
con.once('open', function () {
console.log('Connected to DB');
con.dropDatabase();
con.close(() => {
console.log('Connection Closed');
});
});
28 changes: 28 additions & 0 deletions scripts/reloadcoverage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const chokidar = require('chokidar');
const livereload = require('gulp-livereload');
const fs = require('fs-extra');
const glob = require('glob');

function test () {
let script = '<script src="http://localhost:62627/livereload.js?snipver=1"></script>\n</body>';
glob.sync('coverage/**/*.html').forEach((file) => {
let index = fs.readFileSync(file, 'utf-8').replace('</body>', script);
fs.writeFileSync(file, index, 'utf-8');
});
livereload.reload();
}
var sourcewatcher = chokidar.watch(['coverage/lcov.info'], {
persistent: true,
ignoreInitial: true,
alwaysStat: false,
awaitWriteFinish: {
stabilityThreshold: 200,
pollInterval: 90
}
});
sourcewatcher.on('add', () => test()).on('change', () => test());
livereload.listen({
port: 62627,
quiet: true
});
test();
28 changes: 28 additions & 0 deletions scripts/reloadjsdoc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const chokidar = require('chokidar');
const livereload = require('gulp-livereload');
const fs = require('fs');
const glob = require('glob');

function test (...args) {
let script = '<script src="http://localhost:62627/livereload.js?snipver=1"></script>\n</body>';
glob.sync('doc/**/*.html').forEach((file) => {
let index = fs.readFileSync(file, 'utf-8').replace('</body>', script);
fs.writeFileSync(file, index, 'utf-8');
});
livereload.reload();
}
var sourcewatcher = chokidar.watch(['doc/scripts/linenumber.js'], {
persistent: true,
ignoreInitial: true,
alwaysStat: false,
awaitWriteFinish: {
stabilityThreshold: 200,
pollInterval: 90
}
});
sourcewatcher.on('add', test).on('change', test);
livereload.listen({
port: 62627,
quiet: true
});
test();
2 changes: 1 addition & 1 deletion src/commands/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { sync as glob } from 'glob';
import copystatic from '../support/CopyStatic';
import utils from '../utils';
import Command from 'cmd-line/lib/Command';
import BundleItem from 'koaton/support/BundleItem';
import BundleItem from '../support/BundleItem';
// import spin from '../spinner';
import { buildNginx } from '../functions/nginx';
import { buildAllImages } from '../functions/imagecompressor';
Expand Down
2 changes: 1 addition & 1 deletion src/commands/new.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ const ArrayToDescription = function ArrayToDescription (array) {
Object.keys(array).map(tx => tx.cyan).join(' | '.yellow) + ' ]'.yellow;
};
export default (new Command(__filename, 'Creates a new koaton aplication.'))
.Args('AppName')
.Args('AppName')
.Options([
[
'-d', '--db <driver>',
Expand Down
20 changes: 2 additions & 18 deletions src/commands/translate.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'colors';
import Command from 'cmd-line/lib/Command';
import * as fs from 'fs-extra';
import lang from '../support/Languages';
import * as translate from 'google-translate-api';

export default (new Command(__filename, 'Translate your localization files'))
.Args('?to', '?from')
Expand Down Expand Up @@ -29,28 +30,11 @@ export default (new Command(__filename, 'Translate your localization files'))
console.log('cannot translate to the same language');
return 0;
}
const GET = require('../functions/get').default;
/* istanbul ignore next */
async function translate (text, from, to) {
let r;
r = JSON.parse(await GET(`http://api.mymemory.translated.net/get?q=${encodeURI(text)}&langpair=${from}|${to}`, null, null));
if (r.responseData.translatedText.indexOf('YOU USED ALL AVAILABLE FREE TRANSLATIONS') > -1) {
r = await GET(`http://translate.google.com/translate_a/single?client=ctx&sl=${from}&tl=${to}&hl=es&dt=t&q=${encodeURI(text)}`);
return r[0][0][0];
} else if (r.responseStatus === 200) {
return r.responseData.translatedText.replace(new RegExp(`\b${from}$`, 'g'), to);
} else if (r.responseStatus === 403) {
return null;
} else {
console.log(lang[to], r.responseData);
return text;
}
}
let translation = fs.readJSONSync(ProyPath(configuration.server.localization.directory, `${from}.js`));
let newLang = {};
let keys = Object.keys(translation);
for (const key of keys) {
newLang[key] = await translate(translation[key], from, to);
newLang[key] = (await translate(encodeURI(translation[key]), {from, to})).text;
}
fs.writeFileSync(ProyPath(configuration.server.localization.directory, `${to}.js`), JSON.stringify(newLang, 4, 4));
});
21 changes: 11 additions & 10 deletions src/functions/persistmodel.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import utils from '../utils';
import challenge from '../utils/challenge';
import write from '../utils/write';
import * as fs from 'fs-extra';
import * as path from 'path';
import { join } from 'path';

export default async function persistmodel (model, modelname, options) {
let override = await utils.challenge(ProyPath('models', `${modelname}.js`), `The model ${modelname.green} already exits,do you want to override it?`, options.force);
let override = await challenge(ProyPath('models', `${modelname}.js`), `The model ${modelname.green} already exits,do you want to override it?`, options.force);
if (override) {
utils.write(ProyPath('models', modelname + '.js'), model.toCaminte());
write(ProyPath('models', modelname + '.js'), model.toCaminte());
if (options.rest) {
var restcontroller = "'use strict';\nexports.default = {\n\tREST:true\n};";
utils.write(ProyPath('controllers', `${modelname.toLowerCase()}.js`), restcontroller);
write(ProyPath('controllers', `${modelname.toLowerCase()}.js`), restcontroller);
}
}
if (override && options.ember) {
Expand All @@ -17,21 +18,21 @@ export default async function persistmodel (model, modelname, options) {
console.log(`The app ${options.ember} does not exists.`.red);
return 1;
}
utils.write(ProyPath('ember', options.ember, 'app', 'models', modelname + '.js'), model.toEmberModel());
write(ProyPath('ember', options.ember, 'app', 'models', modelname + '.js'), model.toEmberModel());
/* istanbul ignore else */
if (options.rest) {
utils.write(ProyPath('ember', options.ember, 'app', 'controllers', `${modelname}.js`), model.toCRUDTable());
utils.write(
write(ProyPath('ember', options.ember, 'app', 'controllers', `${modelname}.js`), model.toCRUDTable());
write(
ProyPath('ember', options.ember, 'app', 'templates', `${modelname}.hbs`),
'{{crud-table\n\tfields=this.fieldDefinition\n}}'
);
let router = await utils.read(path.join(process.cwd(), 'ember', options.ember, 'app', 'router.js'), {
let router = fs.readFileSync(join(process.cwd(), 'ember', options.ember, 'app', 'router.js'), {
encoding: 'utf-8'
});
/* istanbul ignore else */
if (router.indexOf(`this.route('${modelname}')`) === -1) {
router = router.replace(/Router.map\(.*?function\(.*?\).*?{/igm, `Router.map(function() {\n\tthis.route('${modelname}');\n`);
utils.write(ProyPath('ember', options.ember, 'app', 'router.js'), router, 1);
write(ProyPath('ember', options.ember, 'app', 'router.js'), router, 1);
}
}
}
Expand Down
Loading

0 comments on commit c68316b

Please sign in to comment.