diff --git a/src/enums.rs b/src/enums.rs deleted file mode 100644 index 46810afb8..000000000 --- a/src/enums.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::fmt; - -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum NodeKind { - Unknown, - Function, - Class, - Struct, - Trait, - Impl, - Unit, - Namespace, -} - -impl fmt::Display for NodeKind { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let s = match self { - NodeKind::Unknown => "unknown", - NodeKind::Function => "function", - NodeKind::Class => "class", - NodeKind::Struct => "struct", - NodeKind::Trait => "trait", - NodeKind::Impl => "impl", - NodeKind::Unit => "unit", - NodeKind::Namespace => "namespace", - }; - write!(f, "{}", s) - } -} diff --git a/src/error.rs b/src/error.rs deleted file mode 100644 index 77f59a6b4..000000000 --- a/src/error.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub enum TSError { - Str(String), -} diff --git a/src/getter.rs b/src/getter.rs index 187724d48..2e77f4a78 100644 --- a/src/getter.rs +++ b/src/getter.rs @@ -1,6 +1,6 @@ use tree_sitter::Node; -use crate::enums::NodeKind; +use crate::spaces::SpaceKind; use crate::traits::Search; use crate::*; @@ -20,25 +20,25 @@ pub trait Getter { } } - fn get_kind(_node: &Node) -> NodeKind { - NodeKind::Unknown + fn get_space_kind(_node: &Node) -> SpaceKind { + SpaceKind::Unknown } } impl Getter for PythonCode { - fn get_kind(node: &Node) -> NodeKind { + fn get_space_kind(node: &Node) -> SpaceKind { let typ = node.kind_id(); match typ.into() { - Python::FunctionDefinition => NodeKind::Function, - Python::ClassDefinition => NodeKind::Class, - Python::Module => NodeKind::Unit, - _ => NodeKind::Unknown, + Python::FunctionDefinition => SpaceKind::Function, + Python::ClassDefinition => SpaceKind::Class, + Python::Module => SpaceKind::Unit, + _ => SpaceKind::Unknown, } } } impl Getter for MozjsCode { - fn get_kind(node: &Node) -> NodeKind { + fn get_space_kind(node: &Node) -> SpaceKind { use Mozjs::*; let typ = node.kind_id(); @@ -48,10 +48,10 @@ impl Getter for MozjsCode { | GeneratorFunction | FunctionDeclaration | GeneratorFunctionDeclaration - | ArrowFunction => NodeKind::Function, - Class | ClassDeclaration => NodeKind::Class, - Program => NodeKind::Unit, - _ => NodeKind::Unknown, + | ArrowFunction => SpaceKind::Function, + Class | ClassDeclaration => SpaceKind::Class, + Program => SpaceKind::Unit, + _ => SpaceKind::Unknown, } } @@ -85,7 +85,7 @@ impl Getter for MozjsCode { } impl Getter for JavascriptCode { - fn get_kind(node: &Node) -> NodeKind { + fn get_space_kind(node: &Node) -> SpaceKind { use Javascript::*; let typ = node.kind_id(); @@ -95,10 +95,10 @@ impl Getter for JavascriptCode { | GeneratorFunction | FunctionDeclaration | GeneratorFunctionDeclaration - | ArrowFunction => NodeKind::Function, - Class | ClassDeclaration => NodeKind::Class, - Program => NodeKind::Unit, - _ => NodeKind::Unknown, + | ArrowFunction => SpaceKind::Function, + Class | ClassDeclaration => SpaceKind::Class, + Program => SpaceKind::Unit, + _ => SpaceKind::Unknown, } } @@ -132,7 +132,7 @@ impl Getter for JavascriptCode { } impl Getter for TypescriptCode { - fn get_kind(node: &Node) -> NodeKind { + fn get_space_kind(node: &Node) -> SpaceKind { use Typescript::*; let typ = node.kind_id(); @@ -142,10 +142,10 @@ impl Getter for TypescriptCode { | GeneratorFunction | FunctionDeclaration | GeneratorFunctionDeclaration - | ArrowFunction => NodeKind::Function, - Class | ClassDeclaration => NodeKind::Class, - Program => NodeKind::Unit, - _ => NodeKind::Unknown, + | ArrowFunction => SpaceKind::Function, + Class | ClassDeclaration => SpaceKind::Class, + Program => SpaceKind::Unit, + _ => SpaceKind::Unknown, } } @@ -179,7 +179,7 @@ impl Getter for TypescriptCode { } impl Getter for TsxCode { - fn get_kind(node: &Node) -> NodeKind { + fn get_space_kind(node: &Node) -> SpaceKind { use Tsx::*; let typ = node.kind_id(); @@ -189,10 +189,10 @@ impl Getter for TsxCode { | GeneratorFunction | FunctionDeclaration | GeneratorFunctionDeclaration - | ArrowFunction => NodeKind::Function, - Class | ClassDeclaration => NodeKind::Class, - Program => NodeKind::Unit, - _ => NodeKind::Unknown, + | ArrowFunction => SpaceKind::Function, + Class | ClassDeclaration => SpaceKind::Class, + Program => SpaceKind::Unit, + _ => SpaceKind::Unknown, } } @@ -226,16 +226,16 @@ impl Getter for TsxCode { } impl Getter for RustCode { - fn get_kind(node: &Node) -> NodeKind { + fn get_space_kind(node: &Node) -> SpaceKind { use Rust::*; let typ = node.kind_id(); match typ.into() { - FunctionItem | ClosureExpression => NodeKind::Function, - TraitItem => NodeKind::Trait, - ImplItem => NodeKind::Impl, - SourceFile => NodeKind::Unit, - _ => NodeKind::Unknown, + FunctionItem | ClosureExpression => SpaceKind::Function, + TraitItem => SpaceKind::Trait, + ImplItem => SpaceKind::Impl, + SourceFile => SpaceKind::Unit, + _ => SpaceKind::Unknown, } } } @@ -285,17 +285,17 @@ impl Getter for CppCode { None } - fn get_kind(node: &Node) -> NodeKind { + fn get_space_kind(node: &Node) -> SpaceKind { use Cpp::*; let typ = node.kind_id(); match typ.into() { - FunctionDefinition | FunctionDefinition2 | FunctionDefinition3 => NodeKind::Function, - StructSpecifier => NodeKind::Struct, - ClassSpecifier => NodeKind::Class, - NamespaceDefinition => NodeKind::Namespace, - TranslationUnit => NodeKind::Unit, - _ => NodeKind::Unknown, + FunctionDefinition | FunctionDefinition2 | FunctionDefinition3 => SpaceKind::Function, + StructSpecifier => SpaceKind::Struct, + ClassSpecifier => SpaceKind::Class, + NamespaceDefinition => SpaceKind::Namespace, + TranslationUnit => SpaceKind::Unit, + _ => SpaceKind::Unknown, } } } diff --git a/src/languages.rs b/src/langs.rs similarity index 100% rename from src/languages.rs rename to src/langs.rs diff --git a/src/rca_languages/language_ccomment.rs b/src/languages/language_ccomment.rs similarity index 100% rename from src/rca_languages/language_ccomment.rs rename to src/languages/language_ccomment.rs diff --git a/src/rca_languages/language_cpp.rs b/src/languages/language_cpp.rs similarity index 100% rename from src/rca_languages/language_cpp.rs rename to src/languages/language_cpp.rs diff --git a/src/rca_languages/language_csharp.rs b/src/languages/language_csharp.rs similarity index 100% rename from src/rca_languages/language_csharp.rs rename to src/languages/language_csharp.rs diff --git a/src/rca_languages/language_css.rs b/src/languages/language_css.rs similarity index 100% rename from src/rca_languages/language_css.rs rename to src/languages/language_css.rs diff --git a/src/rca_languages/language_go.rs b/src/languages/language_go.rs similarity index 100% rename from src/rca_languages/language_go.rs rename to src/languages/language_go.rs diff --git a/src/rca_languages/language_html.rs b/src/languages/language_html.rs similarity index 100% rename from src/rca_languages/language_html.rs rename to src/languages/language_html.rs diff --git a/src/rca_languages/language_java.rs b/src/languages/language_java.rs similarity index 100% rename from src/rca_languages/language_java.rs rename to src/languages/language_java.rs diff --git a/src/rca_languages/language_javascript.rs b/src/languages/language_javascript.rs similarity index 100% rename from src/rca_languages/language_javascript.rs rename to src/languages/language_javascript.rs diff --git a/src/rca_languages/language_mozjs.rs b/src/languages/language_mozjs.rs similarity index 100% rename from src/rca_languages/language_mozjs.rs rename to src/languages/language_mozjs.rs diff --git a/src/rca_languages/language_preproc.rs b/src/languages/language_preproc.rs similarity index 100% rename from src/rca_languages/language_preproc.rs rename to src/languages/language_preproc.rs diff --git a/src/rca_languages/language_python.rs b/src/languages/language_python.rs similarity index 100% rename from src/rca_languages/language_python.rs rename to src/languages/language_python.rs diff --git a/src/rca_languages/language_rust.rs b/src/languages/language_rust.rs similarity index 100% rename from src/rca_languages/language_rust.rs rename to src/languages/language_rust.rs diff --git a/src/rca_languages/language_tsx.rs b/src/languages/language_tsx.rs similarity index 100% rename from src/rca_languages/language_tsx.rs rename to src/languages/language_tsx.rs diff --git a/src/rca_languages/language_typescript.rs b/src/languages/language_typescript.rs similarity index 100% rename from src/rca_languages/language_typescript.rs rename to src/languages/language_typescript.rs diff --git a/src/rca_languages/mod.rs b/src/languages/mod.rs similarity index 100% rename from src/rca_languages/mod.rs rename to src/languages/mod.rs diff --git a/src/lib.rs b/src/lib.rs index e68b748b7..8ad358e5a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,5 @@ #![recursion_limit = "128"] #![allow(clippy::implicit_hasher)] -//#![warn(unused_extern_crates)] #[macro_use] extern crate lazy_static; @@ -13,17 +12,17 @@ extern crate serde_json; mod macros; pub use crate::macros::*; -pub mod enums; -pub use crate::enums::*; - pub mod node; pub use crate::node::*; -mod rca_metrics; -pub(crate) use rca_metrics::*; +mod metrics; +pub(crate) use metrics::*; + +mod languages; +pub(crate) use languages::*; -mod rca_languages; -pub(crate) use rca_languages::*; +mod output; +pub use output::*; pub mod web; @@ -31,8 +30,8 @@ pub mod web; pub mod asttools; pub use crate::asttools::*; -pub mod metrics; -pub use crate::metrics::*; +pub mod spaces; +pub use crate::spaces::*; pub mod getter; pub use crate::getter::*; @@ -51,8 +50,8 @@ pub mod c_macro; pub mod preproc; pub use crate::preproc::*; -mod languages; -pub use crate::languages::*; +mod langs; +pub use crate::langs::*; mod tools; pub use crate::tools::*; @@ -68,6 +67,3 @@ pub use crate::checker::*; mod comment_rm; pub use crate::comment_rm::*; - -mod dump; -pub use crate::dump::*; diff --git a/src/rca_metrics/cyclomatic.rs b/src/metrics/cyclomatic.rs similarity index 100% rename from src/rca_metrics/cyclomatic.rs rename to src/metrics/cyclomatic.rs diff --git a/src/rca_metrics/exit.rs b/src/metrics/exit.rs similarity index 100% rename from src/rca_metrics/exit.rs rename to src/metrics/exit.rs diff --git a/src/rca_metrics/fn_args.rs b/src/metrics/fn_args.rs similarity index 100% rename from src/rca_metrics/fn_args.rs rename to src/metrics/fn_args.rs diff --git a/src/rca_metrics/halstead.rs b/src/metrics/halstead.rs similarity index 100% rename from src/rca_metrics/halstead.rs rename to src/metrics/halstead.rs diff --git a/src/rca_metrics/loc.rs b/src/metrics/loc.rs similarity index 100% rename from src/rca_metrics/loc.rs rename to src/metrics/loc.rs diff --git a/src/rca_metrics/mi.rs b/src/metrics/mi.rs similarity index 100% rename from src/rca_metrics/mi.rs rename to src/metrics/mi.rs diff --git a/src/rca_metrics/mod.rs b/src/metrics/mod.rs similarity index 100% rename from src/rca_metrics/mod.rs rename to src/metrics/mod.rs diff --git a/src/rca_metrics/nom.rs b/src/metrics/nom.rs similarity index 100% rename from src/rca_metrics/nom.rs rename to src/metrics/nom.rs diff --git a/src/dump.rs b/src/output/dump.rs similarity index 100% rename from src/dump.rs rename to src/output/dump.rs diff --git a/src/output/mod.rs b/src/output/mod.rs new file mode 100644 index 000000000..0df2b897f --- /dev/null +++ b/src/output/mod.rs @@ -0,0 +1,2 @@ +pub mod dump; +pub use dump::*; diff --git a/src/preproc.rs b/src/preproc.rs index cd6f5e188..bb84eff83 100644 --- a/src/preproc.rs +++ b/src/preproc.rs @@ -5,8 +5,8 @@ use std::collections::{hash_map, HashMap, HashSet}; use std::path::PathBuf; use std::sync::{Arc, Mutex}; -use crate::languages::*; -use crate::rca_languages::language_preproc::*; +use crate::langs::*; +use crate::languages::language_preproc::*; use crate::tools::*; use crate::traits::*; diff --git a/src/metrics.rs b/src/spaces.rs similarity index 94% rename from src/metrics.rs rename to src/spaces.rs index 40edadc9b..d88e90432 100644 --- a/src/metrics.rs +++ b/src/spaces.rs @@ -9,7 +9,6 @@ use tree_sitter::Node; use crate::checker::Checker; use crate::cyclomatic::{self, Cyclomatic}; -use crate::enums::NodeKind; use crate::exit::{self, Exit}; use crate::fn_args::{self, NArgs}; use crate::getter::Getter; @@ -20,6 +19,34 @@ use crate::nom::{self, Nom}; use crate::tools::write_file; use crate::traits::*; +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum SpaceKind { + Unknown, + Function, + Class, + Struct, + Trait, + Impl, + Unit, + Namespace, +} + +impl fmt::Display for SpaceKind { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let s = match self { + SpaceKind::Unknown => "unknown", + SpaceKind::Function => "function", + SpaceKind::Class => "class", + SpaceKind::Struct => "struct", + SpaceKind::Trait => "trait", + SpaceKind::Impl => "impl", + SpaceKind::Unit => "unit", + SpaceKind::Namespace => "namespace", + }; + write!(f, "{}", s) + } +} + #[derive(Debug)] pub struct CodeMetrics<'a> { pub cyclomatic: cyclomatic::Stats, @@ -91,7 +118,7 @@ pub struct FuncSpace<'a> { pub name: Option<&'a str>, pub spaces: Vec>, pub metrics: CodeMetrics<'a>, - pub kind: NodeKind, + pub kind: SpaceKind, pub start_line: usize, pub end_line: usize, } @@ -113,9 +140,9 @@ impl<'a> Serialize for FuncSpace<'a> { } impl<'a> FuncSpace<'a> { - fn new(node: &Node<'a>, code: &'a [u8], kind: NodeKind) -> Self { + fn new(node: &Node<'a>, code: &'a [u8], kind: SpaceKind) -> Self { let (start_position, end_position) = match kind { - NodeKind::Unit => { + SpaceKind::Unit => { if node.child_count() == 0 { (0, 0) } else { @@ -439,10 +466,10 @@ pub fn metrics<'a, T: TSParserTrait>(parser: &'a T, path: &'a PathBuf) -> Option last_level = level; } - let kind = T::Getter::get_kind(&node); + let kind = T::Getter::get_space_kind(&node); let func_space = T::Checker::is_func(&node) || T::Checker::is_func_space(&node); - let unit = kind == NodeKind::Unit; + let unit = kind == SpaceKind::Unit; let new_level = if func_space { space_stack.push(FuncSpace::new::(&node, code, kind)); diff --git a/src/tools.rs b/src/tools.rs index 90e737b24..85b623d49 100644 --- a/src/tools.rs +++ b/src/tools.rs @@ -1,5 +1,5 @@ -use crate::languages::fake; -use crate::languages::*; +use crate::langs::fake; +use crate::langs::*; use regex::bytes::Regex; use std::cmp::Ordering; use std::collections::HashMap; diff --git a/src/traits.rs b/src/traits.rs index 7ad7ef641..1f436c239 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -8,7 +8,7 @@ use crate::exit::Exit; use crate::fn_args::NArgs; use crate::getter::Getter; use crate::halstead::Halstead; -use crate::languages::*; +use crate::langs::*; use crate::loc::Loc; use crate::mi::Mi; use crate::nom::Nom; diff --git a/src/ts_parser.rs b/src/ts_parser.rs index d00771ae7..eb5657fbd 100644 --- a/src/ts_parser.rs +++ b/src/ts_parser.rs @@ -6,7 +6,7 @@ use tree_sitter::{Node, Parser, Tree}; use crate::c_macro; use crate::checker::*; use crate::getter::Getter; -use crate::languages::*; +use crate::langs::*; use crate::preproc::{get_macros, PreprocResults}; use crate::traits::*; use crate::web::alterator::Alterator; diff --git a/src/web/metrics.rs b/src/web/metrics.rs index 026ecc6b5..7a8e94c43 100644 --- a/src/web/metrics.rs +++ b/src/web/metrics.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use serde_json::{self, Value}; use std::path::PathBuf; -use crate::metrics::{metrics, FuncSpace}; +use crate::spaces::{metrics, FuncSpace}; use crate::traits::{Callback, TSParserTrait}; #[derive(Debug, Deserialize, Serialize)] diff --git a/src/web/server.rs b/src/web/server.rs index e4632a1bf..1f1468e56 100644 --- a/src/web/server.rs +++ b/src/web/server.rs @@ -12,7 +12,7 @@ use super::ast::{AstCallback, AstCfg, AstPayload}; use super::comment::{WebCommentCallback, WebCommentCfg, WebCommentInfo, WebCommentPayload}; use super::function::{WebFunctionCallback, WebFunctionCfg, WebFunctionInfo, WebFunctionPayload}; use super::metrics::{WebMetricsCallback, WebMetricsCfg, WebMetricsInfo, WebMetricsPayload}; -use crate::languages::action; +use crate::langs::action; use crate::tools::guess_language; use crate::LANG;