urlconf.js 971 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. (function (Misago) {
  2. 'use strict';
  3. Misago.UrlConf = function() {
  4. var self = this;
  5. this._patterns = [];
  6. this.patterns = function() {
  7. return this._patterns;
  8. };
  9. var prefixPattern = function(prefix, pattern) {
  10. return (prefix + pattern).replace('//', '/');
  11. };
  12. var include = function(prefix, patterns) {
  13. for (var i = 0; i < patterns.length; i ++) {
  14. self.url(prefixPattern(prefix, patterns[i].pattern),
  15. patterns[i].component,
  16. patterns[i].name);
  17. }
  18. };
  19. this.url = function(pattern, component, name) {
  20. if (pattern === '') {
  21. pattern = '/';
  22. }
  23. if (component instanceof Misago.UrlConf) {
  24. include(pattern, component.patterns());
  25. } else {
  26. this._patterns.push({
  27. pattern: pattern,
  28. component: component.replace(/_/g, '-'),
  29. name: name || component
  30. });
  31. }
  32. };
  33. };
  34. }(Misago.prototype));