package mdx

  1. Overview
  2. Docs
Executable code blocks inside markdown files

Install

Dune Dependency

Authors

Maintainers

Sources

mdx-1.10.0.tbz
sha256=347209c2286ba491cf0d1da0afdbe27cc3ab2c640350c3df8093257672eb940c
sha512=00985ea419719c28e01ec1c66ad2ac0f7f16e0d30351ab4ed7d96fc1503f0fde9d135d7417dd309d4cb3508aca24061d3eed5d5065c60d2968ab189af1fb9d22

CHANGES.md.html

1.10.0

Added
  • Display OCaml warnings in mdx-error blocks (#293, @gpetiot)

Fixed
  • Show exceptions in the correct order (#332, @talex5)

1.9.0

Added
  • Add a new dune-gen subcommand that generates testing code for Dune to build and run with the new mdx stanza. (#305, @voodoos)

1.8.1

Changed
  • Dropped OMP dependency and use handwritten compat layers instead (#317, @NathanReb)

1.8.0

Added
  • Allow to explicitly set the kind of blocks in labels: ocaml, cram, toplevel or include. (#237, @gpetiot)

  • Include blocks do not require an empty block anymore (#286, @gpetiot)

  • Support for OCaml 4.12 (#298, @kit-ty-kate)

Changed
  • Improve error message of cram test exceptions due to empty lines in a block (#270, @pitag-ha)

Fixed
  • Report #require directive errors (#276, @gpetiot)

  • Handle no such file exception: the input file and the values of options --root and --prelude are checked (#292, @gpetiot)

  • Keep locations from parsing instead of recomputing the lines, providing better error messages (#241, @gpetiot)

  • Use create_process instead of execvp to call mdx-test from mdx. This fixes running mdx from dune on Windows (#299, @emillon)

1.7.0

Added
  • HTML comments can carry block labels (#234, @gpetiot) The syntax is: <!-- $MDX labels -->, where labels is a list of valid labels separated by a comma. This line has to immediately precede the block it is attached to. The legacy syntax is preserved and will be deprecated in a later release.

  • Add support for toplevel blocks in .mli files' doc comments (#206, @jsomers)

  • Add support for OCaml 4.11 (#261, @kit-ty-kate)

Changed
  • Apply unnamed preludes to all environments (#271, @gpetiot) New behavior:

    • env_and_file "a:f" associates f to the environment named a

    • env_and_file " :f" associates f to the default environment

    • env_and_file "f" associates f to all environments.

  • Errors in non toplevel OCaml blocks are now printed to a seperate mdx-error code block following the ocaml block instead of crashing the mdx process. Those mdx-error blocks are recognized and checked by mdx and can be intentionally used to show case specific compile errors. (#238, @gpetiot)

  • Improve error reporting for invalid (* $MDX part-... *) delimiters (#250, @gpetiot)

Deprecated
  • The command 'mdx rule' is deprecated and will be removed in 2.0.0 (#251, @gpetiot)

Fixed
  • Fix the environment selection for preludes and slightly improve quality of type names in evaluations of toplevel phrases in certain cases. (#225, @gpetiot)

  • Fix toplevel parsing when phrases contain tabs (#240, @gpetiot)

  • Avoid adding newlines to empty blocks (#253, @gpetiot)

  • Preserve the indentation of included files (#259, @gpetiot)

  • Preserve the header in shell blocks (#249, @craigfe)

  • Support underscores in environment variables in set- and unset- labels (#257, @shonfeder)

  • Fix mdx on Windows which was looking for the ocaml-mdx-test binary at the wrong place (#263, @hcarty)

  • Properly report mdx parsing errors instead of crashing with an uncaught exception (#267, @gpetiot)

1.6.0

Added
  • Add a --duniverse-mode to ocaml-mdx rule so that the generated rules work within a duniverse

  • Allow to import arbitrary files (not only .ml/.mli ones) into code blocks using the file label. (#203, #207, @voodoos)

  • Allow to set the --non-deterministic option through the MDX_RUN_NON_DETERMINISTIC env variables (#208, @NathanReb)

  • Add support for OCaml 4.10 (#204, @kit-ty-kate)

  • Infer syntax kind when --syntax is not set, and add 'markdown' as an alias to 'normal' (#222, @gpetiot)

  • Add ocaml-mdx deps command to be used by dune to compute file and dir dependencies of an mdx file. (#217, @voodoos)

  • Add new delimiters syntax using comments for partial OCaml files include (#212, @voodoos).

Changed
  • Do not unset INSIDE_DUNE when executing shell commands by default (#224, @NathanReb)

Fixed
  • Fix a bug that could cause ocaml-mdx test to crash on some include in toplevel code blocks (#202, @trefis)

Removed
  • Remove the direction option, only synchronize from .ml to .md files (#214, @gpetiot)

1.5.0 (2019-11-29)

Added
  • Add a --output/-o option to the test subcommand to allow specifying a different output file to write the corrected to, or to write it to the standard output (#194, @NathanReb)

  • Migrate to OCaml 4.08 AST to add support for let* bindings (#190, @gpetiot)

  • Add --syntax option to rule subcommand to allow generating rules for cram tests (#177, @craigfe)

  • Add a require-package label to explicitly declare dune package dependencies of a code block (#149, @Julow)

  • Add an unset- label to unset env variables in shell blocks (#132, @clecat)

Changed
  • Format rules generated by ocaml-mdx rule using dune format-dune-file (#184, @NathanReb)

  • Run promotion of markdown files before .ml files in generated dune rules (#140, @clecat)

Fixed
  • Use module_presence information on Env.summary to prevent fetching absent modules from the toplevel env (#186, @clecat)

  • Remove trailing whitespaces at the end of toplevel or bash evaluation lines (#166, @clecat)

  • Improve error reporting of ocaml-mdx test (#172, @Julow)

  • Rule: Pass the --section option to test (#176, @Julow)

  • Remove trailing whitespaces from shell outputs and toplevel evals (#166, @clecat)

  • Remove inappropriate empty lines in generated dune rules (#163, @Julow)

  • Fix ignored skip label in ocaml-mdx pp (#1561, @CraigFe)

  • Fix synchronization of new parts from markdown to .ml (#156, @Julow)

  • Fix ignored [@@@parts ...] markers within module definitions (#155, @Julow)

  • Fix a bug in internal OCaml version comparison that lead to crashes in some cases (#145, @gpetiot)

  • Promote to empty .ml file when using to-ml direction (#139, @clecat)

  • Apply --force-output to .ml file as well (#137, @clecat)

  • Fix a bug preventing .corrected files to be written in some cases (#136, @clecat)

  • Add compatibility with 4.09.0 (#133, @xclerc)

Removed
  • Remove the output subcommand as it was very specific to RealWorldOCaml needs (#195, @NathanReb)

  • Remove the infer-timestamp direction (#171 @Julow)

1.4.0 (2019-06-11)

  • Add --force-output option to force generation of diff file (#118 @clecat)

  • Support OCaml 4.08.0 (#121 @xclerc)

  • README and documentation fixes (#122 #118 @andreypopp @clecat @samoht)

  • Use latest ocaml-migrate-parsetree interfaces (@avsm)

1.3.0 (2019-03-01)

  • Updated readme file with the new features: dune rules, named environment and ocaml versions, Some grammar correction too (@gpetiot, #101, aantron, #102)

  • Better lexer error messages (@avsm, #103)

  • Added cram syntax parsing (@trefis, #106)

  • Renamed mdx to ocaml-mdx to avoid conflicts/for more precision (@clecat, #110, #115)

  • Fix blank spaces causing parsing errors (@gpetiot, #97)

  • Fix empty lines causing a String.sub (@clecat, #107)

1.2.0 (2018-01-03)

  • Support end-of-line ellipsis (@dra27, #85)

  • Support OCaml 4.02.3 (@gpetiot, #86)

  • Support version=.., version<=.. and version>=.. keywords to run a code-block depending on the currently installed OCaml version (@gpetiot, #87, #90)

  • Upgrade Travis tests to use opam 2.0.2 (@avsm, #89)

  • Do not depend on ppx_tools for toplevel (@avsm, #89)

  • Fix embedding in a larger Dune project with a cppo override (@avsm, #89)

  • mdx output: escape HTML entities in code blocks (#91, @samoht)

1.1.0 (2018-11-16)

  • Add a mechanism to promote files to blocks and blocks to file (@gpetiot, #37)

  • Support multiple toplevel environments (@gpetiot, #38)

  • Use ocaml-migrate-parsetree to compile in 4.06.1 & 4.07.0 (@gpetiot, #41)

  • Add a mdx rule command to generate dune rules (@gpetiot, #44)

  • Add a mdx output command to generate an HTML document (@samoht, #45)

  • Support empty code blocks (@samoht, #46)

  • Fix detection of OCaml code/toplevel (@samoht, #47)

  • Better handling of multi-line shell scripts (@samoht, #48)

  • Fix regression in toplevel blocks when creating newtype (@samoht, #49)

  • Fix evaluation of non-determinitic test (@samoht, #50)

  • Improve mdx rules to take into account more precise dependencies (@samoht, #51)

  • Fix promotion of blocks to complete ML files (@samoht, #52)

  • mdx does not use the cppo library, just the binary (@samoht, #53)

  • fix ellipsis in code blocks (@samoht, #57)

  • Fix relative paths for promoted blocks to files (@samoht, #58)

  • Fix location of errors for multi-line commands (@samoht, #60)

  • improve the parser for shell blocks (@samoht, #61)

  • Allow to load preludes in specific environments (@samoht, #63)

  • Fix evaluation of code after directives in prelude (@samoht, #64)

  • Improve promotion to ml files (@samoht, #66)

  • mdx rule: generates (source_tree) dependencies for directory metadata (@samoht, #67)

  • Fix handling of 'module type' in multiple toplevel environment (@samoht, #68)

  • Add an eval=false label to skip the evaluation of a code block (@samoht, #69)

  • Fix parsing of shell blocks with multiple exit codes (@samoht, #71)

  • Support source-tree as extra block metadata (@samoht, #72)

  • Better formatting of non-compiling promoted contents (@samoht, #73)

  • Be sure to remove the .corrected files if the promotion to ML file works (mdx74)

  • Add missing dependency in test/dune (@samoht, #75)

  • Support dir=.. labels in ml code blocks (@samoht, #76)

  • Allow to promote to mli files too (@samoht, #77)

  • Support multi-line strings (@samoht, #78)

  • fail (and exit 1) if prelude and ml blocks cannot be evaluated properly (@samoht, #80, @samoht, #83)

  • Allow to pass --root to mdx rule (@samoht, #81)

  • mdx rule: do not add (package mdx) in the dependencies (@samoht, #82)

1.0.0 (2018-09-23)

  • Initial release

OCaml

Innovation. Community. Security.