如何让evancz / url-parser以String的形式返回路径的其余部分?

时间:2016-09-27 16:21:17

标签: parsing elm

如何让evancz / url-parser匹配路径的开头并将其余路径作为String返回? 例如:

s "search" </> string |> format Search
如果路径类似&#34; search / text / with / slashes&#34;

,则

不匹配

我希望用&#34; text / with / slashes&#34;字符串作为有效负载。

1 个答案:

答案 0 :(得分:1)

evancz / url-parser似乎只处理由'/'分隔的段。 我想你必须编写自己的解析器。 (这里,我使用url-parser集成了yourparser,这是你现有的解析器)

urlParser : Navigation.Parser (Result String String)
urlParser =
  let
    parser : Navigation.Location -> (Result String String)
    parser location =
      Maybe.oneOf
        [ Result.toMaybe (yourparser location)
        , Result.toMaybe (extractSearch location.pathname)
        ]
      |> Result.fromMaybe "parse error"
    extractSearch pathname = 
      if String.startsWith "/search/" pathname
      then Ok (String.dropLeft 8 pathname)
      else Err "failed to extract search string"
  in Navigation.makeParser yourparser