Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. import Regex exposing (split, regex)
  2. import List exposing (..)
  3. import Html exposing (table, tr, td, th, text)
  4. import Dict
  5.  
  6.  
  7. input : String
  8. input =
  9. "name,age,gender\nmacario,36,male\nfabian,32,male"
  10.  
  11.  
  12. rowToDict header row =
  13. map2 (,) header row
  14. |> Dict.fromList
  15.  
  16.  
  17. parse str =
  18. let
  19. rows =
  20. split Regex.All (regex "\n") str
  21. |> map (split Regex.All (regex ","))
  22.  
  23. in
  24. case rows of
  25. header :: data ->
  26. Just (header, map (rowToDict header) data)
  27. _ ->
  28. Nothing
  29.  
  30.  
  31. renderCol col =
  32. let
  33. content =
  34. case col of
  35. Just something ->
  36. something
  37. Nothing ->
  38. ""
  39. in
  40. td [ ] [ text content ]
  41.  
  42.  
  43. renderRow row =
  44. tr
  45. [ ]
  46. [ renderCol <| Dict.get "name" row
  47. , renderCol <| Dict.get "age" row
  48. , renderCol <| Dict.get "gender" row
  49. ]
  50.  
  51.  
  52. main =
  53. case parse input of
  54. Just (header, rows) ->
  55. let
  56. formHeader =
  57. tr
  58. [ ]
  59. (map (\member -> th [ ] [text member]) header)
  60.  
  61. formRows =
  62. map renderRow rows
  63.  
  64. in
  65. table
  66. []
  67. (formHeader :: formRows)
  68.  
  69. Nothing ->
  70. text "fix your data you dumb fuck!!"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement