Crate up2code

Source
Expand description

up2code is a tool for checking code listings in Markdown files, to make sure they’re up to date with, and in sync with, canonical versions stored in a GitHub repo.

up2code reads all the Markdown files you specify, looking for what it considers a “listing”: a fenced code block immediately followed by a web link. For example:

    ```rust
    fn main() {
        println!("Hello, world!")
    }
    ```
    [Listing `hello/1`](https://github.com/bitfield/example/blob/src/main.rs))

It will try to fetch the raw code page from the specified URL (appending “?raw=true”), reporting any errors. If the fetch succeeds, it will check that the Markdown listing is an exact substring of the GitHub listing (possibly indented by four spaces), reporting any mismatch as a unified diff:

tests/data/test.md: Listing `counter_2`
@@ -6,8 +13,8 @@

     #[test]
     fn count_lines_fn_counts_lines_in_input() {
-        let input = io::Cursor::new("line 1\nline2\n");
+        let input = io::Cursor::new("line 1\nline 2\n");
         let lines = count_lines(input);
-        assert_eq!(2, lines);
+        assert_eq!(lines, 2);
     }
 }

Structs§

CheckedListing
A checked listing containing both the Markdown version and the canonical version from GitHub.
Listing
A listing as parsed out of the Markdown source.

Functions§

diff
Diffs the Markdown listing against its canonical GitHub version.
listings
Returns all the listings in the file at path.