提交 354003cc 编写于 作者: a865501259's avatar a865501259

Fix: lengthEqual

上级 40fd3513
......@@ -10,14 +10,12 @@ like
---
[![Build Status](https://travis-ci.org/chinanf-boy/translate-mds.svg?branch=master)](https://travis-ci.org/chinanf-boy/translate-mds)
[![codecov](https://codecov.io/gh/chinanf-boy/translate-mds/branch/master/graph/badge.svg)](https://codecov.io/gh/chinanf-boy/translate-mds)
[![GitHub license](https://img.shields.io/github/license/chinanf-boy/translate-mds.svg)](https://github.com/chinanf-boy/translate-mds/blob/master/License)
![npm](https://img.shields.io/npm/v/translate-mds.svg)
![GitHub release](https://img.shields.io/github/tag/chinanf-boy/translate-mds.svg)
## 生活
[help me live , live need money 💰](https://github.com/chinanf-boy/live-need-money)
......
const {
getOptions
} = require('../config/work-options.js')
let configs = getOptions()
const { matchs, skips } = configs
const { tc } = require('../util/util.js')
const {getOptions} = require('../config/work-options.js');
let configs = getOptions();
const {matchs, skips} = configs;
const {tc} = require('../util/util.js');
let Equal;
function translateLengthEquals( source, tranTxt){
let skipArr = ["... ", "etc. ", "i.e. ", "e.g. "].concat(skips)
let matchArr = [ ". ", "! ", "; ", "", "? ", ""].concat(matchs)
let trim = ["'", '"']
Equal = source.length
let newSource = [].concat(source)
for( let i in source){ // typeof i == string
// if(Equal == tranTxt.length) return
source[i] = source[i].trim()
let idxStr = source[i]
let howMany = 0
// let s = source[i]
matchArr.forEach(function( val ){
if(trim.some(x =>(idxStr.startsWith(x) && idxStr.endsWith(x)))){
// ' ** ' /" ** "
return val
function translateLengthEquals(source, tranTxt) {
let skipArr = ['... ', 'etc. ', 'i.e. ', 'e.g. '].concat(skips);
let matchArr = ['. ', '! ', '; ', '', '? ', ''].concat(matchs);
let trim = ["'", '"'];
Equal = source.length;
let newSource = [].concat(source);
for (let i in source) {
// typeof i == string
// if(Equal == tranTxt.length) return
source[i] = source[i].trim();
let idxStr = source[i];
if (trim.some(x => idxStr.startsWith(x) && idxStr.endsWith(x))) {
// ' ** ' /" ** "
} else {
let howMany = 0;
// let s = source[i]
let thisMatch = matchArr.filter(m => idxStr.includes(m)); // just filter match string
thisMatch.forEach(function(val) {
while (idxStr.includes(val)) {
let skipIndexs = [];
skipArr.forEach(function(skip) {
if (idxStr.includes(skip)) {
skipIndexs.push(skip);
}
});
if (skipIndexs.length) {
skipIndexs.forEach(skip => {
idxStr = idxStr.replace(skip, tc.bgMagenta(`👌 `)); // over val
});
continue;
} else {
if (idxStr.indexOf(val) + val.length == idxStr.length) {
break;
}
while( val && idxStr.includes(val) ){
let skipIndexs = []
skipArr.forEach(function(skip){
if(idxStr.includes(skip)){
skipIndexs.push(skip)
}
})
if(skipIndexs.length){
skipIndexs.forEach(skip =>{
idxStr = idxStr.replace(skip, tc.bgMagenta(`👌 `)) // over val
})
continue;
}else{
idxStr = idxStr.replace(val, tc.bgRed(`🥄 `)) // over val
howMany ++ // how many ". "/ etc
}
}
})
!!(howMany) && mergeAndCut(tranTxt, +i, howMany) // pay attion two + , string/number
newSource[i] = idxStr
idxStr = idxStr.replace(val, tc.bgRed(`🥄 `)); // over val
howMany++; // how many ". "/ etc
}
}
});
!!howMany && mergeAndCut(tranTxt, +i, howMany); // pay attion two + , string/number
newSource[i] = idxStr;
}
}
return newSource
return newSource;
}
function mergeAndCut(Arr, index, howMany, TestLen){
let E = Equal || TestLen
let num = 0;
// Merge howMany items to Index item
for(let i = index; i < index + howMany ; i++){
if(1 || Arr.length - num !== E){
Arr[i+1] && (Arr[index] = Arr[index] + Arr[i+1])
num ++
}
// else{
// break;
// }
}
// splice Items : From the Index + 1 to ` i `
Arr.splice(index+1, num)
function mergeAndCut(Arr, index, howMany, TestLen) {
let E = Equal || TestLen;
let num = 0;
// Merge howMany items to Index item
for (let i = index; i < index + howMany; i++) {
if (1 || Arr.length - num !== E) {
Arr[i + 1] && (Arr[index] = Arr[index] + Arr[i + 1]);
num++;
}
// else{
// break;
// }
}
// splice Items : From the Index + 1 to ` i `
Arr.splice(index + 1, num);
}
module.exports = { translateLengthEquals, mergeAndCut }
module.exports = {translateLengthEquals, mergeAndCut};
......@@ -63,7 +63,7 @@ async function translateValue(value, api) {
if (value.length == result.result.length) {
return result.result
}
}
if (value.length > result.result.length) {
return translateValue(value.slice(result.result.length), api).then(youdao => {
......@@ -239,7 +239,7 @@ async function setObjectKey(obj, opts) {
if (markChunkTran.length != thisResult.length) { // debug only unequal
debugMsg(2, thisChunkTran, thisResult)
debugMsg(2, markChunkTran, thisResult)
}
......
......@@ -53,7 +53,7 @@ test("translateLengthEquals with '. ' and '!' ", t =>{
test(`translateLengthEquals with '. ' and '。' `, t =>{
let b =[`asdf。. asdf. 。`,`asdf`]
let c =[`asdf。`, `. `, `asdf. `, `。`, `asdf`]
translateLengthEquals(b, c)
t.deepEqual(c, [`asdf。. asdf. 。asdf`])
translateLengthEquals(b, c)
t.deepEqual(c, b)
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册