class Geometry {
  constructor(molecule, comment) {
    this.molecule = molecule
    this.comment = comment
  }
  static async loadXYZAsync(file) {
    switch (trueTypeOf(file)) {
      case String.name:
        file = getFullDataPath("structures"+file)
        var str = getTextFromFileUrl(file)
        break;
      case File.name:
        var str = await getTextFromUploadedFileAsync(file)
        break
    }
    var xyz = this.loadXYZString(str);
    xyz.sourceFile = new websiteFile(file)
    return xyz
  }
  static loadXYZString(text) {
    var lines = text.split("\n")
    var indexes = lines.findAllIndexes((line) => {
      return line.match(/^\d+\s*$/)
    })
    indexes.push(lines.length)
    var geoms = []
    for (let i = 0; i < indexes.length - 1; i++) {
      const mollines = lines.slice(indexes[i], indexes[i + 1])
      const comment = mollines[1]
      const molecule = ChemDoodle.readXYZ(mollines.join("\n"))
      geoms.push(new Geometry(molecule, comment))
    }
    return geoms
  }
}
