sammyjs optional parameters

Sammy actually dropped the ball when it comes to optional parameters and querystrings. The only way I could get this to work fairly well is to use regular expressions and the splat object. In your example, you would write :

this.get(/\#\/route\/(.*)\/(.*)/, function (context) {
        var result = this.params['splat'];
});

The downside is that you need the backslash at the end of the URL when the optional parameter is omitted.

The splat object is the actual result of the JavaScript match method and is an array.

'#/route/test/' => {result[0]: 'test', result[1]: ''}
'#/route/test/chicken' => {result[0]: 'test', result[1]: 'chicken'}

this.get("#/:param1(/:param2)?", function (context) {
    var result = this.params['splat'];
});

The only issue with this approach is param2 will start with a '/', but this can be removed easily.

'#/go' => {result[0]: 'go', result[1]: ''}
'#/go/here' => {result[0]: 'go', result[1]: '/here'}