overcast 0.1.3

Strongly typed changelogs for projects as changeable as the weather
Documentation
#![forbid(unsafe_code)]
#![deny(rustdoc::broken_intra_doc_links)]
#![warn(missing_docs)]
#![deny(rustdoc::invalid_codeblock_attributes)]

//! Overcast is a crate for defining strongly typed changelogs that are designed to make it simple to
//! [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
//!
//! # Example
//!
//! A more complete example is available in `get_overcast_changelog.rs`, the structure used to render
//! `CHANGELOG.md`
//!
//! ```rust
//! # use overcast::{Changelog, render_markdown, Release};
//! let changelog = Changelog::new("My Changelog")
//!     .with_description("A changelog for amazing things")
//!     .add_release(Release::new(0, 1, 0)
//!         .with_date(1970, 1, 1)
//!         .added("New feature")
//!         .fixed("All the bugs")
//!     );
//!
//! let markdown = render_markdown(&changelog).unwrap();
//!
//! assert_eq!(
//!     markdown,
//!     "# My Changelog
//!
//! A changelog for amazing things
//!
//! ### 0.1.0 - 1970-01-01
//!
//! #### Added
//! - New feature
//!
//!
//! #### Fixed
//! - All the bugs
//!
//!"
//! )
//! ```
//!
//! # Features
//!
//! - **dates** Support for adding dates to changelog entries
//! - **render_markdown** render changelogs as JSON
//! - **render_json** render changelogs to JSON format
//! - **drizzle_changelog** include Drizzle's changelog. Mainly to enable testing and examples

mod change;
mod changelog;
#[cfg(feature = "overcast_changelog")]
mod overcast_changelog;
mod release;
mod renderers;

pub use change::Change;
pub use changelog::Changelog;
pub use release::Release;
pub use renderers::*;

#[cfg(feature = "overcast_changelog")]
pub use overcast_changelog::get_overcast_changelog;

fn appended_list<T>(list: Vec<T>, item: T) -> Vec<T> {
    let mut list = list;
    list.push(item);
    list
}