Creates a UrlRule

Creates a UrlRule from a:

- `string`
- UrlMatcher
- `RegExp`
- StateObject

### Hierarchy

- UrlRuleFactory

## Index

### Constructors

- constructor

### Properties

- router

### Methods

- compile
- create
- fromRegExp
- fromState
- fromUrlMatcher
- isUrlRule

## Constructors

- new UrlRuleFactory(router: UIRouter): UrlRuleFactory

- #### Parameters

  - ##### router UIRouter

  #### Returns UrlRuleFactory

  - Defined in url/urlRule.ts:29

## Properties

router: UIRouter

- Defined in url/urlRule.ts:31

## Methods

- compile(str: string): UrlMatcher

- #### Parameters

  - ##### str string

  #### Returns UrlMatcher

  - Defined in url/urlRule.ts:33

- create(what: string | UrlMatcher | StateObject | RegExp | UrlRuleMatchFn, handler?: string | UrlRuleHandlerFn): UrlRule

- #### Parameters

  - ##### what string | UrlMatcher | StateObject | RegExp | UrlRuleMatchFn

  - ##### handler: Optional string | UrlRuleHandlerFn

  #### Returns UrlRule

  - Defined in url/urlRule.ts:37

- fromRegExp(regexp: RegExp, handler: string | UrlRuleHandlerFn): RegExpRule

- A UrlRule which matches based on a regular expression

- A UrlRule which matches based on a regular expression

  The `handler` may be either a UrlRuleHandlerFn or a string.

  ## Handler as a function

  If `handler` is a function, the function is invoked with:

  - regexp match array (from `regexp`)
  - url: the current Url (UrlParts)
  - router: the router object (UIRouter)

  #### Example:

      var rule = factory.fromRegExp(/^\/foo\/(bar|baz)$/, match => "/home/" + match[1])
      var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]
      var result = rule.handler(match); // '/home/bar'

  ## Handler as string

  If `handler` is a string, the url is replaced by the string when the Rule is invoked. The string is first interpolated using `string.replace()` style pattern.

  #### Example:

      var rule = factory.fromRegExp(/^\/foo\/(bar|baz)$/, "/home/$1")
      var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]
      var result = rule.handler(match); // '/home/bar'

  #### Parameters

  - ##### regexp RegExp

  - ##### handler string | UrlRuleHandlerFn

  #### Returns RegExpRule

  - Defined in url/urlRule.ts:177

- fromState(state: StateObject, router: UIRouter): StateRule

- A UrlRule which matches a state by its url

- A UrlRule which matches a state by its url

  #### Example:

      var rule = factory.fromState($state.get('foo'), router);
      var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }
      var result = rule.handler(match);
      // Starts a transition to 'foo' with params: { fooId: '123', barId: '456' }

  #### Parameters

  - ##### state StateObject

  - ##### router UIRouter

  #### Returns StateRule

  - Defined in url/urlRule.ts:125

- fromUrlMatcher(urlMatcher: UrlMatcher, handler: string | UrlMatcher | UrlRuleHandlerFn): MatcherUrlRule

- A UrlRule which matches based on a UrlMatcher

- A UrlRule which matches based on a UrlMatcher

  The `handler` may be either a `string`, a UrlRuleHandlerFn or another UrlMatcher

  ## Handler as a function

  If `handler` is a function, the function is invoked with:

  - matched parameter values (RawParams from UrlMatcher.exec)
  - url: the current Url (UrlParts)
  - router: the router object (UIRouter)

  #### Example:

      var urlMatcher = $umf.compile("/foo/:fooId/:barId");
      var rule = factory.fromUrlMatcher(urlMatcher, match => "/home/" + match.fooId + "/" + match.barId);
      var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }
      var result = rule.handler(match); // '/home/123/456'

  ## Handler as UrlMatcher

  If `handler` is a UrlMatcher, the handler matcher is used to create the new url. The `handler` UrlMatcher is formatted using the matched param from the first matcher. The url is replaced with the result.

  #### Example:

      var urlMatcher = $umf.compile("/foo/:fooId/:barId");
      var handler = $umf.compile("/home/:fooId/:barId");
      var rule = factory.fromUrlMatcher(urlMatcher, handler);
      var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }
      var result = rule.handler(match); // '/home/123/456'

  #### Parameters

  - ##### urlMatcher UrlMatcher

  - ##### handler string | UrlMatcher | UrlRuleHandlerFn

  #### Returns MatcherUrlRule

  - Defined in url/urlRule.ts:87

- isUrlRule(obj: any): boolean

- #### Parameters

  - ##### obj any

  #### Returns boolean

  - Defined in url/urlRule.ts:28

Generated using TypeDoc