willbe/entity/
workspace_md_extension.rs

1/// Define a private namespace for all its items.
2#[ allow( clippy::std_instead_of_alloc, clippy::std_instead_of_core ) ]
3mod private
4{
5  #[ allow( clippy::wildcard_imports ) ]
6  use crate::*;
7
8  /// Md's extension for workspace
9  pub trait WorkspaceMdExtension
10  {
11    /// Return discord url
12    fn discord_url( &self ) -> Option< String >;
13
14    /// Return the master branch
15    fn master_branch( &self ) -> Option< String >;
16
17    /// Return the repository url
18    fn repository_url( &self ) -> Option< String >;
19
20    /// Return the `workspace_name`
21    fn workspace_name( &self ) -> Option< String >;
22  }
23
24  impl WorkspaceMdExtension for Workspace
25  {
26    fn discord_url( &self ) -> Option< String >
27    {
28      self
29      .metadata
30      .workspace_metadata[ "discord_url" ]
31      .as_str()
32      .map( std::string::ToString::to_string )
33    }
34
35    fn master_branch( &self ) -> Option< String >
36    {
37      self
38      .metadata
39      .workspace_metadata
40      .get( "master_branch" )
41      .and_then( | b | b.as_str() )
42      .map( std::string::ToString::to_string )
43    }
44
45    fn repository_url( &self ) -> Option< String >
46    {
47      self
48      .metadata
49      .workspace_metadata
50      .get( "repo_url" )
51      .and_then( | b | b.as_str() )
52      .map( std::string::ToString::to_string )
53    }
54
55    fn workspace_name( &self ) -> Option< String >
56    {
57      self
58      .metadata
59      .workspace_metadata
60      .get( "workspace_name" )
61      .and_then( | b | b.as_str() )
62      .map( std::string::ToString::to_string )
63    }
64  }
65
66}
67
68
69crate::mod_interface!
70{
71  own use WorkspaceMdExtension;
72}