index : smol-guess.git

ascending towards madness

author holly sparkles <sparkles@holly.sh> 2024-01-07 14:21:33.0 +00:00:00
committer holly sparkles <sparkles@holly.sh> 2024-01-07 14:59:15.0 +00:00:00
commit
85503da5208ad91a6139094abe254ece42636a4d [patch]
tree
6850708c87ba1f77cd61c04e73454684dadf6a17
parent
81ce85ffddfe9c82f328d95a09f37f43c625495f
download
85503da5208ad91a6139094abe254ece42636a4d.tar.gz

refactor(lang): move language definitions to core



Diff

 src/lib.rs  | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 src/main.rs | 60 +---------------------------------------------
 2 files changed, 83 insertions(+), 58 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index f436c88..66520c7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -62,6 +62,87 @@ pub mod core {

            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);
        /// ```
        pub fn load_builtins(self) -> Self {
            self.insert(("Assembly", "asm"))
                .insert(("Batchfile", "bat"))
                .insert(("C", "c"))
                .insert(("C#", "cs"))
                .insert(("C++", "cpp"))
                .insert(("Clojure", "clj"))
                .insert(("CMake", "cmake"))
                .insert(("COBOL", "cbl"))
                .insert(("CoffeeScript", "coffee"))
                .insert(("CSS", "css"))
                .insert(("CSV", "csv"))
                .insert(("Dart", "dart"))
                .insert(("DM", "dm"))
                .insert(("Dockerfile", "dockerfile"))
                .insert(("Elixir", "ex"))
                .insert(("Erlang", "erl"))
                .insert(("Fortran", "f90"))
                .insert(("Go", "go"))
                .insert(("Groovy", "groovy"))
                .insert(("Haskell", "hs"))
                .insert(("HTML", "html"))
                .insert(("INI", "ini"))
                .insert(("Java", "java"))
                .insert(("JavaScript", "js"))
                .insert(("JSON", "json"))
                .insert(("Julia", "jl"))
                .insert(("Kotlin", "kt"))
                .insert(("Lisp", "lisp"))
                .insert(("Lua", "lua"))
                .insert(("Makefile", "makefile"))
                .insert(("Markdown", "md"))
                .insert(("Matlab", "matlab"))
                .insert(("Objective-C", "mm"))
                .insert(("OCaml", "ml"))
                .insert(("Pascal", "pas"))
                .insert(("Perl", "pm"))
                .insert(("PHP", "php"))
                .insert(("PowerShell", "ps1"))
                .insert(("Prolog", "prolog"))
                .insert(("Python", "py"))
                .insert(("R", "r"))
                .insert(("Ruby", "rb"))
                .insert(("Rust", "rs"))
                .insert(("Scala", "scala"))
                .insert(("Shell", "sh"))
                .insert(("SQL", "sql"))
                .insert(("Swift", "swift"))
                .insert(("TeX", "tex"))
                .insert(("TOML", "toml"))
                .insert(("TypeScrpit", "ts"))
                .insert(("Verilog", "v"))
                .insert(("Visual Basic", "vba"))
                .insert(("XML", "xml"))
                .insert(("YAML", "yaml"))
        }
    }

    /// Represents a language definition, consisting of a name and its corresponding file extension.
diff --git a/src/main.rs b/src/main.rs
index 569a7a0..eb4fb61 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,64 +1,8 @@
use smolguess::core::LanguageDefinitions;

fn main() {
    // TODO: move to a library
    let languages = LanguageDefinitions::default()
        .insert(("Assembly", "asm"))
        .insert(("Batchfile", "bat"))
        .insert(("C", "c"))
        .insert(("C#", "cs"))
        .insert(("C++", "cpp"))
        .insert(("Clojure", "clj"))
        .insert(("CMake", "cmake"))
        .insert(("COBOL", "cbl"))
        .insert(("CoffeeScript", "coffee"))
        .insert(("CSS", "css"))
        .insert(("CSV", "csv"))
        .insert(("Dart", "dart"))
        .insert(("DM", "dm"))
        .insert(("Dockerfile", "dockerfile"))
        .insert(("Elixir", "ex"))
        .insert(("Erlang", "erl"))
        .insert(("Fortran", "f90"))
        .insert(("Go", "go"))
        .insert(("Groovy", "groovy"))
        .insert(("Haskell", "hs"))
        .insert(("HTML", "html"))
        .insert(("INI", "ini"))
        .insert(("Java", "java"))
        .insert(("JavaScript", "js"))
        .insert(("JSON", "json"))
        .insert(("Julia", "jl"))
        .insert(("Kotlin", "kt"))
        .insert(("Lisp", "lisp"))
        .insert(("Lua", "lua"))
        .insert(("Makefile", "makefile"))
        .insert(("Markdown", "md"))
        .insert(("Matlab", "matlab"))
        .insert(("Objective-C", "mm"))
        .insert(("OCaml", "ml"))
        .insert(("Pascal", "pas"))
        .insert(("Perl", "pm"))
        .insert(("PHP", "php"))
        .insert(("PowerShell", "ps1"))
        .insert(("Prolog", "prolog"))
        .insert(("Python", "py"))
        .insert(("R", "r"))
        .insert(("Ruby", "rb"))
        .insert(("Rust", "rs"))
        .insert(("Scala", "scala"))
        .insert(("Shell", "sh"))
        .insert(("SQL", "sql"))
        .insert(("Swift", "swift"))
        .insert(("TeX", "tex"))
        .insert(("TOML", "toml"))
        .insert(("TypeScrpit", "ts"))
        .insert(("Verilog", "v"))
        .insert(("Visual Basic", "vba"))
        .insert(("XML", "xml"))
        .insert(("YAML", "yaml"));

    languages
    LanguageDefinitions::default()
        .load_builtins()
        .items
        .iter()
        .for_each(|def| println!("{} has the extension {}", def.name, def.extension))