Advertisement
Guest User

Untitled

a guest
Jul 28th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Browser
  2. import Browser.Navigation as Nav
  3. import Html exposing (..)
  4. import Html.Attributes exposing (..)
  5. import Url
  6.  
  7. main =
  8.   Browser.application
  9.   { init = init
  10.   , view = view
  11.   , update = update
  12.   , subscriptions = subscriptions
  13.   , onUrlChange = UrlChanged
  14.   , onUrlRequest = LinkClicked }
  15.  
  16. type alias Model =
  17.   { key : Nav.Key
  18.   , url : Url.Url
  19.   }
  20.  
  21. init : () -> Url.Url -> Nav.Key -> ( Model, Cmd Msg )
  22. init _ url key =
  23.   ( Model key url, Cmd.none )
  24.  
  25. type Msg
  26.   = LinkClicked Browser.UrlRequest
  27.   | UrlChanged Url.Url
  28.  
  29. update : Msg -> Model -> ( Model, Cmd Msg )
  30. update msg model =
  31.   case msg of
  32.     LinkClicked urlRequest ->
  33.       case urlRequest of
  34.         Browser.Internal url ->
  35.           ( model, Nav.pushUrl model.key (Url.toString url) )
  36.         Browser.External href ->
  37.           ( model, Nav.load href )
  38.     UrlChanged url ->
  39.       ( { model | url = url}
  40.       , Cmd.none )
  41.  
  42. subscriptions : Model -> Sub Msg
  43. subscriptions _ = Sub.none
  44.  
  45. view : Model -> Browser.Document Msg
  46. view model =
  47.   { title = "URL Interceptor"
  48.   , body =
  49.     [ text "The current URL is: "
  50.     , b [] [ text (Url.toString model.url)
  51.     , ul []
  52.       [ viewLink "/home"
  53.       , viewLink "/profile"
  54.       , viewLink "/reviews/the-century-of-the-self"
  55.       , viewLink "/reviews/public-opinion"
  56.       , viewLink "/reviews/shah-of-shahs" ] ] ] }
  57.  
  58. viewLink : String -> Html msg
  59. viewLink path =
  60.   li [] [ a [ href path ] [ text path ] ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement