Class: ClassMetrix::Extractor
- Inherits:
-
Object
- Object
- ClassMetrix::Extractor
- Defined in:
- lib/class_metrix/extractor.rb
Instance Method Summary collapse
- #debug(level = :basic) ⇒ Object
- #expand_hashes ⇒ Object
- #filter(pattern) ⇒ Object
- #from(classes) ⇒ Object
- #handle_errors ⇒ Object
- #hide_key_rows ⇒ Object
-
#hide_main_row ⇒ Object
Lower-level options (for advanced usage).
- #include_all ⇒ Object
-
#include_inherited ⇒ Object
Inheritance and module inclusion options.
- #include_modules ⇒ Object
-
#initialize(*types) ⇒ Extractor
constructor
A new instance of Extractor.
- #modules(module_list) ⇒ Object
- #show_expanded_details ⇒ Object
- #show_only_keys ⇒ Object
-
#show_only_main ⇒ Object
Hash expansion display options.
- #show_source ⇒ Object
- #to_csv(filename = nil, **options) ⇒ Object
- #to_markdown(filename = nil, **options) ⇒ Object
Constructor Details
#initialize(*types) ⇒ Extractor
Returns a new instance of Extractor.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/class_metrix/extractor.rb', line 13 def initialize(*types) @types = types.flatten @classes = [] @filters = [] @expand_hashes = false @handle_errors = false @modules = [] @include_inherited = false @include_modules = false @show_source = false @hide_main_row = false @hide_key_rows = true # Default: show only main rows @debug_mode = false @debug_level = :basic @logger = nil # Will be initialized when debug mode is enabled end |
Instance Method Details
#debug(level = :basic) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/class_metrix/extractor.rb', line 47 def debug(level = :basic) @debug_mode = true @debug_level = level @logger = Utils::DebugLogger.new("Extractor", @debug_mode, level) @logger&.log("Debug mode enabled (level: #{level})") self end |
#expand_hashes ⇒ Object
41 42 43 44 45 |
# File 'lib/class_metrix/extractor.rb', line 41 def @expand_hashes = true @logger&.log("Hash expansion enabled") self end |
#filter(pattern) ⇒ Object
36 37 38 39 |
# File 'lib/class_metrix/extractor.rb', line 36 def filter(pattern) @filters << pattern self end |
#from(classes) ⇒ Object
30 31 32 33 34 |
# File 'lib/class_metrix/extractor.rb', line 30 def from(classes) @classes = ClassResolver.normalize_classes(classes) @logger&.log("Normalized classes: #{@classes.map(&:name)}") self end |
#handle_errors ⇒ Object
55 56 57 58 |
# File 'lib/class_metrix/extractor.rb', line 55 def handle_errors @handle_errors = true self end |
#hide_key_rows ⇒ Object
112 113 114 115 |
# File 'lib/class_metrix/extractor.rb', line 112 def hide_key_rows @hide_key_rows = true self end |
#hide_main_row ⇒ Object
Lower-level options (for advanced usage)
107 108 109 110 |
# File 'lib/class_metrix/extractor.rb', line 107 def hide_main_row @hide_main_row = true self end |
#include_all ⇒ Object
81 82 83 84 85 |
# File 'lib/class_metrix/extractor.rb', line 81 def include_all @include_inherited = true @include_modules = true self end |
#include_inherited ⇒ Object
Inheritance and module inclusion options
66 67 68 69 |
# File 'lib/class_metrix/extractor.rb', line 66 def include_inherited @include_inherited = true self end |
#include_modules ⇒ Object
71 72 73 74 |
# File 'lib/class_metrix/extractor.rb', line 71 def include_modules @include_modules = true self end |
#modules(module_list) ⇒ Object
60 61 62 63 |
# File 'lib/class_metrix/extractor.rb', line 60 def modules(module_list) @modules = module_list self end |
#show_expanded_details ⇒ Object
100 101 102 103 104 |
# File 'lib/class_metrix/extractor.rb', line 100 def @hide_main_row = false @hide_key_rows = false self end |
#show_only_keys ⇒ Object
94 95 96 97 98 |
# File 'lib/class_metrix/extractor.rb', line 94 def show_only_keys @hide_main_row = true @hide_key_rows = false self end |
#show_only_main ⇒ Object
Hash expansion display options
88 89 90 91 92 |
# File 'lib/class_metrix/extractor.rb', line 88 def show_only_main @hide_main_row = false @hide_key_rows = true self end |
#show_source ⇒ Object
76 77 78 79 |
# File 'lib/class_metrix/extractor.rb', line 76 def show_source @show_source = true self end |
#to_csv(filename = nil, **options) ⇒ Object
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/class_metrix/extractor.rb', line 145 def to_csv(filename = nil, **) @logger&.log("Starting CSV generation...") data = extract_all_data = { extraction_types: @types, show_metadata: true, separator: ",", quote_char: '"', flatten_hashes: true, null_value: "", comment_char: "#", hide_main_row: @hide_main_row, hide_key_rows: @hide_key_rows, debug_mode: @debug_mode, debug_level: @debug_level }.merge() formatted = CsvFormatter.new(data, @expand_hashes, ).format File.write(filename, formatted) if filename formatted end |
#to_markdown(filename = nil, **options) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/class_metrix/extractor.rb', line 117 def to_markdown(filename = nil, **) @logger&.log("Starting markdown generation...") data = extract_all_data @logger&.log("Extracted data structure with #{data[:rows]&.length || 0} rows") = { extraction_types: @types, show_missing_summary: false, show_footer: true, footer_style: :default, show_timestamp: false, show_metadata: true, show_classes: true, show_extraction_info: true, table_style: :standard, summary_style: :grouped, hide_main_row: @hide_main_row, hide_key_rows: @hide_key_rows, debug_mode: @debug_mode, debug_level: @debug_level }.merge() formatted = MarkdownFormatter.new(data, @expand_hashes, ).format File.write(filename, formatted) if filename formatted end |