trace_viz 0.0.2 → 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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +68 -43
  3. data/Steepfile +34 -0
  4. data/examples/eu_central_bank.rb +69 -0
  5. data/examples/example.cast +189 -285
  6. data/lib/trace_viz/adapters/base_adapter.rb +24 -1
  7. data/lib/trace_viz/adapters/trace_point_adapter.rb +3 -10
  8. data/lib/trace_viz/builders/base_builder.rb +11 -0
  9. data/lib/trace_viz/builders/diagram/base_builder.rb +10 -0
  10. data/lib/trace_viz/builders/diagram/message_builder.rb +96 -0
  11. data/lib/trace_viz/builders/diagram/sequence_builder.rb +50 -0
  12. data/lib/trace_viz/collectors/base_collector.rb +42 -35
  13. data/lib/trace_viz/collectors/filters/base_class_filter.rb +31 -0
  14. data/lib/trace_viz/collectors/filters/base_exclude_filter.rb +16 -0
  15. data/lib/trace_viz/collectors/filters/base_filter.rb +2 -8
  16. data/lib/trace_viz/collectors/filters/base_include_filter.rb +16 -0
  17. data/lib/trace_viz/collectors/filters/exclude_classes_filter.rb +4 -17
  18. data/lib/trace_viz/collectors/filters/exclude_default_classes_filter.rb +22 -26
  19. data/lib/trace_viz/collectors/filters/include_classes_filter.rb +4 -17
  20. data/lib/trace_viz/collectors/hierarchy_linker.rb +30 -0
  21. data/lib/trace_viz/collectors/matchers/base_matcher.rb +13 -0
  22. data/lib/trace_viz/collectors/matchers/trace_point_action_matcher.rb +12 -10
  23. data/lib/trace_viz/collectors/matchers/within_depth_matcher.rb +6 -5
  24. data/lib/trace_viz/collectors/steps/assign_depth_for_call_step.rb +30 -0
  25. data/lib/trace_viz/collectors/steps/assign_depth_for_return_step.rb +39 -0
  26. data/lib/trace_viz/collectors/steps/base_step.rb +27 -0
  27. data/lib/trace_viz/collectors/steps/build_hierarchy_step.rb +32 -0
  28. data/lib/trace_viz/collectors/{evaluators/hidden_evaluator.rb → steps/hidden_step.rb} +9 -5
  29. data/lib/trace_viz/collectors/steps/linking_step.rb +36 -0
  30. data/lib/trace_viz/collectors/{evaluators/filter_evaluator.rb → steps/validation_step.rb} +9 -6
  31. data/lib/trace_viz/collectors/steps.rb +10 -0
  32. data/lib/trace_viz/collectors/trace_pipeline.rb +26 -0
  33. data/lib/trace_viz/collectors/trace_pipeline_builder.rb +29 -0
  34. data/lib/trace_viz/collectors/trace_point_collector.rb +1 -11
  35. data/lib/trace_viz/config/validator.rb +6 -5
  36. data/lib/trace_viz/configuration.rb +3 -3
  37. data/lib/trace_viz/context/tracking_context.rb +4 -0
  38. data/lib/trace_viz/core/tracer.rb +2 -0
  39. data/lib/trace_viz/defaults/actions.rb +84 -0
  40. data/lib/trace_viz/defaults/colors.rb +61 -0
  41. data/lib/trace_viz/defaults/config.rb +91 -0
  42. data/lib/trace_viz/defaults/themes.rb +66 -0
  43. data/lib/trace_viz/defaults.rb +10 -129
  44. data/lib/trace_viz/exporters/base_exporter.rb +31 -13
  45. data/lib/trace_viz/exporters/export_manager.rb +33 -0
  46. data/lib/trace_viz/exporters/mermaid_exporter.rb +17 -0
  47. data/lib/trace_viz/exporters/registry.rb +27 -0
  48. data/lib/trace_viz/exporters/text_exporter.rb +2 -2
  49. data/lib/trace_viz/extractors/base_extractor.rb +17 -0
  50. data/lib/trace_viz/extractors/diagram/base_extractor.rb +18 -0
  51. data/lib/trace_viz/extractors/diagram/box_extractor.rb +50 -0
  52. data/lib/trace_viz/extractors/diagram/message_extractor.rb +23 -0
  53. data/lib/trace_viz/extractors/diagram/participant_extractor.rb +37 -0
  54. data/lib/trace_viz/extractors/diagram/processors/message_processor.rb +93 -0
  55. data/lib/trace_viz/formatters/base_formatter.rb +4 -30
  56. data/lib/trace_viz/formatters/base_formatter_factory.rb +23 -0
  57. data/lib/trace_viz/formatters/diagram/sequence/base_formatter.rb +14 -0
  58. data/lib/trace_viz/formatters/diagram/sequence/message_formatter.rb +37 -0
  59. data/lib/trace_viz/formatters/diagram_formatter.rb +10 -0
  60. data/lib/trace_viz/formatters/export/base_formatter.rb +12 -0
  61. data/lib/trace_viz/formatters/export/formatter_factory.rb +22 -0
  62. data/lib/trace_viz/formatters/export/method_call_formatter.rb +21 -0
  63. data/lib/trace_viz/formatters/export/method_return_formatter.rb +22 -0
  64. data/lib/trace_viz/formatters/export/summary_group_formatter.rb +35 -0
  65. data/lib/trace_viz/formatters/helpers/depth_helper.rb +2 -8
  66. data/lib/trace_viz/formatters/helpers/digram/action_helper.rb +17 -0
  67. data/lib/trace_viz/formatters/helpers/digram/result_helper.rb +39 -0
  68. data/lib/trace_viz/formatters/helpers/indent_helper.rb +1 -1
  69. data/lib/trace_viz/formatters/helpers/log/color_helper.rb +23 -0
  70. data/lib/trace_viz/formatters/helpers/log/depth_helper.rb +22 -0
  71. data/lib/trace_viz/formatters/helpers/log/method_name_helper.rb +29 -0
  72. data/lib/trace_viz/formatters/helpers/log/params_helper.rb +55 -0
  73. data/lib/trace_viz/formatters/helpers/log/result_helper.rb +27 -0
  74. data/lib/trace_viz/formatters/helpers/log/summary/params_helper.rb +57 -0
  75. data/lib/trace_viz/formatters/helpers/method_details_helper.rb +1 -1
  76. data/lib/trace_viz/formatters/helpers/params_helper.rb +30 -9
  77. data/lib/trace_viz/formatters/helpers/result_helper.rb +5 -4
  78. data/lib/trace_viz/formatters/helpers/source_helper.rb +6 -4
  79. data/lib/trace_viz/formatters/helpers/summary/params_helper.rb +45 -0
  80. data/lib/trace_viz/formatters/helpers/summary/source_helper.rb +24 -0
  81. data/lib/trace_viz/formatters/helpers/time_helper.rb +2 -2
  82. data/lib/trace_viz/formatters/helpers.rb +10 -0
  83. data/lib/trace_viz/formatters/log/base_formatter.rb +13 -0
  84. data/lib/trace_viz/formatters/log/formatter_factory.rb +22 -0
  85. data/lib/trace_viz/formatters/log/method_call_formatter.rb +34 -0
  86. data/lib/trace_viz/formatters/log/method_return_formatter.rb +24 -0
  87. data/lib/trace_viz/formatters/log/summary_group_formatter.rb +40 -0
  88. data/lib/trace_viz/formatters/log/verbose_formatter.rb +14 -0
  89. data/lib/trace_viz/formatters/trace_data_formatter.rb +24 -0
  90. data/lib/trace_viz/helpers/config_helper.rb +17 -0
  91. data/lib/trace_viz/helpers/trace_point/param_helper.rb +98 -0
  92. data/lib/trace_viz/helpers/tracking_helper.rb +26 -0
  93. data/lib/trace_viz/helpers.rb +9 -0
  94. data/lib/trace_viz/logger.rb +9 -20
  95. data/lib/trace_viz/loggers/base_logger.rb +29 -0
  96. data/lib/trace_viz/loggers/log_level_resolver.rb +18 -0
  97. data/lib/trace_viz/loggers/logging_manager.rb +46 -0
  98. data/lib/trace_viz/loggers/post_collection_logger.rb +44 -0
  99. data/lib/trace_viz/loggers/trace_logger.rb +14 -18
  100. data/lib/trace_viz/loggers/trace_stats_logger.rb +28 -14
  101. data/lib/trace_viz/managers/diagram/participant_manager.rb +23 -0
  102. data/lib/trace_viz/models/box.rb +19 -0
  103. data/lib/trace_viz/models/diagram.rb +27 -0
  104. data/lib/trace_viz/models/message.rb +16 -0
  105. data/lib/trace_viz/models/participant.rb +18 -0
  106. data/lib/trace_viz/models.rb +8 -0
  107. data/lib/trace_viz/renderers/base_renderer.rb +27 -0
  108. data/lib/trace_viz/renderers/diagram/sequence_renderer.rb +59 -0
  109. data/lib/trace_viz/renderers/render_context.rb +17 -0
  110. data/lib/trace_viz/renderers/renderer_builder.rb +20 -0
  111. data/lib/trace_viz/renderers/renderer_factory.rb +29 -0
  112. data/lib/trace_viz/renderers/summary_renderer.rb +34 -0
  113. data/lib/trace_viz/renderers/verbose_renderer.rb +29 -0
  114. data/lib/trace_viz/shared/renderer_helper.rb +25 -0
  115. data/lib/trace_viz/shared.rb +8 -0
  116. data/lib/trace_viz/syntax/mermaid/sequence_syntax.rb +99 -0
  117. data/lib/trace_viz/trace_data/base.rb +22 -22
  118. data/lib/trace_viz/trace_data/node.rb +39 -0
  119. data/lib/trace_viz/trace_data/root_node.rb +24 -0
  120. data/lib/trace_viz/trace_data/summary_node.rb +45 -0
  121. data/lib/trace_viz/trace_data/trace_point/base.rb +26 -31
  122. data/lib/trace_viz/trace_data/trace_point/method_call.rb +25 -16
  123. data/lib/trace_viz/trace_data/trace_point/method_return.rb +21 -1
  124. data/lib/trace_viz/traits/depth_trackable.rb +13 -0
  125. data/lib/trace_viz/traits/identifiable.rb +25 -0
  126. data/lib/trace_viz/traits/time_trackable.rb +13 -0
  127. data/lib/trace_viz/traits.rb +10 -0
  128. data/lib/trace_viz/transformers/base_transformer.rb +29 -0
  129. data/lib/trace_viz/transformers/summary_transformer.rb +70 -0
  130. data/lib/trace_viz/utils/alias_generator.rb +58 -0
  131. data/lib/trace_viz/utils/colorize.rb +6 -6
  132. data/lib/trace_viz/utils/format/key_value_formatter.rb +42 -0
  133. data/lib/trace_viz/utils/format/value_truncator.rb +123 -0
  134. data/lib/trace_viz/utils/id_generator.rb +35 -0
  135. data/lib/trace_viz/utils.rb +8 -0
  136. data/lib/trace_viz/version.rb +1 -1
  137. data/sig/adapters/base_adapter.rbs +11 -0
  138. data/sig/adapters/trace_point_adapter.rbs +13 -0
  139. data/sig/collectors/filters/registry.rbs +13 -0
  140. data/sig/collectors/trace_point_collector.rbs +17 -0
  141. data/sig/config/copier.rbs +15 -0
  142. data/sig/config/validator.rbs +18 -0
  143. data/sig/configuration.rbs +22 -0
  144. data/sig/context/base_context.rbs +9 -0
  145. data/sig/context/config_context.rbs +13 -0
  146. data/sig/context/manager.rbs +10 -0
  147. data/sig/context/map.rbs +13 -0
  148. data/sig/context.rbs +5 -0
  149. data/sig/core/tracer.rbs +7 -0
  150. data/sig/core.rbs +4 -0
  151. data/sig/defaults.rbs +17 -0
  152. data/sig/errors.rbs +13 -0
  153. data/sig/logger.rbs +33 -0
  154. data/sig/trace_viz.rbs +1 -2
  155. data/sig/utils/colorize.rbs +8 -0
  156. data/sig/utils/format_utils/key_value_formatter.rbs +16 -0
  157. data/sig/utils/format_utils/value_truncator.rbs +19 -0
  158. data/sig/utils/format_utils.rbs +8 -0
  159. data/sig/version.rbs +3 -0
  160. metadata +124 -18
  161. data/lib/trace_viz/collectors/depth_manager.rb +0 -37
  162. data/lib/trace_viz/collectors/evaluators/base_evaluator.rb +0 -23
  163. data/lib/trace_viz/exporters/formatters/base_formatter.rb +0 -12
  164. data/lib/trace_viz/exporters/formatters/method_call_formatter.rb +0 -21
  165. data/lib/trace_viz/exporters/formatters/method_return_formatter.rb +0 -22
  166. data/lib/trace_viz/exporters/transformers/base_transformer.rb +0 -25
  167. data/lib/trace_viz/exporters/transformers/text_transformer.rb +0 -28
  168. data/lib/trace_viz/loggers/trace_builder.rb +0 -30
  169. data/lib/trace_viz/loggers/trace_formatters/base_formatter.rb +0 -32
  170. data/lib/trace_viz/loggers/trace_formatters/method_call_formatter.rb +0 -21
  171. data/lib/trace_viz/loggers/trace_formatters/method_return_formatter.rb +0 -22
  172. data/lib/trace_viz/utils/format_utils.rb +0 -67
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33ae44f03b5cb5a5e546e27adf7d71e4100adb014659122b51ead6c185203b48
4
- data.tar.gz: 712c78b3b7cd93f7512fa7f25a1bcf0a3424b45819ec52ae80c4a9b480385282
3
+ metadata.gz: bb4571e8a37548c6819b56d576ec740c9052efe64c2984cd65a6a06f53e935b3
4
+ data.tar.gz: 7dfd025e87f5076957783b45512a6c8aca8b65dd98ec67bd6318681efd5d1d3c
5
5
  SHA512:
6
- metadata.gz: 178cd46ddd00503c6a7783d8697d7d90dfccb15980e3af6b0f8cdb39999809f4e5f0d541bb9809414149c1c0984ebaff485aa634b42b47aee2f2b1615b2d9cef
7
- data.tar.gz: d61a9e82387c176eb31e06651c894ff3113924bcee1eaef10d23d47355f3eca3363165a6d63cb222c57aa0db908f4557c56e24c295496088c1213113fae14857
6
+ metadata.gz: 2bf8264a62463c20f1e585fac19835f8d739fe703c4dfaef159e8c3fde331ace651f750c17591da5c3441faf6cf33d9baff2af6048c457bdc89d3a5e76148015
7
+ data.tar.gz: 4ae53f49154cbb6b6c0a95075c62ccd698ad3154abb3a5871a2697019020a99634fa9a82ddee118d81ec29543de2ad5cd7610a6f57c6429d7700372581f2f91a
data/README.md CHANGED
@@ -2,19 +2,18 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/trace_viz.svg)](https://rubygems.org/gems/trace_viz)
4
4
  [![Downloads](https://img.shields.io/gem/dt/trace_viz)](https://rubygems.org/gems/trace_viz)
5
- [![Build Status](https://github.com/patrick204nqh/trace_viz/actions/workflows/main.yml/badge.svg)](https://github.com/patrick204nqh/trace_viz/actions)
5
+ [![Build Status](https://github.com/patrick204nqh/trace_viz/actions/workflows/ci.yml/badge.svg)](https://github.com/patrick204nqh/trace_viz/actions)
6
6
  [![Maintainability](https://api.codeclimate.com/v1/badges/e97579abe66f3477e71d/maintainability)](https://codeclimate.com/github/patrick204nqh/trace_viz/maintainability)
7
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/e97579abe66f3477e71d/test_coverage)](https://codeclimate.com/github/patrick204nqh/trace_viz/test_coverage)
7
8
  ![License](https://img.shields.io/github/license/patrick204nqh/trace_viz)
8
9
 
9
10
  TraceViz is a Ruby library designed to trace and visualize events executed in a block of code. It is useful for logging, debugging, and generating diagrams to understand code execution and flow.
10
11
 
11
- > **Note:** The diagram generation feature is currently under development.
12
-
13
12
  The gem allows you to customize how much detail you want to see, such as method calls, parameters, return values, and execution times.
14
13
 
15
14
  ## Demo
16
15
 
17
- [![asciicast](https://asciinema.org/a/pKjqLFNPxQFQWucTzcGMpt6QE.svg)](https://asciinema.org/a/pKjqLFNPxQFQWucTzcGMpt6QE)
16
+ [![asciicast](https://asciinema.org/a/lKXPPgx0muZuQbtvMu8GyHaOV.svg)](https://asciinema.org/a/lKXPPgx0muZuQbtvMu8GyHaOV)
18
17
 
19
18
  ## Installation
20
19
 
@@ -142,12 +141,14 @@ TraceViz.trace(
142
141
  },
143
142
  filters: [
144
143
  :exclude_internal_call,
145
- include_classes: [Example]
144
+ include_classes: {
145
+ classes: [Example]
146
+ }
146
147
  ],
147
148
  export: {
148
149
  enabled: true,
149
150
  path: "tmp",
150
- format: :txt,
151
+ format: :txt, # Select :mermaid to export a mermaid diagram
151
152
  overwrite: false,
152
153
  }
153
154
  ) do
@@ -158,9 +159,7 @@ end
158
159
 
159
160
  </details>
160
161
 
161
- **Output**
162
-
163
- <details>
162
+ <details open>
164
163
  <summary>Sample Output</summary>
165
164
 
166
165
  ```bash
@@ -177,48 +176,74 @@ Final result: 24
177
176
 
178
177
  </details>
179
178
 
179
+ <details open>
180
+ <summary>Sample Diagram</summary>
181
+
182
+ ```mermaid
183
+ sequenceDiagram
184
+ box rgb(224, 236, 221) Example
185
+ participant E as Example
186
+ end
187
+ E ->> E: perform_task(x: 5, y: 7)
188
+ Note over E: 24
189
+ activate E
190
+ E ->> E: add_numbers(a: 5, b: 7)
191
+ Note over E: 24
192
+ activate E
193
+ E ->> E: multiply_by_factor(value: 12, factor: 2)
194
+ Note over E: 24
195
+ deactivate E
196
+ E ->> E: log_result(result: 24)
197
+ Note over E: nil
198
+ deactivate E
199
+ ```
200
+
201
+ </details>
202
+
180
203
  ### Configuration Options
181
204
 
182
205
  TraceViz provides extensive configuration options to customize tracing behavior.
183
206
 
184
- | Group | Option | Type | Default Value | Description |
185
- | ----------------- | -------------------------- | ---------------- | ------------------ | ----------------------------------------------------------------- |
186
- | `general` | `tab_size` | Integer | 2 | Number of spaces for indentation. |
187
- | | `show_indent` | Boolean | true | Enables visual indentation for nested calls. |
188
- | | `show_depth` | Boolean | true | Displays the depth level of the method call. |
189
- | | `max_display_depth` | Integer | 3 | Maximum depth of calls to display. |
190
- | | `show_method_name` | Boolean | true | Logs the name of the method being executed. |
191
- | `source_location` | `show` | Boolean | false | Logs the source file and line number for methods. |
192
- | | `truncate_length` | Integer | 100 | Maximum length of displayed source location information. |
193
- | `params` | `show` | Boolean | true | Logs method parameters. |
194
- | | `mode` | Symbol | `:name_and_value` | Parameter display mode (`:name`, `:value`, or `:name_and_value`). |
195
- | | `truncate_values` | Integer | 50 | Maximum length of parameter values to display. |
196
- | `result` | `show` | Boolean | true | Logs method return values. |
197
- | | `truncate_length` | Integer | 50 | Maximum length of return value logs. |
198
- | `execution` | `show_time` | Boolean | true | Logs execution time for methods. |
199
- | | `show_trace_events` | Array of Symbols | `[:call, :return]` | Specifies the trace events to log (e.g., `:call`, `:return`). |
200
- | `filters` | `:exclude_internal_call` | Symbol | N/A | Exclude internal Ruby calls. |
201
- | | `:exclude_default_classes` | Symbol | N/A | Skip logging standard library classes. |
202
- | | `:exclude_rails_framework` | Symbol | N/A | Ignore Rails framework classes and methods. |
203
- | | `include_classes` | Hash | N/A | Specify classes to include in tracing. |
204
- | | - `classes` | Array | [] | List of class names to include (e.g., `["ClassName"]`). |
205
- | | `exclude_classes` | Hash | N/A | Specify classes to exclude from tracing. |
206
- | | - `classes` | Array | [] | List of class names to exclude (e.g., `["ClassName"]`). |
207
- | | `include_gems` | Hash | N/A | Include specific gems or runtime application gems. |
208
- | | - `app_running` | Boolean | true | Include the code of the application. |
209
- | | - `app_path` | String | `Dir.pwd` | Path to the application (e.g., `Dir.pwd`). |
210
- | | - `gems` | Array | [] | List of gems to include (e.g., `["gem1", "gem2"]`). |
211
- | | `exclude_gems` | Hash | N/A | Exclude specified gems. |
212
- | | - `gems` | Array | [] | List of gems to exclude (e.g., `["excluded_gem"]`). |
213
- | `export` | `enabled` | Boolean | true | Enables or disables exporting of trace logs. |
214
- | | `path` | String | `"tmp"` | Directory for exported trace logs. |
215
- | | `format` | Symbol | `:txt` | Format for trace logs (`:txt` or other supported formats). |
216
- | | `overwrite` | Boolean | false | Prevents overwriting of existing exported files. |
207
+ | Group | Option | Type | Default Value | Description |
208
+ | ----------------- | -------------------------- | ---------------- | --------------------------- | -------------------------------------------------------------------------------- |
209
+ | `general` | `tab_size` | Integer | 2 | Number of spaces for indentation. |
210
+ | | `mode` | Symbol | `:summary` | Display mode (`:summary` or `:verbose`). |
211
+ | | `group_keys` | Array of Symbols | `[:event, :klass, :action]` | Keys to group similar outputs. |
212
+ | | `show_indent` | Boolean | true | Enables visual indentation for nested calls. |
213
+ | | `show_depth` | Boolean | true | Displays the depth level of the method call. |
214
+ | | `max_display_depth` | Integer | 3 | Maximum depth of calls to display. |
215
+ | | `show_method_name` | Boolean | true | Logs the name of the method being executed. |
216
+ | `source_location` | `show` | Boolean | false | Logs the source file and line number for methods. |
217
+ | | `truncate_length` | Integer | 100 | Maximum length of displayed source location information. |
218
+ | `params` | `show` | Boolean | true | Logs method parameters. |
219
+ | | `mode` | Symbol | `:name_and_value` | Parameter display mode (`:name`, `:value`, or `:name_and_value`). |
220
+ | | `truncate_values` | Integer | 50 | Maximum length of parameter values to display. |
221
+ | `result` | `show` | Boolean | true | Logs method return values. |
222
+ | | `truncate_length` | Integer | 50 | Maximum length of return value logs. |
223
+ | `execution` | `show_time` | Boolean | true | Logs execution time for methods. |
224
+ | | `show_trace_events` | Array of Symbols | `[:call, :return]` | Specifies the trace events to log (e.g., `:call`, `:return`). |
225
+ | `filters` | `:exclude_internal_call` | Symbol | N/A | Exclude internal Ruby calls. |
226
+ | | `:exclude_default_classes` | Symbol | N/A | Skip logging standard library classes. |
227
+ | | `:exclude_rails_framework` | Symbol | N/A | Ignore Rails framework classes and methods. |
228
+ | | `include_classes` | Hash | N/A | Specify classes to include in tracing. |
229
+ | | - `classes` | Array | [] | List of class names to include (e.g., `["ClassName"]`). |
230
+ | | `exclude_classes` | Hash | N/A | Specify classes to exclude from tracing. |
231
+ | | - `classes` | Array | [] | List of class names to exclude (e.g., `["ClassName"]`). |
232
+ | | `include_gems` | Hash | N/A | Include specific gems or runtime application gems. |
233
+ | | - `app_running` | Boolean | true | Include the code of the application. |
234
+ | | - `app_path` | String | `Dir.pwd` | Path to the application (e.g., `Dir.pwd`). |
235
+ | | - `gems` | Array | [] | List of gems to include (e.g., `["gem1", "gem2"]`). |
236
+ | | `exclude_gems` | Hash | N/A | Exclude specified gems. |
237
+ | | - `gems` | Array | [] | List of gems to exclude (e.g., `["excluded_gem"]`). |
238
+ | `export` | `enabled` | Boolean | true | Enables or disables exporting of trace logs. |
239
+ | | `path` | String | `"tmp"` | Directory for exported trace logs. |
240
+ | | `format` | Symbol | `:txt` | Format for trace logs. Use :txt for plain text or :mermaid for mermaid diagrams. |
241
+ | | `overwrite` | Boolean | false | Prevents overwriting of existing exported files. |
217
242
 
218
243
  ### Notes
219
244
 
220
245
  - **Default Skipped Classes**: The following standard library classes are excluded by default when `:exclude_default_classes` is enabled:
221
- - `Object`, `String`, `Array`, `Hash`, `Numeric`, `Integer`, `Float`, `Symbol`, `Kernel`, `Module`, `Class`, `Range`, `Regexp`.
246
+ - `Object`, `String`, `Array`, `Hash`, `Numeric`, `Integer`, `Float`, `Symbol`, `Kernel`, `Module`, `Class`, `Range`, `Regexp`, `Set`, `Gem`.
222
247
 
223
248
  ## Development
224
249
 
data/Steepfile ADDED
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ D = Steep::Diagnostic
4
+
5
+ target :lib do
6
+ signature "sig"
7
+ # ignore_signature "sig/test"
8
+
9
+ check "lib" # Directory name
10
+ # check "path/to/source.rb" # File name
11
+ # check "app/models/**/*.rb" # Glob
12
+ # ignore "lib/templates/*.rb"
13
+
14
+ # library "pathname" # Standard libraries
15
+ # library "strong_json" # Gems
16
+
17
+ # configure_code_diagnostics(D::Ruby.default) # `default` diagnostics setting (applies by default)
18
+ # configure_code_diagnostics(D::Ruby.strict) # `strict` diagnostics setting
19
+ # configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
20
+ # configure_code_diagnostics(D::Ruby.silent) # `silent` diagnostics setting
21
+ # configure_code_diagnostics do |hash| # You can setup everything yourself
22
+ # hash[D::Ruby::NoMethod] = :information
23
+ # end
24
+ end
25
+
26
+ target :test do
27
+ unreferenced! # Skip type checking the `lib` code when types in `test` target is changed
28
+ # signature "sig/test" # Put RBS files for tests under `sig/test`
29
+ check "test" # Type check Ruby scripts under `test`
30
+
31
+ configure_code_diagnostics(D::Ruby.lenient) # Weak type checking for test code
32
+
33
+ # library "pathname" # Standard libraries
34
+ end
@@ -0,0 +1,69 @@
1
+ $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
2
+ require 'eu_central_bank'
3
+ require 'i18n'
4
+ require 'trace_viz'
5
+
6
+ # Fix the locale issue
7
+ I18n.config.available_locales = [:en]
8
+ I18n.locale = :en
9
+
10
+ TraceViz.trace(
11
+ general: {
12
+ tab_size: 1,
13
+ mode: :summary,
14
+ show_indent: true,
15
+ show_depth: true,
16
+ max_display_depth: 5,
17
+ show_method_name: true,
18
+ },
19
+ params: {
20
+ show: true,
21
+ mode: :name_only,
22
+ # truncate_length: 10
23
+ },
24
+ result: {
25
+ show: true,
26
+ truncate_length: 15,
27
+ },
28
+ source_location: {
29
+ show: true,
30
+ truncate_length: 50,
31
+ },
32
+ execution: {
33
+ show_time: true,
34
+ show_trace_events: [:call, :return],
35
+ },
36
+ log: {
37
+ runtime: false,
38
+ post_collection: true,
39
+ stats: true
40
+ },
41
+ filters: [
42
+ :exclude_internal_call,
43
+ :exclude_default_classes,
44
+ # include_classes: {
45
+ # classes: [EuCentralBank],
46
+ # },
47
+ # exclude_classes: {
48
+ # classes: ['Gem']
49
+ # },
50
+ exclude_gems: {
51
+ gems: ['nokogiri', 'money', 'i18n']
52
+ }
53
+ ],
54
+ export: {
55
+ enabled: true,
56
+ format: :txt,
57
+ overwrite: true,
58
+ }
59
+ ) do
60
+ # Create a new instance of the EuCentralBank
61
+ bank = EuCentralBank.new
62
+
63
+ # Trace the update of exchange rates
64
+ bank.update_rates
65
+
66
+ # Trace conversion of currency
67
+ result = bank.exchange(50, 'USD', 'EUR')
68
+ puts "Converted amount: #{result}"
69
+ end