Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
175
gaia/apps/keyboard/js/imes/jspinyin/worker.js
Executable file
175
gaia/apps/keyboard/js/imes/jspinyin/worker.js
Executable file
|
|
@ -0,0 +1,175 @@
|
|||
/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
|
||||
/* jshint sub: true */
|
||||
'use strict';
|
||||
|
||||
var Module;
|
||||
var emEngine;
|
||||
var procFunction;
|
||||
|
||||
self.onmessage = function(e) {
|
||||
var data = e.data;
|
||||
|
||||
if (data.id == 'init') {
|
||||
initModule(data.id, data.param);
|
||||
} else if (procFunction[data.id]) {
|
||||
var result = procFunction[data.id](data.param);
|
||||
post(data.id, result);
|
||||
} else {
|
||||
log('echo: ' + JSON.stringify(e.data));
|
||||
}
|
||||
};
|
||||
|
||||
function initModule(msgId, param) {
|
||||
Module = {
|
||||
canvas: {},
|
||||
stdout: null,
|
||||
setStatus: log,
|
||||
preRun: [function() {
|
||||
if (param.userDict) {
|
||||
Module['addRunDependency']('fp data/user_dict.data');
|
||||
Module['FS_createPreloadedFile'](
|
||||
'/data', 'user_dict.data', param.userDict, true, true, function() {
|
||||
Module['removeRunDependency']('fp data/user_dict.data');
|
||||
});
|
||||
}
|
||||
}],
|
||||
_main: function() {
|
||||
emEngine = {
|
||||
openDecoder:
|
||||
Module.cwrap('im_open_decoder', 'number', ['string', 'string']),
|
||||
closeDecoder:
|
||||
Module.cwrap('im_close_decoder', '', []),
|
||||
search:
|
||||
Module.cwrap('im_search', 'number', ['string', 'number']),
|
||||
resetSearch:
|
||||
Module.cwrap('im_reset_search', '', []),
|
||||
getCandidateAt:
|
||||
Module.cwrap('im_get_candidate_char', 'string', ['number']),
|
||||
getPredicts:
|
||||
Module.cwrap('im_get_predicts_utf8', 'number', ['string', 'number']),
|
||||
getPredictAt:
|
||||
Module.cwrap('im_get_predict_at', 'string', ['number']),
|
||||
choose:
|
||||
Module.cwrap('im_choose', 'number', ['number']),
|
||||
getSplStart:
|
||||
Module.cwrap('im_get_spl_start', 'number', []),
|
||||
getSplStartAt:
|
||||
Module.cwrap('im_get_spl_start_at', 'number', ['number']),
|
||||
getFixedLen:
|
||||
Module.cwrap('im_get_fixed_len', 'number', []),
|
||||
flushCache:
|
||||
Module.cwrap('im_flush_cache', '', [])
|
||||
};
|
||||
|
||||
if (emEngine.openDecoder('data/dict.data', 'data/user_dict.data')) {
|
||||
initProcFunctions();
|
||||
post(msgId, true);
|
||||
} else {
|
||||
post(msgId, false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
try {
|
||||
importScripts('empinyin_files.js');
|
||||
importScripts('libpinyin.js');
|
||||
} catch (e) {
|
||||
log(e.toString());
|
||||
post(msgId, false);
|
||||
}
|
||||
}
|
||||
|
||||
function initProcFunctions() {
|
||||
var getSearchResult = function(emEngineGetAt, param) {
|
||||
var start = param.start;
|
||||
var count = param.count;
|
||||
var results = [];
|
||||
for (var i = start; i < count; i++) {
|
||||
results.push(emEngineGetAt(i));
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
var search = function(emEngineSearch, emEngineGetAt, param) {
|
||||
var query = param.queryString;
|
||||
var numberToReturn = param.limit;
|
||||
var resultLen = emEngineSearch(query, query.length);
|
||||
var results;
|
||||
if (numberToReturn) {
|
||||
if (numberToReturn < 0 || numberToReturn > resultLen) {
|
||||
numberToReturn = resultLen;
|
||||
}
|
||||
results = getSearchResult(emEngineGetAt, {
|
||||
start: 0,
|
||||
count: numberToReturn
|
||||
});
|
||||
}
|
||||
return {
|
||||
length: resultLen,
|
||||
results: results
|
||||
};
|
||||
};
|
||||
|
||||
procFunction = {};
|
||||
|
||||
/*jshint -W040 */
|
||||
procFunction['im_search'] =
|
||||
search.bind(this, emEngine.search, emEngine.getCandidateAt);
|
||||
|
||||
procFunction['im_get_candidates'] =
|
||||
getSearchResult.bind(this, emEngine.getCandidateAt);
|
||||
|
||||
procFunction['im_search_predicts'] =
|
||||
search.bind(this, emEngine.getPredicts, emEngine.getPredictAt);
|
||||
|
||||
procFunction['im_get_predicts'] =
|
||||
getSearchResult.bind(this, emEngine.getPredictAt);
|
||||
/*jshint +W040 */
|
||||
|
||||
procFunction['im_flush_cache'] =
|
||||
emEngine.flushCache;
|
||||
|
||||
procFunction['im_choose'] = function(param) {
|
||||
var candsNum = emEngine.choose(param.candId);
|
||||
if (candsNum == 1 && emEngine.getFixedLen() == emEngine.getSplStart()) {
|
||||
var convertedText = emEngine.getCandidateAt(0);
|
||||
emEngine.resetSearch();
|
||||
return convertedText;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
procFunction['im_get_pending_symbols_info'] = function() {
|
||||
var fixedLen = emEngine.getFixedLen();
|
||||
var splStartLen = emEngine.getSplStart();
|
||||
var splStart = [];
|
||||
for (var i = 0; i <= splStartLen; i++) {
|
||||
splStart.push(emEngine.getSplStartAt(i));
|
||||
}
|
||||
return {
|
||||
fixedLen: fixedLen,
|
||||
splStart: splStart
|
||||
};
|
||||
};
|
||||
|
||||
procFunction['im_get_user_dict_data'] = function() {
|
||||
if (!Module['FS']) {
|
||||
return null;
|
||||
}
|
||||
|
||||
emEngine.flushCache();
|
||||
return Module['FS'].findObject('data/user_dict.data').contents;
|
||||
};
|
||||
}
|
||||
|
||||
function post(id, returnValue) {
|
||||
postMessage({
|
||||
id: id,
|
||||
returnValue: returnValue
|
||||
});
|
||||
}
|
||||
|
||||
function log(message) {
|
||||
post('message', message);
|
||||
}
|
||||
Loading…
Reference in a new issue