molstar
Version:
A comprehensive macromolecular library.
79 lines • 3.2 kB
JavaScript
/**
* Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.guessElementSymbolString = exports.guessElementSymbolTokens = void 0;
var tokenizer_1 = require("../../mol-io/reader/common/text/tokenizer");
function guessElementSymbolTokens(tokens, str, start, end) {
var s = start, e = end - 1;
// trim spaces and numbers
var c = str.charCodeAt(s);
while ((c === 32 || (c >= 48 && c <= 57)) && s <= e)
c = str.charCodeAt(++s);
c = str.charCodeAt(e);
while ((c === 32 || (c >= 48 && c <= 57)) && e >= s)
c = str.charCodeAt(--e);
++e;
if (s === e)
return tokenizer_1.TokenBuilder.add(tokens, s, e); // empty
if (s + 1 === e)
return tokenizer_1.TokenBuilder.add(tokens, s, e); // one char
c = str.charCodeAt(s);
if (s + 2 === e) { // two chars
var c2 = str.charCodeAt(s + 1);
if (((c === 78 || c === 110) && (c2 === 65 || c2 === 97)) || // NA na Na nA
((c === 67 || c === 99) && (c2 === 76 || c2 === 108)) || // CL
((c === 70 || c === 102) && (c2 === 69 || c2 === 101)) || // FE
((c === 83 || c === 115) && (c2 === 73 || c2 === 105)) || // SI
((c === 66 || c === 98) && (c2 === 82 || c2 === 114)) || // BR
((c === 65 || c === 97) && (c2 === 83 || c2 === 115)) // AS
)
return tokenizer_1.TokenBuilder.add(tokens, s, s + 2);
}
if (c === 67 || c === 99 || // C c
c === 72 || c === 104 || // H h
c === 78 || c === 110 || // N n
c === 79 || c === 111 || // O o
c === 80 || c === 112 || // P p
c === 83 || c === 115 // S s
)
return tokenizer_1.TokenBuilder.add(tokens, s, s + 1);
tokenizer_1.TokenBuilder.add(tokens, s, s); // no reasonable guess, add empty token
}
exports.guessElementSymbolTokens = guessElementSymbolTokens;
var reTrimSpacesAndNumbers = /^[\s\d]+|[\s\d]+$/g;
function guessElementSymbolString(str) {
// trim spaces and numbers, convert to upper case
str = str.replace(reTrimSpacesAndNumbers, '').toUpperCase();
var l = str.length;
if (l === 0)
return str; // empty
if (l === 1)
return str; // one char
if (l === 2) { // two chars
if (str === 'NA' || str === 'CL' || str === 'FE' || str === 'SI' ||
str === 'BR' || str === 'AS')
return str;
}
if (l === 3) { // three chars
if (str === 'SOD')
return 'NA';
if (str === 'POT')
return 'K';
if (str === 'CES')
return 'CS';
if (str === 'CAL')
return 'CA';
if (str === 'CLA')
return 'CL';
}
var c = str[0];
if (c === 'C' || c === 'H' || c === 'N' || c === 'O' || c === 'P' || c === 'S')
return c;
return ''; // no reasonable guess, return empty string
}
exports.guessElementSymbolString = guessElementSymbolString;
//# sourceMappingURL=util.js.map
;