You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 3 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = getValue;
  6. exports.getLiteralValue = getLiteralValue;
  7. var _object = require('object.assign');
  8. var _object2 = _interopRequireDefault(_object);
  9. var _Literal = require('./Literal');
  10. var _Literal2 = _interopRequireDefault(_Literal);
  11. var _JSXElement = require('./JSXElement');
  12. var _JSXElement2 = _interopRequireDefault(_JSXElement);
  13. var _expressions = require('./expressions');
  14. var _expressions2 = _interopRequireDefault(_expressions);
  15. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16. // Composition map of types to their extractor functions.
  17. var TYPES = {
  18. Literal: _Literal2.default,
  19. JSXElement: _JSXElement2.default,
  20. JSXExpressionContainer: _expressions2.default
  21. };
  22. // Composition map of types to their extractor functions to handle literals.
  23. var LITERAL_TYPES = (0, _object2.default)({}, TYPES, {
  24. JSXElement: function JSXElement() {
  25. return null;
  26. },
  27. JSXExpressionContainer: _expressions.extractLiteral
  28. });
  29. /**
  30. * This function maps an AST value node
  31. * to its correct extractor function for its
  32. * given type.
  33. *
  34. * This will map correctly for *all* possible types.
  35. *
  36. * @param value - AST Value object on a JSX Attribute.
  37. */
  38. function getValue(value) {
  39. return TYPES[value.type](value);
  40. }
  41. /**
  42. * This function maps an AST value node
  43. * to its correct extractor function for its
  44. * given type.
  45. *
  46. * This will map correctly for *some* possible types that map to literals.
  47. *
  48. * @param value - AST Value object on a JSX Attribute.
  49. */
  50. function getLiteralValue(value) {
  51. return LITERAL_TYPES[value.type](value);
  52. }