mholt / PapaParse

Fast and powerful CSV (delimited text) parser that gracefully handles large files and malformed input
http://PapaParse.com
MIT License
12.47k stars 1.14k forks source link

fix: check _config.escapeFormulae is true #1025

Closed sp94 closed 12 months ago

sp94 commented 12 months ago

When parsing the config with a boolean value of escapeFormulae, the presence of the escapeFormulae key is checked but the value itself is not checked.

This means that _config = {escapeFormulae: false} behaves the same as _config = {escapeFormulae: true}.

Codesandbox example

import "./styles.css";
import Papa from "papaparse";

export default function App() {
  const data = [
    ["a", "b"],
    [1, "=1+2"]
  ];
  const emptyConfigResult = Papa.unparse(data, {});
  const escapeFormulaeFalseResult = Papa.unparse(data, {
    escapeFormulae: false
  });
  const escapeFormulaeTrueResult = Papa.unparse(data, { escapeFormulae: true });

  return (
    <div className="App">
      <h3>Empty config</h3>
      <pre>{emptyConfigResult}</pre>
      <h3>escapeFormulae = false</h3>
      <pre>{escapeFormulaeFalseResult}</pre>
      <h3>escapeFormulae = true</h3>
      <pre>{escapeFormulaeTrueResult}</pre>
    </div>
  );
}

Result

Empty config

a,b
1,=1+2

escapeFormulae = false

a,b
1,"'=1+2"

escapeFormulae = true

a,b
1,"'=1+2"

This PR adds a check that escapeFormulae is truthy before using the default regex for escaping formulae.

pokoli commented 12 months ago

I've merged the fix. Thanks for the patch!