UNPKG

snarkjs

Version:

zkSNARKs implementation in JavaScript

56 lines (46 loc) 1.8 kB
/* Copyright 2018 0KIMS association. This file is part of snarkJS. snarkJS is a free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. snarkJS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with snarkJS. If not, see <https://www.gnu.org/licenses/>. */ import * as fastFile from "fastfile"; export default async function loadSymbols(symFileName) { const sym = { labelIdx2Name: [ "one" ], varIdx2Name: [ "one" ], componentIdx2Name: [] }; const fd = await fastFile.readExisting(symFileName); const buff = await fd.read(fd.totalSize); const symsStr = new TextDecoder("utf-8").decode(buff); const lines = symsStr.split("\n"); for (let i=0; i<lines.length; i++) { const arr = lines[i].split(","); if (arr.length!=4) continue; if (sym.varIdx2Name[arr[1]]) { sym.varIdx2Name[arr[1]] += "|" + arr[3]; } else { sym.varIdx2Name[arr[1]] = arr[3]; } sym.labelIdx2Name[arr[0]] = arr[3]; if (!sym.componentIdx2Name[arr[2]]) { sym.componentIdx2Name[arr[2]] = extractComponent(arr[3]); } } await fd.close(); return sym; function extractComponent(name) { const arr = name.split("."); arr.pop(); // Remove the lasr element return arr.join("."); } }