// Copyright 2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. extern crate toml; use {NewlineStyle, BraceStyle, ReturnIndent, StructLitStyle}; use lists::SeparatorTactic; use issues::ReportTactic; #[derive(Copy, Clone, Eq, PartialEq, Debug)] pub enum BlockIndentStyle { // Same level as parent. Inherit, // One level deeper than parent. Tabbed, // Aligned with block open. Visual, } impl_enum_decodable!(BlockIndentStyle, Inherit, Tabbed, Visual); #[derive(RustcDecodable, Clone)] pub struct Config { pub max_width: usize, pub ideal_width: usize, pub leeway: usize, pub tab_spaces: usize, pub newline_style: NewlineStyle, pub fn_brace_style: BraceStyle, pub fn_return_indent: ReturnIndent, pub fn_args_paren_newline: bool, pub struct_trailing_comma: SeparatorTactic, pub struct_lit_trailing_comma: SeparatorTactic, pub struct_lit_style: StructLitStyle, pub enum_trailing_comma: bool, pub report_todo: ReportTactic, pub report_fixme: ReportTactic, pub reorder_imports: bool, // Alphabetically, case sensitive. pub expr_indent_style: BlockIndentStyle, } impl Config { pub fn from_toml(toml: &str) -> Config { let parsed = toml.parse().unwrap(); match toml::decode(parsed) { Some(decoded) => decoded, None => { println!("Decoding config file failed. Config:\n{}", toml); let parsed: toml::Value = toml.parse().unwrap(); println!("\n\nParsed:\n{:?}", parsed); panic!(); } } } }