kekule
Version:
Open source JavaScript toolkit for chemoinformatics
1 lines • 3.12 kB
JavaScript
!function(){"use strict";var e=Kekule.EmscriptenUtils,n={usingModulaize:!0,moduleName:"InChIModule",moduleInitEventName:"InChI.Initialized",moduleInitCallbackName:"__$inChIInitialized$__"};Kekule.InChI={_autoEnabled:!0,_scriptLoadedBySelf:!1,_module:null,_enableFuncs:[],SCRIPT_FILE:"inchi.js",isScriptLoaded:function(){return e.isSupported(n.moduleName)},getInchiInitOptions:function(){return n},getModule:function(){return t._module||(t._module=e.getRootModule(n.moduleName,n)),t._module},setModule:function(i){t._module=i,e.setRootModule(n.moduleName,i)},getInChIPath:function(){var e=Kekule.environment.getEnvVar("inchi.path");e||(e=Kekule.isUsingMinJs()?"extra/":"_extras/InChI/",e=Kekule.getScriptPath()+e);return e},getInChIScriptUrl:function(){var e=Kekule.environment.getEnvVar("inchi.scriptSrc");e||(e=t.getInChIPath()+t.SCRIPT_FILE,Kekule.isUsingMinJs()||(e+=".dev"));return e},loadInChIScript:function(i,r){i||(i=Kekule.$jsRoot.document);var u=function(e){t._scriptLoadedBySelf=!e,r&&r(e)};if(t._scriptLoadedBySelf||t.isScriptLoaded())u();else{var a=t.getInChIScriptUrl();e.loadScript(a,u,i,n)}},molDataToInChI:function(e,n){var i=t._molToInChI;i||(i=t.getModule().cwrap("molToInchiJson","string",["string","string"]));var r=i(e,n);return JSON.parse(r)},getInChIKeyFromInChI:function(e,n,i){var r=t._getInChIKeyFromInChI;r||(r=t.getModule().cwrap("getInChIKeyJson","string",["string","number","number"]));var u=r(e,n,i);return JSON.parse(u)},getInChIInfo:function(e){var n=Kekule.IO.saveFormatData(e,Kekule.IO.DataFormat.MOL);return t.molDataToInChI(n)},enable:function(e){t.isScriptLoaded()?(t._enableAllFunctions(),e&&e()):t.loadInChIScript(Kekule.$jsRoot.document,function(n){n||t._enableAllFunctions(),e&&e(n)})},_enableAllFunctions:function(){if(e.isModuleReady(n.moduleName))for(var i=t._enableFuncs,r=0,u=i.length;r<u;++r){var a=i[r];a&&a()}}};var t=Kekule.InChI;Kekule.IO.InChIWriter=Class.create(Kekule.IO.ChemDataWriter,{CLASS_NAME:"Kekule.IO.InChIWriter",doWriteData:function(e,n,i){var r=t.getInChIInfo(e);if(r&&r.inchi){var u=r.inchi;r.auxInfo&&(u+="\n"+r.auxInfo);var a=t.getInChIKeyFromInChI(r.inchi,1,1);return u+="\n"+JSON.stringify(a)}return null},isAllowedObj:function(e){var n=Kekule.IO.InChIWriter.ALLOWED_CLASSES;return Kekule.ObjUtils.isInstanceOf(e,n)}}),Kekule.IO.InChIWriter.ALLOWED_CLASSES=[Kekule.StructureFragment,Kekule.Reaction,Kekule.ChemObjList,Kekule.ChemStructureObjectGroup,Kekule.ChemSpaceElement,Kekule.ChemSpace],Kekule.IO.registerAllInChIFormats=function(){if(t.isScriptLoaded()){Kekule.IO.DataFormat.INCHI="inchi",Kekule.IO.MimeType.INCHI="chemical/x-inchi",Kekule.IO.DataFormatsManager.register("inchi",Kekule.IO.MimeType.INCHI,"inchi",Kekule.IO.ChemDataType.TEXT,"InChI format"),Kekule.IO.ChemDataWriterManager.register("inchi",Kekule.IO.InChIWriter,Kekule.IO.InChIWriter.ALLOWED_CLASSES,"inchi")}},Kekule.IO.enableInChIFormats=function(){t.enable()},t._enableFuncs.push(Kekule.IO.registerAllInChIFormats),Kekule._registerAfterLoadSysProc(function(){t._autoEnabled&&t.isScriptLoaded()&&e.ensureModuleReady(Kekule.$jsRoot.document,n,t._enableAllFunctions)})}();