From add3e18d156bbe40598f809cde70a740376ff9bf Mon Sep 17 00:00:00 2001 From: Vit Brunner Date: Fri, 13 Mar 2015 20:06:51 +0100 Subject: [PATCH] Fix multislashes --- source/scripts/controllers/comparison.js.coffee | 2 +- source/scripts/services/fetch.js.coffee | 2 +- source/scripts/services/route.js.coffee | 13 ++++++++++--- source/tests/services/route.js.coffee | 8 ++++++++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/source/scripts/controllers/comparison.js.coffee b/source/scripts/controllers/comparison.js.coffee index ef6830b..47c99ba 100644 --- a/source/scripts/controllers/comparison.js.coffee +++ b/source/scripts/controllers/comparison.js.coffee @@ -45,7 +45,7 @@ angular.module("sideBySide").controller "ComparisonController", # TODO else notification load( - route.appUrl + '/' + route.params.base.replace /\./g, '/' + route.getBaseDir() route.params.display ) ] diff --git a/source/scripts/services/fetch.js.coffee b/source/scripts/services/fetch.js.coffee index c719d66..599553f 100644 --- a/source/scripts/services/fetch.js.coffee +++ b/source/scripts/services/fetch.js.coffee @@ -6,7 +6,7 @@ angular.module("sideBySide").factory "fetch", # @param base [String] Path to config file directory # @return [Object] Promises and config data (base) -> - file = base + '/config.json' + file = base + 'config.json' $http.get(file).then (config) -> if typeof config.data != "object" throw "Config file " + file + " doesn't contain data." diff --git a/source/scripts/services/route.js.coffee b/source/scripts/services/route.js.coffee index dc2321b..7b08af8 100644 --- a/source/scripts/services/route.js.coffee +++ b/source/scripts/services/route.js.coffee @@ -20,9 +20,9 @@ angular.module("sideBySide").service "route", @params.base = '' if 'base' not of @params absUrl = $location.absUrl() - @appUrl = absUrl.substring(0, absUrl.length - $location.url().length) - if @appUrl.substring(@appUrl.length - 2) == '/#' - @appUrl = @appUrl.substring(0, @appUrl.length - 2) + @appUrl = absUrl + .substring(0, absUrl.length - $location.url().length) + .replace /\/?#?$/, '' # remove / and # at string end getValue = (value) -> if typeof value == 'object' @@ -38,6 +38,13 @@ angular.module("sideBySide").service "route", key + ':' + getValue @params[key] .join '/' + + @getBaseDir = -> + base = '/' + if @params.base + base += @params.base.replace(/\./g, '/') + '/' + @appUrl + base + @update = (key, value) -> @params[key] = value $location.path @get() diff --git a/source/tests/services/route.js.coffee b/source/tests/services/route.js.coffee index 1842476..89e31b7 100644 --- a/source/tests/services/route.js.coffee +++ b/source/tests/services/route.js.coffee @@ -23,6 +23,14 @@ test "gets parameters", -> setup() equal route.get(), 'base:asdf/section:7' +test "gets base dir", -> + setup() + equal route.getBaseDir(), 'http://example.com/asdf/' + +test "gets more complicated base dir", -> + setup('http://example.com/path/#', '/base:test.this', '') + equal route.getBaseDir(), 'http://example.com/path/test/this/' + test "updates parameters", -> setup() route.update('base', 'zxcv')