urlconf.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. (function (ns) {
  2. 'use strict';
  3. ns.UrlConfInvalidComponent = function() {
  4. this.message = 'component argument should be array or object';
  5. };
  6. ns.UrlConf = function() {
  7. var self = this;
  8. this._patterns = [];
  9. this.patterns = function() {
  10. return this._patterns;
  11. };
  12. var prefixPattern = function(prefix, pattern) {
  13. return (prefix + pattern).replace('//', '/');
  14. };
  15. var include = function(prefix, patterns) {
  16. for (var i = 0; i < patterns.length; i ++) {
  17. self.url(prefixPattern(prefix, patterns[i].pattern),
  18. patterns[i].component,
  19. patterns[i].name);
  20. }
  21. };
  22. this.url = function(pattern, component, name) {
  23. if (typeof component !== 'object') {
  24. throw new ns.UrlConfInvalidComponent();
  25. }
  26. if (pattern === '') {
  27. pattern = '/';
  28. }
  29. if (component instanceof ns.UrlConf) {
  30. include(pattern, component.patterns());
  31. } else {
  32. this._patterns.push({
  33. pattern: pattern,
  34. component: component,
  35. name: name
  36. });
  37. }
  38. };
  39. };
  40. } (Misago.prototype));