kicad-data: Parser and writer for KiCad files.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Parse and write KiCad data (currently .kicad_mod files only).

[Skip to Readme]


Versions,,, 0.4.0, 0.5.0, 0.5.0, 0.5.1
Change log
Dependencies base (>=4.4 && <4.11), ieee754 (>=0.7.4 && <0.9), lens-family (>=1.1 && <1.3), parsec (>=3.1.6 && <3.2), pretty-compact (>=1.0 && <2) [details]
License MIT
Copyright 2014
Author Kaspar Emanuel
Category Data
Home page
Bug tracker
Source repo head: git clone
Uploaded by kasbah at 2018-01-04T14:01:06Z




Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Readme for kicad-data-0.5.0

[back to package description]

Haskell KiCad Data

Build Status

Parse and write KiCad data (currently .kicad_mod files only).

This library is tested with QuickCheck to ensure it can parse whatever it outputs. The parser is also fairly regularily checked against over 38,000 kicad_mod files currently part of monostable/kicad_footprints. The resulting output of these parsed files is then checked with KiCad scripting to make sure they are still valid.


$ cabal repl
*Data.Kicad.PcbnewExpr> let pad = parse "(pad 1 smd rect (size 1 1) (at 1 1) (layers F.Cu))"
*Data.Kicad.PcbnewExpr> pad
Right (PcbnewExprItem (PcbnewPad {padNumber = "1", padType = SMD, padShape =
Rect, itemAt = PcbnewAtT {pcbnewAtPoint = (1.0,1.0), pcbnewAtOrientation =
0.0}, itemSize = (1.0,1.0), padLayers = [FCu], padAttributes_ = []}))
*Data.Kicad.PcbnewExpr> fmap write pad
Right "(pad \"1\" smd rect (at 1 1) (size 1 1) (layers F.Cu))"

See docs on Hackage.

Projects Using This


This project is MIT licensed but one dependency is licensed under GPLv3 thus the GPLv3 applies to the project as a whole.