parseStation
  :: C.MonadThrow m
  => Pipe Event Event o u m (Maybe Station)
parseStation = do
  withDef $ ptag "station" $ do
    name <- text "name"
    abbr <- text "abbr"
    etds <- many parseEtd
    return $ Station
      <$> name
      <*> abbr
      <*> Just etds
parseStation
  :: C.MonadThrow m
  => Pipe Event Event o u m (Maybe Station)
parseStation = do
  withDef $ ptag "station" $ do
    name <- text "name"
    abbr <- text "abbr"
    etds <- many parseEtd
    return $ Station
      <$> name
      <*> abbr
      <*> Just etds
parseStation = do
  withDef $ ptag "station" $ do
    name <- text "name"
    abbr <- text "abbr"
    etds <- many parseEtd
    return $ Station
      <$> name
      <*> abbr
      <*> Just etds