Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. const fs = require("fs");
  2. const convert = require("xml-js");
  3.  
  4. const getFile = name => {
  5. if (name === "en") {
  6. return `${process.cwd()}/app/src/main/res/values/strings.xml`;
  7. }
  8.  
  9. return `${process.cwd()}/app/src/main/res/values-${name}/strings.xml`;
  10. };
  11. const be = fs.readFileSync(getFile("be"), "utf-8");
  12. const en = fs.readFileSync(getFile("en"), "utf-8");
  13.  
  14. const beRAW = convert.xml2json(be, { compact: true, spaces: 4 });
  15. const enRAW = convert.xml2json(en, { compact: true, spaces: 4 });
  16. const beJSON = JSON.parse(beRAW).resources.string;
  17. const enJSON = JSON.parse(enRAW).resources.string;
  18.  
  19. const difference = (be, en) => {
  20. const mapper = value => {
  21. return value._attributes.name;
  22. };
  23.  
  24. const d1 = be.map(mapper);
  25. const d2 = en.map(mapper);
  26.  
  27. const filter = d2.filter(value => {
  28. if (!d1.includes(value)) {
  29. return value;
  30. }
  31. });
  32.  
  33. return filter;
  34. };
  35.  
  36. const addFifferencesToFile = (fileName, differences) => {
  37. const filePath = getFile(fileName);
  38.  
  39. const be = fs.readFileSync(filePath, "utf-8");
  40. const en = fs.readFileSync(getFile("en"), "utf-8");
  41.  
  42. const enRAW = convert.xml2json(en, { spaces: 4 });
  43. const enJSON = JSON.parse(enRAW);
  44.  
  45. const elements = enJSON.elements[0].elements
  46. .map((el, i) => {
  47. if (differences.includes(el.attributes.name)) {
  48. return el;
  49. }
  50. return;
  51. })
  52. .filter(el => el != null);
  53.  
  54. const result = convert.json2xml({
  55. ...enJSON,
  56. elements
  57. });
  58.  
  59. return result
  60. .replace('<?xml version="1.0" encoding="utf-8"?>', "")
  61. .replace("</string>", "</string>\n")
  62. .replace("<string>", "\xa0\xa0\xa0\xa0<string>");
  63. };
  64.  
  65. const differences = difference(beJSON, enJSON);
  66.  
  67. console.log(addFifferencesToFile("be", differences));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement