ns.js 871 B

12345678910111213141516171819202122232425262728293031323334
  1. /**
  2. * Parses a namespaced attribute name of the form (ns:)localName to an object,
  3. * given a default prefix to assume in case no explicit namespace is given.
  4. *
  5. * @param {String} name
  6. * @param {String} [defaultPrefix] the default prefix to take, if none is present.
  7. *
  8. * @return {Object} the parsed name
  9. */
  10. export function parseName(name, defaultPrefix) {
  11. var parts = name.split(/:/),
  12. localName, prefix;
  13. // no prefix (i.e. only local name)
  14. if (parts.length === 1) {
  15. localName = name;
  16. prefix = defaultPrefix;
  17. } else
  18. // prefix + local name
  19. if (parts.length === 2) {
  20. localName = parts[1];
  21. prefix = parts[0];
  22. } else {
  23. throw new Error('expected <prefix:localName> or <localName>, got ' + name);
  24. }
  25. name = (prefix ? prefix + ':' : '') + localName;
  26. return {
  27. name: name,
  28. prefix: prefix,
  29. localName: localName
  30. };
  31. }