class-metrix 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.vscode/README.md +103 -47
  3. data/.vscode/extensions.json +10 -7
  4. data/.vscode/keybindings.json +26 -0
  5. data/.vscode/rbs.code-snippets +61 -0
  6. data/.vscode/settings.json +25 -1
  7. data/.vscode/tasks.json +141 -0
  8. data/CHANGELOG.md +2 -0
  9. data/README.md +46 -16
  10. data/Steepfile +26 -0
  11. data/docs/CHANGELOG_EVOLUTION_EXAMPLE.md +95 -0
  12. data/lib/class_metrix/extractor.rb +1 -1
  13. data/lib/class_metrix/extractors/constants_extractor.rb +1 -1
  14. data/lib/class_metrix/extractors/methods_extractor.rb +1 -1
  15. data/lib/class_metrix/extractors/multi_type_extractor.rb +2 -2
  16. data/lib/class_metrix/formatters/base/base_formatter.rb +3 -3
  17. data/lib/class_metrix/formatters/components/footer_component.rb +3 -3
  18. data/lib/class_metrix/formatters/components/generic_header_component.rb +2 -2
  19. data/lib/class_metrix/formatters/components/header_component.rb +4 -4
  20. data/lib/class_metrix/formatters/components/missing_behaviors_component.rb +7 -7
  21. data/lib/class_metrix/formatters/components/table_component/row_processor.rb +8 -5
  22. data/lib/class_metrix/formatters/components/table_component/table_data_extractor.rb +4 -1
  23. data/lib/class_metrix/formatters/components/table_component/table_renderer.rb +2 -2
  24. data/lib/class_metrix/formatters/components/table_component.rb +5 -4
  25. data/lib/class_metrix/formatters/csv_formatter.rb +3 -3
  26. data/lib/class_metrix/formatters/markdown_formatter.rb +3 -4
  27. data/lib/class_metrix/formatters/shared/markdown_table_builder.rb +2 -2
  28. data/lib/class_metrix/formatters/shared/table_builder.rb +8 -6
  29. data/lib/class_metrix/version.rb +1 -1
  30. data/sig/class_metrix.rbs +8 -0
  31. data/sig/extractor.rbs +54 -0
  32. data/sig/extractors.rbs +84 -0
  33. data/sig/formatters_base.rbs +59 -0
  34. data/sig/formatters_components.rbs +133 -0
  35. data/sig/formatters_main.rbs +20 -0
  36. data/sig/formatters_shared.rbs +102 -0
  37. data/sig/manifest.yaml +32 -0
  38. data/sig/utils.rbs +57 -0
  39. data/sig/value_processor.rbs +11 -0
  40. data/sig/version.rbs +4 -0
  41. metadata +44 -2
  42. data/sig/class/metrix.rbs +0 -6
data/sig/utils.rbs ADDED
@@ -0,0 +1,57 @@
1
+ # Utility classes
2
+ module ClassMetrix
3
+ module Utils
4
+ class ClassResolver
5
+ def self.normalize_classes: (Array[Class | String] classes) -> Array[Class]
6
+ def self.resolve_class: (Class | String klass) -> Class
7
+ def self.string_to_class: (String class_name) -> Class
8
+ end
9
+
10
+ class DebugLogger
11
+ LEVELS: Hash[Symbol, Integer]
12
+
13
+ @component_name: String
14
+ @debug_mode: bool
15
+ @level: Integer
16
+
17
+ def initialize: (String component_name, bool debug_mode, Symbol debug_level) -> void
18
+ def log: (String message, ?Symbol level) -> void
19
+ def enabled?: () -> bool
20
+ def log_safe_operation: (String operation_name, ?Symbol level) { () -> untyped } -> untyped
21
+ def log_summary: (String operation, Array[untyped] items) { (untyped item, Integer index) -> void } -> void
22
+ def log_decision: (String decision, String reason, ?Symbol level) -> void
23
+ def log_anomaly: (String description) -> void
24
+ def safe_inspect: (untyped value) -> String
25
+ def safe_class: (untyped value) -> String
26
+ def safe_keys: (untyped value) -> String
27
+ def safe_length: (untyped value) -> String
28
+ def safe_truncate: (String str, Integer max_length) -> String
29
+ def safe_to_s: (untyped value) -> String
30
+ def log_value_details: (untyped value, ?Integer? index, ?Symbol level) -> void
31
+ def log_hash_detection: (untyped value, ?Integer? index, ?Symbol level) -> void
32
+ def log_hash_detection_summary: (Array[untyped] values) -> void
33
+ def set_level: (Symbol level) -> void
34
+
35
+ private
36
+
37
+ def should_log?: (Symbol level) -> bool
38
+ def format_message: (String message) -> String
39
+ end
40
+ end
41
+ end
42
+
43
+ # Root level classes for processors
44
+ class ValueProcessor
45
+ def self.process: (untyped value, ?expand_hashes: bool) -> untyped
46
+ def self.format_hash: (Hash[untyped, untyped] hash) -> String
47
+ def self.expand_hash: (Hash[untyped, untyped] hash) -> Array[Hash[Symbol, untyped]]
48
+ def self.handle_extraction_error: (Exception error) -> String
49
+ def self.missing_constant: () -> String
50
+ def self.missing_method: () -> String
51
+ end
52
+
53
+ # Root level utility class references
54
+ module ClassMetrix
55
+ class ClassResolver < Utils::ClassResolver
56
+ end
57
+ end
@@ -0,0 +1,11 @@
1
+ # Legacy value processor for backward compatibility
2
+ module ClassMetrix
3
+ class ValueProcessor
4
+ def self.process: (untyped value, ?expand_hashes: bool) -> (String | Array[Hash[Symbol, untyped]])
5
+ def self.format_hash: (Hash[untyped, untyped] hash) -> String
6
+ def self.expand_hash: (Hash[untyped, untyped] hash) -> Array[Hash[Symbol, untyped]]
7
+ def self.handle_extraction_error: (Exception error) -> String
8
+ def self.missing_constant: () -> String
9
+ def self.missing_method: () -> String
10
+ end
11
+ end
data/sig/version.rbs ADDED
@@ -0,0 +1,4 @@
1
+ # Version information
2
+ module ClassMetrix
3
+ VERSION: String
4
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: class-metrix
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huy Nguyen
@@ -10,6 +10,20 @@ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2025-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rbs
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: steep
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
41
69
  description: ClassMetrix allows you to easily extract and compare constants and class
42
70
  methods across multiple Ruby classes, generating clean markdown tables for analysis
43
71
  and documentation.
@@ -53,7 +81,9 @@ files:
53
81
  - ".tool-versions"
54
82
  - ".vscode/README.md"
55
83
  - ".vscode/extensions.json"
84
+ - ".vscode/keybindings.json"
56
85
  - ".vscode/launch.json"
86
+ - ".vscode/rbs.code-snippets"
57
87
  - ".vscode/settings.json"
58
88
  - ".vscode/tasks.json"
59
89
  - CHANGELOG.md
@@ -61,7 +91,9 @@ files:
61
91
  - README.md
62
92
  - RELEASE_GUIDE.md
63
93
  - Rakefile
94
+ - Steepfile
64
95
  - docs/ARCHITECTURE.md
96
+ - docs/CHANGELOG_EVOLUTION_EXAMPLE.md
65
97
  - examples/README.md
66
98
  - examples/basic_usage.rb
67
99
  - examples/debug_levels_demo.rb
@@ -93,7 +125,17 @@ files:
93
125
  - lib/class_metrix/utils/class_resolver.rb
94
126
  - lib/class_metrix/utils/debug_logger.rb
95
127
  - lib/class_metrix/version.rb
96
- - sig/class/metrix.rbs
128
+ - sig/class_metrix.rbs
129
+ - sig/extractor.rbs
130
+ - sig/extractors.rbs
131
+ - sig/formatters_base.rbs
132
+ - sig/formatters_components.rbs
133
+ - sig/formatters_main.rbs
134
+ - sig/formatters_shared.rbs
135
+ - sig/manifest.yaml
136
+ - sig/utils.rbs
137
+ - sig/value_processor.rbs
138
+ - sig/version.rbs
97
139
  homepage: https://github.com/patrick204nqh/class-metrix
98
140
  licenses:
99
141
  - MIT
data/sig/class/metrix.rbs DELETED
@@ -1,6 +0,0 @@
1
- module Class
2
- module Metrix
3
- VERSION: String
4
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
- end
6
- end