| author | holly sparkles <sparkles@holly.sh> | 2024-01-07 17:59:00.0 +00:00:00 |
|---|---|---|
| committer | holly sparkles <sparkles@holly.sh> | 2024-01-07 17:59:00.0 +00:00:00 |
| commit | 73fe7d9c76741bdaa627045f6e02e785066ef384 [patch] |
|
| tree | 17b9b9fdf303d5d6b1db18b8e5f3d6b427074f2f |
|
| parent | bc3265c2477a4f29906f15befb9d5a1cb5313a20 |
|
| download | 73fe7d9c76741bdaa627045f6e02e785066ef384.tar.gz |
|
refactor(lang): restructure core library files
Diff
src/core/mod.rs | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/lib.rs | 243 +--------------------------------------------------------- 2 files changed, 241 insertions(+), 242 deletions(-) diff --git a/src/core/mod.rs b/src/core/mod.rs new file mode 100644 index 0000000..c233f47 /// A collection of programming language definitions. /// /// `LanguageDefinitions` is used to manage a list of programming language definitions, which consist /// of pairs of a language name and its corresponding file extension. /// /// # Examples /// /// ``` /// use smolguess::core::{LanguageDefinition, LanguageDefinitions}; /// /// let languages = LanguageDefinitions { /// items: vec![ /// LanguageDefinition { name: "Rust".to_string(), extension: "rs".to_string() }, /// LanguageDefinition::new("Markdown", "md"), /// ], /// }; /// /// assert_eq!(languages.items.len(), 2); /// assert_eq!((languages.items[0].name.as_str(), languages.items[0].extension.as_str()), ("Rust", "rs")); /// assert_eq!((languages.items[1].name.as_str(), languages.items[1].extension.as_str()), ("Markdown", "md")); /// ``` pub items: , } /// Insert a language definition into the collection. /// /// This method takes a generic parameter `T` that can be converted into a `LanguageDefinition`. /// The language definition is then added to the collection, and the modified collection is /// returned. /// /// # Parameters /// /// - `self`: The current `LanguageDefinitions` instance. /// - `definition`: The language definition to insert into the collection. /// /// # Returns /// /// A new `LanguageDefinitions` instance with the added language definition. /// /// # Examples /// /// ``` /// use smolguess::core::{LanguageDefinition, LanguageDefinitions}; /// /// let languages = LanguageDefinitions::default() /// .insert(("Rust", "rs")) /// .insert(LanguageDefinition::new("Markdown", "md")); /// /// assert_eq!(languages.items.len(), 2); /// assert_eq!((languages.items[0].name.as_str(), languages.items[0].extension.as_str()), ("Rust", "rs")); /// assert_eq!((languages.items[1].name.as_str(), languages.items[1].extension.as_str()), ("Markdown", "md")); /// ``` where T: , self.items.push; self } /// Loads a set of built-in language definitions into the collection. /// /// The `load_builtins` function is used to add predefined language definitions to the /// `LanguageDefinitions` collection. This can be convenient for initializing the collection /// with common languages and extensions. /// /// # Parameters /// /// - `self`: The current `LanguageDefinitions` instance. /// /// # Returns /// /// A new `LanguageDefinitions` instance with the built-in language definitions added. /// /// # Examples /// /// ``` /// use smolguess::core::{LanguageDefinition, LanguageDefinitions}; /// /// // Load built-in language definitions /// let languages = LanguageDefinitions::default().load_builtins(); /// /// assert_eq!(languages.items.iter().any(|lang| lang.name.eq("Rust")), true); /// ``` self.insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert } } /// Represents a language definition, consisting of a name and its corresponding file extension. /// /// # Fields /// /// - `name`: The name of the programming language. /// - `extension`: The file extension associated with the programming language. /// /// # Examples /// /// Creating a new `LanguageDefinition` instance using the `new` method: /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition::new("Rust", "rs"); /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` /// /// Creating a new `LanguageDefinition` instance using struct initialization: /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition { name: "Rust".to_string(), extension: "rs".to_string() }; /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` pub name: String, pub extension: String, } /// Creates a new `LanguageDefinition` instance with the specified name and file extension. /// /// # Parameters /// /// - `name`: The name of the programming language. /// - `extension`: The file extension associated with the programming language. /// /// # Returns /// /// A new `LanguageDefinition` instance. /// /// # Examples /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition::new("Rust", "rs"); /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` LanguageDefinition name: name.to_string, extension: extension.to_string, } } } where T: , /// Converts a tuple of two values into a `LanguageDefinition` instance. /// /// The first value in the tuple is used as the name, and the second value is used as the extension. /// /// # Parameters /// /// - `value`: A tuple containing the name and extension values. /// /// # Returns /// /// A new `LanguageDefinition` instance. /// /// # Examples /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition::from(("Rust", "rs")); /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` new } } diff --git a/src/lib.rs b/src/lib.rs index 3eb9781..5a7ca06 100644 /// A collection of programming language definitions. /// /// `LanguageDefinitions` is used to manage a list of programming language definitions, which consist /// of pairs of a language name and its corresponding file extension. /// /// # Examples /// /// ``` /// use smolguess::core::{LanguageDefinition, LanguageDefinitions}; /// /// let languages = LanguageDefinitions { /// items: vec![ /// LanguageDefinition { name: "Rust".to_string(), extension: "rs".to_string() }, /// LanguageDefinition::new("Markdown", "md"), /// ], /// }; /// /// assert_eq!(languages.items.len(), 2); /// assert_eq!((languages.items[0].name.as_str(), languages.items[0].extension.as_str()), ("Rust", "rs")); /// assert_eq!((languages.items[1].name.as_str(), languages.items[1].extension.as_str()), ("Markdown", "md")); /// ``` pub items: , } /// Insert a language definition into the collection. /// /// This method takes a generic parameter `T` that can be converted into a `LanguageDefinition`. /// The language definition is then added to the collection, and the modified collection is /// returned. /// /// # Parameters /// /// - `self`: The current `LanguageDefinitions` instance. /// - `definition`: The language definition to insert into the collection. /// /// # Returns /// /// A new `LanguageDefinitions` instance with the added language definition. /// /// # Examples /// /// ``` /// use smolguess::core::{LanguageDefinition, LanguageDefinitions}; /// /// let languages = LanguageDefinitions::default() /// .insert(("Rust", "rs")) /// .insert(LanguageDefinition::new("Markdown", "md")); /// /// assert_eq!(languages.items.len(), 2); /// assert_eq!((languages.items[0].name.as_str(), languages.items[0].extension.as_str()), ("Rust", "rs")); /// assert_eq!((languages.items[1].name.as_str(), languages.items[1].extension.as_str()), ("Markdown", "md")); /// ``` where T: , self.items.push; self } /// Loads a set of built-in language definitions into the collection. /// /// The `load_builtins` function is used to add predefined language definitions to the /// `LanguageDefinitions` collection. This can be convenient for initializing the collection /// with common languages and extensions. /// /// # Parameters /// /// - `self`: The current `LanguageDefinitions` instance. /// /// # Returns /// /// A new `LanguageDefinitions` instance with the built-in language definitions added. /// /// # Examples /// /// ``` /// use smolguess::core::{LanguageDefinition, LanguageDefinitions}; /// /// // Load built-in language definitions /// let languages = LanguageDefinitions::default().load_builtins(); /// /// assert_eq!(languages.items.iter().any(|lang| lang.name.eq("Rust")), true); /// ``` self.insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert .insert } } /// Represents a language definition, consisting of a name and its corresponding file extension. /// /// # Fields /// /// - `name`: The name of the programming language. /// - `extension`: The file extension associated with the programming language. /// /// # Examples /// /// Creating a new `LanguageDefinition` instance using the `new` method: /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition::new("Rust", "rs"); /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` /// /// Creating a new `LanguageDefinition` instance using struct initialization: /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition { name: "Rust".to_string(), extension: "rs".to_string() }; /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` pub name: String, pub extension: String, } /// Creates a new `LanguageDefinition` instance with the specified name and file extension. /// /// # Parameters /// /// - `name`: The name of the programming language. /// - `extension`: The file extension associated with the programming language. /// /// # Returns /// /// A new `LanguageDefinition` instance. /// /// # Examples /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition::new("Rust", "rs"); /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` LanguageDefinition name: name.to_string, extension: extension.to_string, } } } where T: , /// Converts a tuple of two values into a `LanguageDefinition` instance. /// /// The first value in the tuple is used as the name, and the second value is used as the extension. /// /// # Parameters /// /// - `value`: A tuple containing the name and extension values. /// /// # Returns /// /// A new `LanguageDefinition` instance. /// /// # Examples /// /// ``` /// use smolguess::core::LanguageDefinition; /// /// let definition = LanguageDefinition::from(("Rust", "rs")); /// /// assert_eq!((definition.name.as_str(), definition.extension.as_str()), ("Rust", "rs")); /// ``` new } } }