url icon indicating copy to clipboard operation
url copied to clipboard

add alternative methods to handle a basepath like "some/path/"

Open sporto opened this issue 6 years ago • 4 comments

Consider an application that is not in the root of a site e.g.

example.com/some/path/

In this case we would pass the basepath to the app via flags. e.g

flags =
    {
    basePath = "some/path/"
    }

I attempted to parse this like:

matchers : Parser (Route -> a) a
matchers =
    Parser.s flags.basePath  </> Parser.oneOf
        [ Parser.map Home Parser.top
        , Parser.map About (Parser.s "about")
        ]

But Parser.s won't parse the /.

Example here https://ellie-app.com/3grXTSD4Bkxa1

It would be great to have something to parse a basepath e.g.

matchers : Parser (Route -> a) a
matchers =
    Parser.base flags.basePath  </> Parser.oneOf
        [ Parser.map Home Parser.top
        , Parser.map About (Parser.s "about")
        ]

Thanks

sporto avatar Sep 06 '18 22:09 sporto

One workaround is to remove the basepath manually before parsing e.g.

urlWithoutBasePath =
   { url |
      path = String.replace flags.basePath "" url.path
   }

sporto avatar Sep 06 '18 22:09 sporto

That workaround completely ignores the problem of percent-encoding.

malaire avatar Oct 31 '18 18:10 malaire

I'm experiencing this issue as well on a github-pages site

ashishsc avatar Nov 26 '18 02:11 ashishsc

That workaround completely ignores the problem of percent-encoding.

...Then percent-encode the base path first.

Erudition avatar Jun 19 '19 16:06 Erudition