transform.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. var nomnom = require("../nomnom");
  2. var parser = nomnom()
  3. .option("addr", {
  4. abbr: "a",
  5. help: "host:port address",
  6. transform: function(value) {
  7. var parts = value.split(":");
  8. return {host: parts[0], port: Number(parts[1])};
  9. }
  10. })
  11. .option("string", {
  12. abbr: "s",
  13. help: "always a string",
  14. transform: function(value) {
  15. return value.toString();
  16. }
  17. });
  18. exports.testTransformComplexValue = function(test) {
  19. var opts = parser.parse(["-a", "localhost:1234"]);
  20. test.strictEqual(opts.addr.host, "localhost");
  21. test.strictEqual(opts.addr.port, 1234);
  22. test.done();
  23. };
  24. exports.testTransformString = function(test) {
  25. var opts = parser.parse(["-s", "3"]);
  26. test.strictEqual(opts.string, "3");
  27. test.done();
  28. };
  29. exports.testTransformCommand = function(test) {
  30. test.expect(1);
  31. var parser = nomnom().scriptName("test")
  32. .options({
  33. addr: {
  34. transform: function(value) {
  35. var parts = value.split(":");
  36. return {host: parts[0], port: Number(parts[1])};
  37. }
  38. }
  39. });
  40. parser.command("run")
  41. .options({
  42. string: {
  43. transform: function(value) {
  44. return value.toString();
  45. }
  46. }
  47. })
  48. .callback(function(options) {
  49. test.strictEqual(options.string, "true");
  50. });
  51. parser.parse(["run", "--string=true"]);
  52. test.done();
  53. };