UNPKG

molstar

Version:

A comprehensive macromolecular library.

79 lines 3.2 kB
"use strict"; /** * 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