builder/lib/tasks/escapeNonAsciiCharacters.js

  1. const nonAsciiEscaper = require("../processors/nonAsciiEscaper");
  2. /**
  3. * Task to escape non ascii characters in properties files resources.
  4. *
  5. * @public
  6. * @alias module:@ui5/builder.tasks.escapeNonAsciiCharacters
  7. * @param {object} parameters Parameters
  8. * @param {module:@ui5/fs.DuplexCollection} parameters.workspace DuplexCollection to read and write files
  9. * @param {object} parameters.options Options
  10. * @param {string} parameters.options.pattern Glob pattern to locate the files to be processed
  11. * @param {string} parameters.options.encoding source file encoding either "UTF-8" or "ISO-8859-1"
  12. * @returns {Promise<undefined>} Promise resolving with <code>undefined</code> once data has been written
  13. */
  14. module.exports = async function({workspace, options: {pattern, encoding}}) {
  15. if (!encoding) {
  16. throw new Error("[escapeNonAsciiCharacters] Mandatory option 'encoding' not provided");
  17. }
  18. const allResources = await workspace.byGlob(pattern);
  19. const processedResources = await nonAsciiEscaper({
  20. resources: allResources,
  21. options: {
  22. encoding: nonAsciiEscaper.getEncodingFromAlias(encoding)
  23. }
  24. });
  25. await Promise.all(processedResources.map((resource) => workspace.write(resource)));
  26. };