Sha256: 6f03526be7a44d736e4c2d74478d338cf65b8b0411696a44ea78487104194800

Contents?: true

Size: 1015 Bytes

Versions: 4

Compression:

Stored size: 1015 Bytes

Contents

const requestParse = require("./requestParse");

// Formats and sends a request to the parser server. We use netcat (or something
// like it) here since Prettier requires the results of `parse` to be
// synchronous and Node.js does not offer a mechanism for synchronous socket
// requests.
function parseSync(parser, source) {
  const response = requestParse(parser, source);

  if (
    response.stdout.length === 0 ||
    (response.status !== null && response.status !== 0)
  ) {
    console.error("Could not parse response from server");
    console.error(response);

    throw new Error(response.stderr || "An unknown error occurred");
  }

  const parsed = JSON.parse(response.stdout);

  if (parsed.error) {
    throw new Error(
      `@prettier/plugin-ruby encountered an error when attempting to parse \
the ruby source. This usually means there was a syntax error in the \
file in question. You can verify by running \`ruby -i [path/to/file]\`.`
    );
  }

  return parsed;
}

module.exports = parseSync;

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
prettier-1.5.2 src/parser/parseSync.js
prettier-1.5.1 src/parser/parseSync.js
prettier-1.5.0 src/parser/parseSync.js
prettier-1.4.0 src/parser/parseSync.js