pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
    let is_crystal_project = context
        .try_begin_scan()?
        .set_files(&["shard.yml"])
        .set_extensions(&["cr"])
        .is_match();

    if !is_crystal_project {
        return None;
    }

    let crystal_version = utils::exec_cmd("crystal", &["--version"])?.stdout;

    let mut module = context.new_module("crystal");
    let config: CrystalConfig = CrystalConfig::try_load(module.config);

    let parsed = StringFormatter::new(config.format).and_then(|formatter| {
        formatter
            .map_meta(|variable, _| match variable {
                "symbol" => Some(config.symbol),
                _ => None,
            })
            .map_style(|variable| match variable {
                "style" => Some(Ok(config.style)),
                _ => None,
            })
            .map(|variable| match variable {
                "version" => format_crystal_version(&crystal_version).map(Ok),
                _ => None,
            })
            .parse(None)
    });

    module.set_segments(match parsed {
        Ok(segments) => segments,
        Err(error) => {
            log::warn!("Error in module `crystal`:\n{}", error);
            return None;
        }
    });

    Some(module)
}
/// Creates a module with the current Crystal version
///
/// Will display the Crystal version if any of the following criteria are met:
///     - Current directory contains a `.cr` file
///     - Current directory contains a `shard.yml` file
Creates a module with the current Crystal version
Will display the Crystal version if any of the following criteria are met:
Current directory contains a `.cr` file
Current directory contains a `shard.yml` file
Creates a module with the current Crystal version Will display the Crystal version if any of the following criteria are met : Current directory contains a ` . cr ` file Current directory contains a ` shard . yml ` file
pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
    let is_crystal_project = context
        .try_begin_scan()?
        .set_files(&["shard.yml"])
        .set_extensions(&["cr"])
        .is_match();
    if !is_crystal_project {
        return None;
    }
    let crystal_version = utils::exec_cmd("crystal", &["--version"])?.stdout;
    let mut module = context.new_module("crystal");
    let config: CrystalConfig = CrystalConfig::try_load(module.config);
    let parsed = StringFormatter::new(config.format).and_then(|formatter| {
        formatter
            .map_meta(|variable, _| match variable {
                "symbol" => Some(config.symbol),
                _ => None,
            })
            .map_style(|variable| match variable {
                "style" => Some(Ok(config.style)),
                _ => None,
            })
            .map(|variable| match variable {
                "version" => format_crystal_version(&crystal_version).map(Ok),
                _ => None,
            })
            .parse(None)
    });
    module.set_segments(match parsed {
        Ok(segments) => segments,
        Err(error) => {
            log::warn!("Error in module `crystal`:\n{}", error);
            return None;
        }
    });
    Some(module)
}
pub fn module < ' a > ( context : & ' a Context ) -> Option < Module < ' a > > { let is_crystal_project = context . try_begin_scan ( ) ? . set_files ( & [ " " ] ) . set_extensions ( & [ " " ] ) . is_match ( ) ; if ! is_crystal_project { return None ; } let crystal_version = utils :: exec_cmd ( " " , & [ " " ] ) ? . stdout ; let mut module = context . new_module ( " " ) ; let config : CrystalConfig = CrystalConfig :: try_load ( module . config ) ; let parsed = StringFormatter :: new ( config . format ) . and_then ( | formatter | { formatter . map_meta ( | variable , _ | match variable { " " => Some ( config . symbol ) , _ => None , } ) . map_style ( | variable | match variable { " " => Some ( Ok ( config . style ) ) , _ => None , } ) . map ( | variable | match variable { " " => format_crystal_version ( & crystal_version ) . map ( Ok ) , _ => None , } ) . parse ( None ) } ) ; module . set_segments ( match parsed { Ok ( segments ) => segments , Err ( error ) => { log :: warn ! ( " \n " error ) ; return None ; } } ) ; Some ( module ) }
Creates a module with the current Crystal version
Will display the Crystal version if any of the following criteria are met:
 Current directory contains a `.cr` file
 Current directory contains a `shard.yml` file
Creates a module with the current Crystal version Will display the Crystal version if any of the following criteria are met : Current directory contains a ` . cr ` file Current directory contains a ` shard . yml ` file
context
&'a Context