eml-codec/doc/goals.md

955 B

Goals

  • Maintainability - modifying the code does not create regression and is possible for someone exterior to the project. Keep cyclomatic complexity low.
  • Composability - build your own parser by picking the relevant passes, avoid work that is not needed.
  • Compatibility - always try to parse something, do not panic or return an error.
  • Exhaustivity - serve as a common project to encode knowledge about emails (existing mime types, existing headers, etc.).

Non goals

  • Parsing optimization that would make more complicated to understand the logic.
  • Optimization for a specific use case, to the detriment of other use cases.
  • Pipelining/streaming/buffering as the parser can arbitrarily backtrack + our result contains reference to the whole buffer, eml-codec must keep the whole buffer in memory. Avoiding the sequential approach would certainly speed-up a little bit the parsing, but it's too much work to implement currently.