trace_viz 0.0.2 → 1.0.0

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 (143) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +40 -37
  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/collectors/base_collector.rb +42 -35
  9. data/lib/trace_viz/collectors/filters/base_class_filter.rb +29 -0
  10. data/lib/trace_viz/collectors/filters/base_exclude_filter.rb +16 -0
  11. data/lib/trace_viz/collectors/filters/base_filter.rb +2 -8
  12. data/lib/trace_viz/collectors/filters/base_include_filter.rb +16 -0
  13. data/lib/trace_viz/collectors/filters/exclude_classes_filter.rb +4 -17
  14. data/lib/trace_viz/collectors/filters/exclude_default_classes_filter.rb +22 -26
  15. data/lib/trace_viz/collectors/filters/include_classes_filter.rb +4 -17
  16. data/lib/trace_viz/collectors/hierarchy_linker.rb +30 -0
  17. data/lib/trace_viz/collectors/matchers/base_matcher.rb +13 -0
  18. data/lib/trace_viz/collectors/matchers/trace_point_action_matcher.rb +12 -10
  19. data/lib/trace_viz/collectors/matchers/within_depth_matcher.rb +6 -5
  20. data/lib/trace_viz/collectors/steps/assign_depth_for_call_step.rb +30 -0
  21. data/lib/trace_viz/collectors/steps/assign_depth_for_return_step.rb +39 -0
  22. data/lib/trace_viz/collectors/steps/base_step.rb +27 -0
  23. data/lib/trace_viz/collectors/steps/build_hierarchy_step.rb +32 -0
  24. data/lib/trace_viz/collectors/{evaluators/hidden_evaluator.rb → steps/hidden_step.rb} +9 -5
  25. data/lib/trace_viz/collectors/steps/linking_step.rb +36 -0
  26. data/lib/trace_viz/collectors/{evaluators/filter_evaluator.rb → steps/validation_step.rb} +9 -6
  27. data/lib/trace_viz/collectors/steps.rb +10 -0
  28. data/lib/trace_viz/collectors/trace_pipeline.rb +26 -0
  29. data/lib/trace_viz/collectors/trace_pipeline_builder.rb +29 -0
  30. data/lib/trace_viz/collectors/trace_point_collector.rb +1 -11
  31. data/lib/trace_viz/config/validator.rb +6 -5
  32. data/lib/trace_viz/configuration.rb +3 -3
  33. data/lib/trace_viz/context/tracking_context.rb +4 -0
  34. data/lib/trace_viz/core/tracer.rb +2 -0
  35. data/lib/trace_viz/defaults/actions.rb +84 -0
  36. data/lib/trace_viz/defaults/colors.rb +61 -0
  37. data/lib/trace_viz/defaults/config.rb +89 -0
  38. data/lib/trace_viz/defaults/themes.rb +66 -0
  39. data/lib/trace_viz/defaults.rb +10 -129
  40. data/lib/trace_viz/exporters/base_exporter.rb +8 -11
  41. data/lib/trace_viz/exporters/export_manager.rb +33 -0
  42. data/lib/trace_viz/exporters/registry.rb +25 -0
  43. data/lib/trace_viz/exporters/text_exporter.rb +22 -0
  44. data/lib/trace_viz/formatters/base_formatter.rb +3 -30
  45. data/lib/trace_viz/formatters/export/base_formatter.rb +12 -0
  46. data/lib/trace_viz/formatters/export/formatter_factory.rb +27 -0
  47. data/lib/trace_viz/formatters/export/method_call_formatter.rb +21 -0
  48. data/lib/trace_viz/formatters/export/method_return_formatter.rb +22 -0
  49. data/lib/trace_viz/formatters/export/summary_group_formatter.rb +35 -0
  50. data/lib/trace_viz/formatters/helpers/depth_helper.rb +2 -8
  51. data/lib/trace_viz/formatters/helpers/indent_helper.rb +1 -1
  52. data/lib/trace_viz/formatters/helpers/log/color_helper.rb +23 -0
  53. data/lib/trace_viz/formatters/helpers/log/depth_helper.rb +22 -0
  54. data/lib/trace_viz/formatters/helpers/log/method_name_helper.rb +29 -0
  55. data/lib/trace_viz/formatters/helpers/log/params_helper.rb +51 -0
  56. data/lib/trace_viz/formatters/helpers/log/result_helper.rb +27 -0
  57. data/lib/trace_viz/formatters/helpers/log/summary/params_helper.rb +53 -0
  58. data/lib/trace_viz/formatters/helpers/method_details_helper.rb +1 -1
  59. data/lib/trace_viz/formatters/helpers/params_helper.rb +26 -9
  60. data/lib/trace_viz/formatters/helpers/result_helper.rb +1 -1
  61. data/lib/trace_viz/formatters/helpers/source_helper.rb +2 -1
  62. data/lib/trace_viz/formatters/helpers/summary/params_helper.rb +41 -0
  63. data/lib/trace_viz/formatters/helpers/summary/source_helper.rb +24 -0
  64. data/lib/trace_viz/formatters/helpers/time_helper.rb +2 -2
  65. data/lib/trace_viz/formatters/helpers.rb +10 -0
  66. data/lib/trace_viz/formatters/log/base_formatter.rb +13 -0
  67. data/lib/trace_viz/formatters/log/formatter_factory.rb +27 -0
  68. data/lib/trace_viz/formatters/log/method_call_formatter.rb +34 -0
  69. data/lib/trace_viz/formatters/log/method_return_formatter.rb +24 -0
  70. data/lib/trace_viz/formatters/log/summary_group_formatter.rb +40 -0
  71. data/lib/trace_viz/formatters/log/verbose_formatter.rb +14 -0
  72. data/lib/trace_viz/formatters/trace_data_formatter.rb +24 -0
  73. data/lib/trace_viz/helpers/config_helper.rb +13 -0
  74. data/lib/trace_viz/helpers/trace_point/param_helper.rb +98 -0
  75. data/lib/trace_viz/helpers/tracking_helper.rb +26 -0
  76. data/lib/trace_viz/helpers.rb +9 -0
  77. data/lib/trace_viz/logger.rb +9 -20
  78. data/lib/trace_viz/loggers/base_logger.rb +29 -0
  79. data/lib/trace_viz/loggers/log_level_resolver.rb +18 -0
  80. data/lib/trace_viz/loggers/logging_manager.rb +46 -0
  81. data/lib/trace_viz/loggers/post_collection_logger.rb +39 -0
  82. data/lib/trace_viz/loggers/trace_logger.rb +17 -18
  83. data/lib/trace_viz/loggers/trace_stats_logger.rb +28 -14
  84. data/lib/trace_viz/renderers/base_renderer.rb +24 -0
  85. data/lib/trace_viz/renderers/render_context.rb +18 -0
  86. data/lib/trace_viz/renderers/renderer_factory.rb +41 -0
  87. data/lib/trace_viz/renderers/summary/node_processor.rb +82 -0
  88. data/lib/trace_viz/renderers/summary_renderer.rb +22 -0
  89. data/lib/trace_viz/renderers/verbose_renderer.rb +29 -0
  90. data/lib/trace_viz/shared/renderer_helper.rb +46 -0
  91. data/lib/trace_viz/shared.rb +8 -0
  92. data/lib/trace_viz/trace_data/base.rb +16 -23
  93. data/lib/trace_viz/trace_data/node.rb +33 -0
  94. data/lib/trace_viz/trace_data/root_node.rb +20 -0
  95. data/lib/trace_viz/trace_data/summary_node.rb +49 -0
  96. data/lib/trace_viz/trace_data/trace_point/base.rb +22 -31
  97. data/lib/trace_viz/trace_data/trace_point/method_call.rb +22 -17
  98. data/lib/trace_viz/trace_data/trace_point/method_return.rb +21 -1
  99. data/lib/trace_viz/traits/depth_trackable.rb +13 -0
  100. data/lib/trace_viz/traits/identifiable.rb +25 -0
  101. data/lib/trace_viz/traits/time_trackable.rb +13 -0
  102. data/lib/trace_viz/traits.rb +10 -0
  103. data/lib/trace_viz/utils/colorize.rb +6 -6
  104. data/lib/trace_viz/utils/format_utils/key_value_formatter.rb +37 -0
  105. data/lib/trace_viz/utils/format_utils/value_truncator.rb +74 -0
  106. data/lib/trace_viz/utils/format_utils.rb +10 -53
  107. data/lib/trace_viz/utils/id_generator.rb +35 -0
  108. data/lib/trace_viz/version.rb +1 -1
  109. data/sig/adapters/base_adapter.rbs +11 -0
  110. data/sig/adapters/trace_point_adapter.rbs +13 -0
  111. data/sig/collectors/filters/registry.rbs +13 -0
  112. data/sig/collectors/trace_point_collector.rbs +17 -0
  113. data/sig/config/copier.rbs +15 -0
  114. data/sig/config/validator.rbs +18 -0
  115. data/sig/configuration.rbs +22 -0
  116. data/sig/context/base_context.rbs +9 -0
  117. data/sig/context/config_context.rbs +13 -0
  118. data/sig/context/manager.rbs +10 -0
  119. data/sig/context/map.rbs +13 -0
  120. data/sig/context.rbs +5 -0
  121. data/sig/core/tracer.rbs +7 -0
  122. data/sig/core.rbs +4 -0
  123. data/sig/defaults.rbs +17 -0
  124. data/sig/errors.rbs +13 -0
  125. data/sig/logger.rbs +33 -0
  126. data/sig/trace_viz.rbs +1 -2
  127. data/sig/utils/colorize.rbs +8 -0
  128. data/sig/utils/format_utils/key_value_formatter.rbs +16 -0
  129. data/sig/utils/format_utils/value_truncator.rbs +19 -0
  130. data/sig/utils/format_utils.rbs +8 -0
  131. data/sig/version.rbs +3 -0
  132. metadata +97 -18
  133. data/lib/trace_viz/collectors/depth_manager.rb +0 -37
  134. data/lib/trace_viz/collectors/evaluators/base_evaluator.rb +0 -23
  135. data/lib/trace_viz/exporters/formatters/base_formatter.rb +0 -12
  136. data/lib/trace_viz/exporters/formatters/method_call_formatter.rb +0 -21
  137. data/lib/trace_viz/exporters/formatters/method_return_formatter.rb +0 -22
  138. data/lib/trace_viz/exporters/transformers/base_transformer.rb +0 -25
  139. data/lib/trace_viz/exporters/transformers/text_transformer.rb +0 -28
  140. data/lib/trace_viz/loggers/trace_builder.rb +0 -30
  141. data/lib/trace_viz/loggers/trace_formatters/base_formatter.rb +0 -32
  142. data/lib/trace_viz/loggers/trace_formatters/method_call_formatter.rb +0 -21
  143. data/lib/trace_viz/loggers/trace_formatters/method_return_formatter.rb +0 -22
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "trace_viz/context"
4
+ require_relative "base_step"
5
+
6
+ module TraceViz
7
+ module Collectors
8
+ module Steps
9
+ class LinkingStep < BaseStep
10
+ def call(trace_data)
11
+ valid?(trace_data) ? linking_trace(trace_data) : trace_data
12
+ rescue StandardError => e
13
+ logger.error("Linking failed for trace_data ID: #{trace_data.id} - #{e.message}")
14
+ nil
15
+ end
16
+
17
+ private
18
+
19
+ def valid?(trace_data)
20
+ return false unless current_call
21
+
22
+ [
23
+ trace_data.event == :return,
24
+ current_call.event == :call,
25
+ trace_data.action_id == current_call.action_id,
26
+ ].all?
27
+ end
28
+
29
+ def linking_trace(trace_data)
30
+ trace_data.link(current_call)
31
+ trace_data
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,26 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "trace_viz/collectors/filters/registry"
4
- require_relative "base_evaluator"
4
+ require_relative "base_step"
5
5
 
6
6
  module TraceViz
7
7
  module Collectors
8
- module Evaluators
9
- class FilterEvaluator < BaseEvaluator
8
+ module Steps
9
+ class ValidationStep < BaseStep
10
10
  def initialize
11
11
  super()
12
-
13
12
  @filters = build_filters.freeze
14
13
  end
15
14
 
16
- def pass?(trace_data)
17
- filters.all? { |filter| filter.apply?(trace_data) }
15
+ def call(trace_data)
16
+ trace_data if pass?(trace_data)
18
17
  end
19
18
 
20
19
  private
21
20
 
22
21
  attr_reader :filters
23
22
 
23
+ def pass?(trace_data)
24
+ filters.all? { |filter| filter.apply?(trace_data) }
25
+ end
26
+
24
27
  def build_filters
25
28
  Collectors::Filters::Registry.build(config.filters)
26
29
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ Dir[File.join(__dir__, "steps/**/*.rb")].each { |file| require_relative file }
4
+
5
+ module TraceViz
6
+ module Collectors
7
+ module Steps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TraceViz
4
+ module Collectors
5
+ class TracePipeline
6
+ def initialize
7
+ @steps = []
8
+ end
9
+
10
+ def add_step(step)
11
+ @steps << step
12
+ end
13
+
14
+ def process(trace_data)
15
+ @steps.each do |step|
16
+ trace_data = step.call(trace_data)
17
+ return nil unless trace_data
18
+ end
19
+ trace_data
20
+ rescue StandardError => e
21
+ TraceViz.logger.error("Pipeline processing failed for trace_data ID: #{trace_data.id} - #{e.message}")
22
+ nil
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "trace_pipeline"
4
+ require_relative "steps"
5
+
6
+ module TraceViz
7
+ module Collectors
8
+ class TracePipelineBuilder
9
+ class << self
10
+ def build
11
+ TracePipeline.new.tap do |pipeline|
12
+ pipeline.add_step(Steps::ValidationStep.new)
13
+
14
+ #
15
+ # Those actions require access to the current call,
16
+ # so it needs to be run before current call is updated
17
+ #
18
+ pipeline.add_step(Steps::BuildHierarchyStep.new)
19
+ pipeline.add_step(Steps::LinkingStep.new)
20
+
21
+ pipeline.add_step(Steps::AssignDepthForCallStep.new)
22
+ pipeline.add_step(Steps::AssignDepthForReturnStep.new)
23
+ pipeline.add_step(Steps::HiddenStep.new)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -4,8 +4,6 @@ require "trace_viz/trace_data/trace_point_builder"
4
4
  require_relative "base_collector"
5
5
  require_relative "matchers/trace_point_action_matcher"
6
6
  require_relative "matchers/within_depth_matcher"
7
- require_relative "depth_manager"
8
- require_relative "trace_stats"
9
7
 
10
8
  module TraceViz
11
9
  module Collectors
@@ -21,7 +19,7 @@ module TraceViz
21
19
 
22
20
  attr_reader :action_matcher, :within_depth_matcher
23
21
 
24
- def collectible?(trace_point)
22
+ def can_collect?(trace_point)
25
23
  within_depth? || match_action?(trace_point)
26
24
  end
27
25
 
@@ -29,10 +27,6 @@ module TraceViz
29
27
  TraceData::TracePointBuilder.build(trace_point)
30
28
  end
31
29
 
32
- def update_trace_depth(trace_data)
33
- depth_manager.align(trace_data)
34
- end
35
-
36
30
  def match_action?(trace_point)
37
31
  action_matcher.matches?(trace_point)
38
32
  end
@@ -42,10 +36,6 @@ module TraceViz
42
36
 
43
37
  within_depth_matcher.matches?(depth)
44
38
  end
45
-
46
- def depth_manager
47
- @depth_manager ||= DepthManager.new
48
- end
49
39
  end
50
40
  end
51
41
  end
@@ -27,8 +27,9 @@ module TraceViz
27
27
 
28
28
  def validate_params(value)
29
29
  mode = value[:mode]
30
- unless Defaults.valid_param_modes.include?(mode)
31
- raise ArgumentError, "Invalid param mode: #{mode}. Valid modes are #{Defaults.valid_param_modes.join(", ")}."
30
+ unless Defaults::Config.valid_param_mode?(mode)
31
+ raise ArgumentError,
32
+ "Invalid param mode: #{mode}. Valid modes are #{Defaults::Config.valid_param_modes.join(", ")}."
32
33
  end
33
34
 
34
35
  if value[:truncate_values] && (!value[:truncate_values].is_a?(Integer) || value[:truncate_values] <= 0)
@@ -37,7 +38,7 @@ module TraceViz
37
38
  end
38
39
 
39
40
  def validate_result(value)
40
- if value[:truncate_length] && (!value[:truncate_length].is_a?(Integer) || value[:truncate_length] <= 0)
41
+ if value[:truncate_length] && !value[:truncate_length].is_a?(Integer)
41
42
  raise ArgumentError, "Truncate values must be a positive integer."
42
43
  end
43
44
  end
@@ -64,9 +65,9 @@ module TraceViz
64
65
  end
65
66
 
66
67
  format = value[:format]
67
- unless Defaults.valid_export_formats.include?(format)
68
+ unless Defaults::Config.valid_export_format?(format)
68
69
  raise ArgumentError,
69
- "Invalid export format: #{format}. Valid formats are #{Defaults.valid_export_formats.join(", ")}."
70
+ "Invalid export format: #{format}. Valid formats are #{Defaults::Config.valid_export_formats.join(", ")}."
70
71
  end
71
72
  end
72
73
  end
@@ -7,12 +7,12 @@ require "trace_viz/config/copier"
7
7
  module TraceViz
8
8
  class Configuration
9
9
  attr_reader :logger, :settings
10
- attr_reader(*Defaults.fetch_defaults.keys)
10
+ attr_reader(*Defaults::Config.fetch.keys)
11
11
 
12
12
  def initialize
13
13
  @logger = Logger.new
14
14
  @validator = Config::Validator.new
15
- @settings = Defaults.fetch_defaults
15
+ @settings = Defaults::Config.fetch
16
16
  define_dynamic_accessors
17
17
  end
18
18
 
@@ -32,7 +32,7 @@ module TraceViz
32
32
  end
33
33
 
34
34
  def reset_defaults
35
- @settings = Defaults.fetch_defaults
35
+ @settings = Defaults::Config.fetch
36
36
  end
37
37
 
38
38
  def dup
@@ -15,6 +15,10 @@ module TraceViz
15
15
  @active_calls = Tracking::ActiveCalls.new
16
16
  end
17
17
 
18
+ def current_call
19
+ active_calls.current
20
+ end
21
+
18
22
  def current_depth
19
23
  active_calls.size
20
24
  end
@@ -10,6 +10,8 @@ module TraceViz
10
10
  module Core
11
11
  class Tracer
12
12
  def trace(**options, &block)
13
+ Defaults::Themes.apply_solarized_theme
14
+
13
15
  Context::Manager.with_contexts(config: options, tracking: {}) do
14
16
  adapter = Adapters::TracePointAdapter.new
15
17
  adapter.trace(&block)
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TraceViz
4
+ module Defaults
5
+ class Actions
6
+ EMOJIS = {
7
+ default: "",
8
+ info: "ℹ️",
9
+ success: "✅",
10
+ error: "❌",
11
+ warn: "⚠️",
12
+ start: "🚀",
13
+ processing: "🔄",
14
+ finish: "🏁",
15
+ exported: "📤",
16
+ skipped: "⏩",
17
+ stats: "📊",
18
+ }.freeze
19
+
20
+ COLORS = {
21
+ # Default actions
22
+ default: :reset,
23
+ info: :cyan,
24
+ success: :green,
25
+ error: :bright_red,
26
+ warn: :yellow,
27
+
28
+ # Processing actions
29
+ start: :bright_cyan,
30
+ processing: [:dim, :bright_white],
31
+ finish: :bright_magenta,
32
+
33
+ # Export & stats actions
34
+ exported: :bright_green,
35
+ skipped: :bright_white,
36
+ stats: [:bold, :underline, :bright_white],
37
+
38
+ # Trace data actions
39
+ trace_indent: :dim,
40
+ trace_depth: :blue,
41
+ trace_depth_prefix: [:dim, :italic, :blue],
42
+ trace_depth_open: [:dim, :bright_blue],
43
+ trace_depth_value: :bright_red,
44
+ trace_depth_close: [:dim, :bright_blue],
45
+ trace_method_name: :bright_cyan,
46
+ trace_method_class: :bright_green,
47
+ trace_method_sign: :blue,
48
+ trace_method_action: [:bold, :bright_cyan],
49
+ trace_source_location: [:dim, :bright_white],
50
+ trace_params_key: :bright_yellow,
51
+ trace_params_value: [:dim, :bright_yellow],
52
+ trace_result_prefix: [:italic, :bright_blue],
53
+ trace_result_value: :bright_white,
54
+ trace_execution_time: [:dim, :bright_red],
55
+ }.freeze
56
+
57
+ class << self
58
+ def emojis
59
+ EMOJIS
60
+ end
61
+
62
+ def colors
63
+ COLORS
64
+ end
65
+
66
+ def keys
67
+ colors.keys
68
+ end
69
+
70
+ def emoji_for(action)
71
+ EMOJIS.fetch(action, EMOJIS[:default])
72
+ end
73
+
74
+ def source_colors
75
+ Defaults.action_colors || COLORS
76
+ end
77
+
78
+ def colors_for(action)
79
+ Array(source_colors.fetch(action, source_colors[:default]))
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TraceViz
4
+ module Defaults
5
+ class Colors
6
+ COLORS = {
7
+ reset: "\e[0m",
8
+ bold: "\e[1m",
9
+ dim: "\e[2m",
10
+ italic: "\e[3m",
11
+ underline: "\e[4m",
12
+ reverse: "\e[7m",
13
+ hidden: "\e[8m",
14
+ strikethrough: "\e[9m",
15
+ }
16
+
17
+ # Reference ASCII color codes
18
+ # https://talyian.github.io/ansicolors/
19
+
20
+ # Map 256-color ANSI codes
21
+ (0..255).each do |i|
22
+ COLORS["color_#{i}".to_sym] = "\e[38;5;#{i}m"
23
+ end
24
+
25
+ # To add background colors
26
+ (0..255).each do |i|
27
+ COLORS["bg_color_#{i}".to_sym] = "\e[48;5;#{i}m"
28
+ end
29
+
30
+ # Predefined names
31
+ COLORS.merge!({
32
+ black: "\e[30m",
33
+ red: "\e[31m",
34
+ green: "\e[32m",
35
+ yellow: "\e[33m",
36
+ blue: "\e[34m",
37
+ magenta: "\e[35m",
38
+ cyan: "\e[36m",
39
+ white: "\e[37m",
40
+ bright_black: "\e[90m",
41
+ bright_red: "\e[91m",
42
+ bright_green: "\e[92m",
43
+ bright_yellow: "\e[93m",
44
+ bright_blue: "\e[94m",
45
+ bright_magenta: "\e[95m",
46
+ bright_cyan: "\e[96m",
47
+ bright_white: "\e[97m",
48
+ })
49
+
50
+ class << self
51
+ def all
52
+ COLORS
53
+ end
54
+
55
+ def fetch(color)
56
+ COLORS.fetch(color, COLORS[:reset])
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TraceViz
4
+ module Defaults
5
+ class Config
6
+ DEFAULTS = {
7
+ general: {
8
+ tab_size: 2,
9
+ mode: :summary, # :summary, :verbose
10
+ group_keys: [:event, :klass, :action],
11
+ show_indent: true,
12
+ show_depth: true,
13
+ max_display_depth: 3,
14
+ show_method_name: true,
15
+ },
16
+ source_location: {
17
+ show: false,
18
+ truncate_length: 100,
19
+ },
20
+ params: {
21
+ show: true,
22
+ mode: :name_and_value,
23
+ truncate_values: 10,
24
+ },
25
+ result: {
26
+ show: true,
27
+ truncate_length: 50,
28
+ },
29
+ execution: {
30
+ show_time: true,
31
+ show_trace_events: [:call, :return],
32
+ },
33
+ filters: [
34
+ :exclude_internal_call,
35
+ # :exclude_default_classes,
36
+ # :exclude_rails_framework,
37
+ # include_classes: {
38
+ # classes: [],
39
+ # },
40
+ # exclude_classes: {
41
+ # classes: [],
42
+ # },
43
+ # include_gems: {
44
+ # app_running: true,
45
+ # app_path: Dir.pwd,
46
+ # gems: [],
47
+ # },
48
+ # exclude_gems: {
49
+ # gems: [],
50
+ # },
51
+ ],
52
+ log: {
53
+ enabled: true,
54
+ runtime: false,
55
+ post_collection: true,
56
+ stats: true,
57
+ },
58
+ export: {
59
+ enabled: true,
60
+ path: "tmp",
61
+ format: :txt,
62
+ overwrite: false,
63
+ },
64
+ }.freeze
65
+
66
+ class << self
67
+ def fetch
68
+ DEFAULTS.dup
69
+ end
70
+
71
+ def valid_param_modes
72
+ [:name_and_value, :name_only, :value_only].freeze
73
+ end
74
+
75
+ def valid_param_mode?(mode)
76
+ valid_param_modes.include?(mode)
77
+ end
78
+
79
+ def valid_export_formats
80
+ [:txt, :json, :yaml].freeze
81
+ end
82
+
83
+ def valid_export_format?(format)
84
+ valid_export_formats.include?(format)
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TraceViz
4
+ module Defaults
5
+ class Themes
6
+ SOLARIZED = {
7
+ base03: :color_234,
8
+ base02: :color_235,
9
+ base01: :color_240,
10
+ base00: :color_241,
11
+ base0: :color_244,
12
+ base1: :color_245,
13
+ base2: :color_254,
14
+ base3: :color_230,
15
+ yellow: :color_136,
16
+ orange: :color_166,
17
+ red: :color_160,
18
+ magenta: :color_125,
19
+ violet: :color_61,
20
+ blue: :color_33,
21
+ cyan: :color_37,
22
+ green: :color_64,
23
+ }.freeze
24
+
25
+ class << self
26
+ def solarized
27
+ SOLARIZED
28
+ end
29
+
30
+ def apply_solarized_theme
31
+ colors = {
32
+ default: SOLARIZED[:base0],
33
+ info: SOLARIZED[:blue],
34
+ success: SOLARIZED[:green],
35
+ error: SOLARIZED[:red],
36
+ warn: SOLARIZED[:yellow],
37
+ start: SOLARIZED[:blue],
38
+ processing: SOLARIZED[:base01],
39
+ finish: SOLARIZED[:magenta],
40
+ exported: SOLARIZED[:green],
41
+ skipped: SOLARIZED[:base01],
42
+ stats: [:bold, :underline, SOLARIZED[:base2]],
43
+ trace_indent: SOLARIZED[:base03],
44
+ trace_depth: SOLARIZED[:blue],
45
+ trace_depth_prefix: [:italic, SOLARIZED[:base02]],
46
+ trace_depth_open: SOLARIZED[:base02],
47
+ trace_depth_value: SOLARIZED[:red],
48
+ trace_depth_close: SOLARIZED[:base03],
49
+ trace_method_name: SOLARIZED[:cyan],
50
+ trace_method_class: [:bold, SOLARIZED[:green]],
51
+ trace_method_sign: SOLARIZED[:violet],
52
+ trace_method_action: [:bold, SOLARIZED[:blue]],
53
+ trace_source_location: SOLARIZED[:base01],
54
+ trace_params_key: SOLARIZED[:orange],
55
+ trace_params_value: SOLARIZED[:base00],
56
+ trace_result_prefix: SOLARIZED[:base1],
57
+ trace_result_value: SOLARIZED[:base3],
58
+ trace_execution_time: SOLARIZED[:cyan],
59
+ }
60
+
61
+ Defaults.action_colors = colors
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end