Guest User

Untitled

a guest
Aug 22nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. class FlagParser {
  2. static parse(args) {
  3. // guard
  4. if (false === Array.isArray(args)) { return []; }
  5.  
  6. // Creates a flag from KeyValue pair
  7. let makeFlag = (kv) => {
  8. let b = {}
  9. let k = kv[0]
  10. let v = kv[1]
  11.  
  12. // Test empty key, but not value
  13. if (k.length === 0 && v.length > 0) {
  14. k = v
  15. v = true
  16. }
  17.  
  18. // Test one entry
  19. if (kv.length === 1) {
  20. k = kv[0]
  21. v = true
  22. }
  23.  
  24. // set the object
  25. b[k] = v;
  26.  
  27. return b;
  28. }
  29.  
  30. let result = {}
  31. Array.from(args)
  32. .slice(2)
  33. .forEach(v => {
  34. let a = v.replace(/-{1,2}/g, "").split(/=/g) || [];
  35. result = Object.assign(result, makeFlag(a));
  36. });
  37.  
  38. return result;
  39. }
  40. }
  41.  
  42. function test_parser() {
  43. console.log(
  44. FlagParser.parse(
  45. [
  46. 'C:\\Program Files\\nodejs\\node.exe',
  47. 'path\\to\\file.js',
  48. 'flagA=1',
  49. '--flagB=1',
  50. '--flagC',
  51. '-flagD',
  52. '-flagE=2'
  53. ])
  54. )
  55. }
Add Comment
Please, Sign In to add comment