hpath: Support for well-typed paths

[ bsd3, filesystem ] [ Propose Tags ]
This version is deprecated.

Support for well-typed paths, utilizing ByteString under the hood.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.5.9, 0.6.0, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.8.0, 0.8.1, 0.9.0, 0.9.1, 0.9.2, 0.10.0, 0.10.1, 0.10.2, 0.11.0, 0.12.0, 0.12.1 (info)
Change log CHANGELOG
Dependencies base (>=4.8 && <5), bytestring (>=0.10.0.0), deepseq, exceptions, hpath-filepath (>=0.10 && <0.11), template-haskell, unbuildable (<0), utf8-string, word8 [details]
License BSD-3-Clause
Copyright Julian Ospald 2016
Author Julian Ospald <hasufell@posteo.de>
Maintainer Julian Ospald <hasufell@posteo.de>
Category Filesystem
Source repo head: git clone https://github.com/hasufell/hpath
Uploaded by maerwald at 2020-01-13T23:22:08Z
Distributions NixOS:0.12.1
Reverse Dependencies 4 direct, 1 indirect [details]
Downloads 8020 total (60 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2020-01-13 [all 1 reports]

Readme for hpath-0.10.1

[back to package description]

HPath

Gitter chat Hackage version Build Status Hackage-Deps

Support for well-typed paths in Haskell.

This package is part of the HPath suite, also check out hpath-filepath and hpath-io.

Motivation

The motivation came during development of hsfm which has a pretty strict File type, but lacks a strict Path type, e.g. for user input.

The library that came closest to my needs was path, but the API turned out to be oddly complicated for my use case, so I decided to fork it.

Goals

  • well-typed paths
  • safe filepath manipulation, never using String as filepath, but ByteString

Note: this library was written for posix systems and it will probably not support other systems.

Differences to 'path'

  • doesn't attempt to fake IO-related information into the path, so whether a path points to a file or directory is up to your IO-code to decide...
  • trailing path separators will be preserved if they exist, no messing with that
  • uses safe ByteString for filepaths under the hood instead of unsafe String
  • fixes broken dirname
  • renames dirname/filename to basename/dirname to match the POSIX shell functions
  • introduces a new Path Fn for safe filename guarantees and a RelC class
  • allows pattern matching via unidirectional PatternSynonym
  • uses simple doctest for testing
  • allows ~/ as relative path, because on posix level ~ is just a regular filename that does NOT point to $HOME