Skip to content

Commit aabd9b8

Browse files
translate: allow setting options.format
1 parent 4bbeec0 commit aabd9b8

3 files changed

Lines changed: 42 additions & 1 deletion

File tree

packages/translate/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"arrify": "^1.0.0",
5555
"extend": "^3.0.0",
5656
"is": "^3.0.1",
57+
"is-html": "^1.0.0",
5758
"propprop": "^0.3.0"
5859
},
5960
"devDependencies": {

packages/translate/src/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var arrify = require('arrify');
2424
var common = require('@google-cloud/common');
2525
var extend = require('extend');
2626
var is = require('is');
27+
var isHtml = require('is-html');
2728
var prop = require('propprop');
2829

2930
var PKG = require('../package.json');
@@ -268,6 +269,7 @@ Translate.prototype.getLanguages = function(target, callback) {
268269
* target ISO 639-1 language code to translate the source input to. (e.g.
269270
* `en` for English). If an object, you may also specify the source
270271
* language.
272+
* @param {string} options.format - Set the text's format as `html` or `text`.
271273
* @param {string} options.from - The ISO 639-1 language code the source input
272274
* is written in.
273275
* @param {string} options.to - The ISO 639-1 language code to translate the
@@ -323,8 +325,11 @@ Translate.prototype.getLanguages = function(target, callback) {
323325
* });
324326
*/
325327
Translate.prototype.translate = function(input, options, callback) {
328+
input = arrify(input);
329+
326330
var query = {
327-
q: arrify(input)
331+
q: input,
332+
format: options.format || (isHtml(input[0]) ? 'html' : 'text')
328333
};
329334

330335
if (is.string(options)) {

packages/translate/test/index.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ describe('Translate', function() {
266266

267267
describe('translate', function() {
268268
var INPUT = 'Hello';
269+
var INPUT_HTML = '<html><body>Hello</body></html>';
269270
var SOURCE_LANG_CODE = 'en';
270271
var TARGET_LANG_CODE = 'es';
271272

@@ -306,12 +307,46 @@ describe('Translate', function() {
306307
});
307308
});
308309

310+
describe('options.format', function() {
311+
it('should default to text', function(done) {
312+
translate.request = function(reqOpts) {
313+
assert.strictEqual(reqOpts.qs.format, 'text');
314+
done();
315+
};
316+
317+
translate.translate(INPUT, OPTIONS, assert.ifError);
318+
});
319+
320+
it('should recognize HTML', function(done) {
321+
translate.request = function(reqOpts) {
322+
assert.strictEqual(reqOpts.qs.format, 'html');
323+
done();
324+
};
325+
326+
translate.translate(INPUT_HTML, OPTIONS, assert.ifError);
327+
});
328+
329+
it('should allow overriding the format', function(done) {
330+
var options = extend({}, OPTIONS, {
331+
format: 'custom format'
332+
});
333+
334+
translate.request = function(reqOpts) {
335+
assert.strictEqual(reqOpts.qs.format, options.format);
336+
done();
337+
};
338+
339+
translate.translate(INPUT_HTML, options, assert.ifError);
340+
});
341+
});
342+
309343
it('should make the correct API request', function(done) {
310344
translate.request = function(reqOpts) {
311345
assert.strictEqual(reqOpts.uri, '');
312346
assert.strictEqual(reqOpts.useQuerystring, true);
313347
assert.deepEqual(reqOpts.qs, {
314348
q: [INPUT],
349+
format: 'text',
315350
source: SOURCE_LANG_CODE,
316351
target: TARGET_LANG_CODE
317352
});

0 commit comments

Comments
 (0)