ChemPal Documentation - v1.17.0
    Preparing search index...
    • Expands a query tree into the distinct reagent names it searches for. Each positive AND-group (see extractOrGroups) becomes one name by joining its words with a space, so (sodium OR potassium) hydroxide OR potassium carbonate yields three names. Bare purity tokens like 99% are dropped, and names are de-duplicated case-insensitively.

      Parameters

      Returns string[]

      Unique reagent names in first-seen order (original casing preserved).

      // (sodium OR potassium) hydroxide OR potassium carbonate
      extractReagentNames(ast); // ["sodium hydroxide", "potassium hydroxide", "potassium carbonate"]
      // acetone 99% AND NOT water
      extractReagentNames(ast); // ["acetone"]
      export function extractReagentNames(ast: SearchAst): string[] {
      const seen = new Set<string>();
      const names: string[] = [];
      for (const group of extractOrGroups(ast)) {
      const name = group
      .join(' ')
      .split(/\s+/)
      .filter((word) => !PURITY_TOKEN.test(word))
      .join(' ')
      .trim();
      const key = name.toLowerCase();
      if (name === '' || seen.has(key)) continue;
      seen.add(key);
      names.push(name);
      }
      return names;
      }