trace-util-adv 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Advanced TraceUtils tutorial.pdf +0 -0
- data/CHANGELOG +4 -8
- data/{lib/TODO.txt → TODO.txt} +8 -0
- data/VERSION +1 -1
- data/lib/action_handler/action_handler.rb +40 -0
- data/lib/{action_handler.rb → action_handler/action_handler_registration.rb} +3 -41
- data/lib/appenders/appender.rb +1 -13
- data/lib/appenders/appender_mappings.rb +13 -0
- data/lib/appenders/base_appender.rb +2 -11
- data/lib/appenders/file_appender.rb +21 -13
- data/lib/appenders/include.rb +4 -0
- data/lib/appenders/types/README-NOTE.txt +2 -0
- data/lib/appenders/{html_appender.rb → types/html_appender.rb} +4 -20
- data/lib/appenders/{logger_appender.rb → types/logger_appender.rb} +0 -0
- data/lib/appenders/{stream_appender.rb → types/stream_appender.rb} +0 -0
- data/lib/appenders/{template_log_appender.rb → types/template_log_appender.rb} +0 -0
- data/lib/appenders/{xml_appender.rb → types/xml_appender.rb} +1 -1
- data/lib/extensions/array_extensions.rb +42 -0
- data/lib/extensions/hash_extensions.rb +181 -0
- data/lib/extensions/hash_rule_extensions.rb +50 -0
- data/lib/extensions/include.rb +1 -0
- data/lib/extensions/nilclass_extensions.rb +10 -0
- data/lib/extensions/object_extensions.rb +19 -0
- data/lib/extensions/string_extensions.rb +35 -0
- data/lib/extensions/symbol_extensions.rb +30 -0
- data/lib/filters/composite/composite_class_filter.rb +25 -0
- data/lib/filters/composite/composite_module_filter.rb +53 -0
- data/lib/filters/executor/filter_exec.rb +74 -0
- data/lib/filters/filter.rb +43 -0
- data/lib/filters/filter_factory.rb +1 -1
- data/lib/filters/filter_mappings.rb +36 -0
- data/lib/filters/{tracing_filter.rb → filter_registration.rb} +6 -49
- data/lib/filters/filter_use.rb +10 -0
- data/lib/filters/include.rb +8 -0
- data/lib/filters/list/README-NOTE.txt +1 -0
- data/lib/filters/list/list_instance_var_filter.rb +27 -0
- data/lib/filters/{message_filters.rb → msg_context/message_context_filters.rb} +3 -12
- data/lib/filters/simple/argument_filter.rb +24 -0
- data/lib/filters/simple/class_filter.rb +15 -0
- data/lib/filters/simple/instance_var_filter.rb +25 -0
- data/lib/filters/simple/method_filter.rb +17 -0
- data/lib/filters/simple/module_filter.rb +14 -0
- data/lib/{templates/trace_output_handler.rb → output_handler/output_handler.rb} +0 -0
- data/lib/rules/rule_mappings.rb +10 -0
- data/lib/{rule_match.rb → rules/rule_match.rb} +5 -3
- data/lib/targets/README-NOTE.txt +2 -0
- data/lib/targets/file_target.rb +65 -0
- data/lib/targets/stream_target.rb +9 -0
- data/lib/targets/string_target.rb +9 -0
- data/lib/templates/base_template.rb +3 -2
- data/lib/templates/html_template.rb +1 -2
- data/lib/templates/include.rb +2 -0
- data/lib/templates/string_template.rb +24 -25
- data/lib/templates/template_mappings.rb +10 -0
- data/lib/templates/xml_template.rb +28 -29
- data/lib/trace-util-adv.rb +24 -4
- data/lib/{trace_calls.rb → trace_calls/trace_calls.rb} +0 -0
- data/lib/trace_calls/trace_configuration.rb +29 -0
- data/lib/{trace_ext.rb → trace_calls/trace_ext.rb} +10 -9
- data/test/{test_action_handler.rb → action_handler/test_action_handler.rb} +1 -5
- data/test/action_handler/test_create_action_handler.rb +31 -0
- data/test/appenders/test_appender_filters.rb +0 -0
- data/test/appenders/test_appender_tracers.rb +56 -0
- data/test/appenders/test_create_appender.rb +49 -0
- data/test/{test_html_appender.rb → appenders/test_html_appender.rb} +3 -7
- data/test/appenders/test_stream_appender.rb +41 -0
- data/test/appenders/test_template_log_appender.rb +18 -0
- data/test/{test_xml_appender.rb → appenders/test_xml_appender.rb} +0 -0
- data/test/extensions/test_filters_creation.rb +36 -0
- data/test/extensions/test_hash_extensions.rb +208 -0
- data/test/extensions/test_hash_filter_extensions.rb +65 -0
- data/test/extensions/test_set_context.rb +94 -0
- data/test/extensions/test_string_extensions.rb +55 -0
- data/test/extensions/test_symbol_extensions.rb +35 -0
- data/test/{test_filters_chain.rb → filters/chain/test_filters_chain.rb} +2 -1
- data/test/filters/composite/test_composite_class_filter.rb +78 -0
- data/test/filters/composite/test_composite_module_filter.rb +82 -0
- data/test/filters/composite/test_composite_var_filter.rb +103 -0
- data/test/filters/executor/test_filter_exec.rb +80 -0
- data/test/filters/msg_context/test_custom_filters.rb +54 -0
- data/test/filters/simple/test_base_filter.rb +56 -0
- data/test/filters/simple/test_class_filter.rb +75 -0
- data/test/filters/simple/test_instancevar_filter.rb +82 -0
- data/test/filters/simple/test_method_filter.rb +77 -0
- data/test/filters/simple/test_module_filter.rb +63 -0
- data/test/samples/include.rb +1 -0
- data/test/samples/sample_classes.rb +23 -0
- data/test/samples/sample_composite_filters.rb +50 -0
- data/test/samples/sample_filters.rb +58 -0
- data/test/sandbox/matcher.rb +7 -0
- data/test/sandbox/sandbox.rb +25 -0
- data/test/{test_xml_gen.rb → sandbox/test_xml_gen.rb} +0 -0
- data/test/trace_calls/test_configure_.rb +70 -0
- data/test/trace_calls/tracing/test_html_tracing.rb +20 -0
- data/test/trace_calls/tracing/test_logger_tracing.rb +18 -0
- data/test/trace_calls/tracing/test_stream_tracing.rb +17 -0
- data/test/trace_calls/tracing/test_teamplate_log_tracing.rb +18 -0
- data/test/trace_calls/tracing/test_xml_tracing.rb +18 -0
- data/test/tracers/test_create_tracers.rb +46 -0
- data/test/tracers/test_exec_tracers.rb +11 -0
- data/trace-util-adv.gemspec +91 -32
- metadata +91 -32
- data/lib/core_extensions.rb +0 -101
- data/lib/filters/base_filters.rb +0 -178
- data/lib/filters/composite_filters.rb +0 -71
- data/lib/output_templates.rb +0 -5
- data/lib/sample_filters.rb +0 -97
- data/lib/trace_appenders.rb +0 -9
- data/lib/trace_filters.rb +0 -4
- data/test/test_appender.rb +0 -29
- data/test/test_file_appender.rb +0 -32
- data/test/test_filters.rb +0 -112
- data/test/test_filters_create.rb +0 -28
- data/test/test_special_filters.rb +0 -78
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
|
1
|
+
13-Nov-2009
|
2
2
|
==========
|
3
|
-
*
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
* improved README documentation
|
8
|
-
|
9
|
-
NOTE: Framework has become overly complex - simplify, and refactor next week!
|
3
|
+
* Test cases for basic and composite filters all pass
|
4
|
+
* Created new filter: ArgumentsFilter
|
5
|
+
* Major refactoring!
|
data/{lib/TODO.txt → TODO.txt}
RENAMED
@@ -1,4 +1,12 @@
|
|
1
1
|
TODO:
|
2
|
+
----
|
3
|
+
- Unit tests for appenders. action_handler
|
4
|
+
- require txt_file_mutator
|
5
|
+
|
6
|
+
---
|
7
|
+
Add time to context for before- and after handle calls. Enable tracing time output
|
8
|
+
Allow for comparing time it takes to complete method and act upon it!
|
9
|
+
Store method with come context on stack, to allow look up to compare with previous calls. Perhaps find average time it took to call this method etc.
|
2
10
|
|
3
11
|
Support Intrusive trace statements
|
4
12
|
----------------------------------
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Dir.glob(File.join(File.dirname(__FILE__), '**/*.rb')).each {|f| require f }
|
2
|
+
|
3
|
+
module Tracing
|
4
|
+
class ActionHandler
|
5
|
+
# supports:
|
6
|
+
# - Filter registration and execution
|
7
|
+
# - Appender registration
|
8
|
+
include Tracing::FilterUse
|
9
|
+
include Tracing::Appender::Registration
|
10
|
+
|
11
|
+
# register filters and appenders
|
12
|
+
def initialize(init_options)
|
13
|
+
register_filters(init_options.filters)
|
14
|
+
register_appenders(init_options.appenders)
|
15
|
+
end
|
16
|
+
|
17
|
+
# action for tracelogs that pass the filters
|
18
|
+
# by default send to all appenders for further processing!
|
19
|
+
def handle_allow(txt, context)
|
20
|
+
appenders.each do |appender|
|
21
|
+
appender.handle(txt, context)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# action for tracelogs that DO NOT pass the filters
|
26
|
+
def handle_not_allow(txt, context)
|
27
|
+
end
|
28
|
+
|
29
|
+
# handle tracelogs by applying filters and action handler methods
|
30
|
+
def handle(txt, context)
|
31
|
+
if filters_allow?(txt, context)
|
32
|
+
# puts "handle_allow: " + context[:method_name]
|
33
|
+
handle_allow(txt, context)
|
34
|
+
else
|
35
|
+
# puts "handle_not_allow: " + context[:method_name]
|
36
|
+
handle_not_allow(txt, context)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end # class
|
40
|
+
end # module
|
@@ -1,14 +1,5 @@
|
|
1
|
-
require 'filters/tracing_filter'
|
2
|
-
require 'trace_appenders'
|
3
|
-
|
4
1
|
module Tracing
|
5
2
|
class ActionHandler
|
6
|
-
include Tracing::Filter::Registration
|
7
|
-
include Tracing::Filter::Exec
|
8
|
-
include Tracing::Appender::Registration
|
9
|
-
|
10
|
-
attr_accessor :filters
|
11
|
-
|
12
3
|
# enable registration of action handlers
|
13
4
|
module Registration
|
14
5
|
attr_accessor :action_handlers
|
@@ -44,7 +35,7 @@ module Tracing
|
|
44
35
|
reg_action_handlers
|
45
36
|
end
|
46
37
|
end
|
47
|
-
|
38
|
+
|
48
39
|
def create_action_handler(options)
|
49
40
|
if options.kind_of? Tracing::ActionHandler
|
50
41
|
options
|
@@ -66,34 +57,5 @@ module Tracing
|
|
66
57
|
@action_handlers << new_action_handlers
|
67
58
|
end
|
68
59
|
end
|
69
|
-
|
70
|
-
|
71
|
-
def initialize(init_options)
|
72
|
-
register_filters(init_options[:filters])
|
73
|
-
register_appenders(init_options[:appenders] || init_options)
|
74
|
-
end
|
75
|
-
|
76
|
-
# action for tracelogs that pass the filters
|
77
|
-
# by default send to all appenders for further processing!
|
78
|
-
def handle_allow(txt, context)
|
79
|
-
appenders.each do |appender|
|
80
|
-
appender.handle(txt, context)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
# action for tracelogs that DO NOT pass the filters
|
85
|
-
def handle_not_allow(txt, context)
|
86
|
-
end
|
87
|
-
|
88
|
-
# handle tracelogs by applying filters and action handler methods
|
89
|
-
def handle(txt, context)
|
90
|
-
if filters_allow?(txt, context)
|
91
|
-
# puts "handle_allow: " + context[:method_name]
|
92
|
-
handle_allow(txt, context)
|
93
|
-
else
|
94
|
-
# puts "handle_not_allow: " + context[:method_name]
|
95
|
-
handle_not_allow(txt, context)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end # class
|
99
|
-
end # module
|
60
|
+
end
|
61
|
+
end
|
data/lib/appenders/appender.rb
CHANGED
@@ -6,21 +6,9 @@ module Tracing
|
|
6
6
|
# array of Appender instances
|
7
7
|
attr_accessor :appender_mappings
|
8
8
|
|
9
|
-
# used to help construct/register Appender instances using convenience symbols
|
10
|
-
def default_appender_mappings
|
11
|
-
{
|
12
|
-
:logger => Tracing::LoggerAppender,
|
13
|
-
:stream => Tracing::StreamAppender,
|
14
|
-
:xml => Tracing::XmlAppender,
|
15
|
-
:html => Tracing::HtmlAppender,
|
16
|
-
:template => Tracing::TemplateLogAppender,
|
17
|
-
:default => Tracing::StreamAppender
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
9
|
def register_default_mappings
|
22
10
|
@appender_mappings ||= {}
|
23
|
-
@appender_mappings.merge!(default_appender_mappings)
|
11
|
+
@appender_mappings.merge!(Mappings.default_appender_mappings)
|
24
12
|
end
|
25
13
|
|
26
14
|
def register_appender_mappings(_appender_mappings)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module AppenderMappings
|
2
|
+
# used to help construct/register Appender instances using convenience symbols
|
3
|
+
def self.defaults
|
4
|
+
{
|
5
|
+
:logger => Tracing::LoggerAppender,
|
6
|
+
:stream => Tracing::StreamAppender,
|
7
|
+
:xml => Tracing::XmlAppender,
|
8
|
+
:html => Tracing::HtmlAppender,
|
9
|
+
:template => Tracing::TemplateLogAppender,
|
10
|
+
:default => Tracing::StreamAppender
|
11
|
+
}
|
12
|
+
end
|
13
|
+
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
module Tracing
|
2
2
|
# base appender (abstract)
|
3
3
|
class BaseAppender
|
4
|
-
include Tracing::
|
5
|
-
include Tracing::Filter::Exec
|
4
|
+
include Tracing::FilterUse
|
6
5
|
|
7
6
|
attr_accessor :options
|
8
7
|
attr_reader :tracer
|
@@ -10,17 +9,9 @@ module Tracing
|
|
10
9
|
class << self
|
11
10
|
attr_accessor :tracers
|
12
11
|
|
13
|
-
def default_tracers
|
14
|
-
{
|
15
|
-
:string => Tracing::OutputTemplate::StringTrace,
|
16
|
-
:xml => Tracing::OutputTemplate::XmlTrace,
|
17
|
-
:html => Tracing::OutputTemplate::HtmlTrace,
|
18
|
-
:default => Tracing::OutputTemplate::StringTrace
|
19
|
-
}
|
20
|
-
end
|
21
12
|
|
22
13
|
def register_tracers(tracers = nil)
|
23
|
-
@tracers ||= default_tracers
|
14
|
+
@tracers ||= {} # default_tracers
|
24
15
|
@tracers = @tracers.merge!(tracers || {})
|
25
16
|
end
|
26
17
|
|
@@ -1,19 +1,26 @@
|
|
1
|
+
module Tracing
|
2
|
+
module DefaultPath
|
3
|
+
def default_path
|
4
|
+
return if !@default_path
|
5
|
+
if !File.exists?(@default_path)
|
6
|
+
FileUtils.mkdir_p @default_path
|
7
|
+
end
|
8
|
+
@default_path
|
9
|
+
end
|
10
|
+
|
11
|
+
def default_path=(path)
|
12
|
+
@default_path = path
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
1
18
|
module Tracing
|
2
19
|
# File Appender
|
3
20
|
class FileAppender < BaseAppender
|
4
|
-
|
21
|
+
include Tracing::DefaultPath
|
5
22
|
class << self
|
6
|
-
|
7
|
-
return if !@default_path
|
8
|
-
if !File.exists?(@default_path)
|
9
|
-
FileUtils.mkdir_p @default_path
|
10
|
-
end
|
11
|
-
@default_path
|
12
|
-
end
|
13
|
-
|
14
|
-
def default_path=(path)
|
15
|
-
@default_path = path
|
16
|
-
end
|
23
|
+
include Tracing::DefaultPath
|
17
24
|
end
|
18
25
|
|
19
26
|
# file
|
@@ -49,7 +56,8 @@ module Tracing
|
|
49
56
|
end
|
50
57
|
|
51
58
|
def file_path(file)
|
52
|
-
|
59
|
+
def_path = default_path || self.class.default_path
|
60
|
+
file = File.join(def_path, file) if self.class.default_path
|
53
61
|
end
|
54
62
|
|
55
63
|
protected
|
@@ -1,27 +1,7 @@
|
|
1
|
-
# surround html ouput with wrapper-html
|
2
|
-
# include jquery and css
|
3
|
-
# collapse non-important regions and expand important ones
|
4
|
-
|
5
|
-
# TODO: how to ensure html ouput finishes
|
6
|
-
# file.seek(-20, IO:SEEK_END)
|
7
1
|
module Tracing
|
8
2
|
class HtmlAppender < FileAppender
|
9
3
|
attr_accessor :to_file, :html_output
|
10
4
|
|
11
|
-
class << self
|
12
|
-
def default_path
|
13
|
-
return if !@default_path
|
14
|
-
if !File.exists?(@default_path)
|
15
|
-
FileUtils.mkdir_p @default_path
|
16
|
-
end
|
17
|
-
@default_path
|
18
|
-
end
|
19
|
-
|
20
|
-
def default_path=(path)
|
21
|
-
@default_path = path
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
5
|
def initialize(init_options = nil)
|
26
6
|
@tracer = Tracing::OutputTemplate::HtmlTrace.new
|
27
7
|
super(init_options)
|
@@ -30,6 +10,10 @@ module Tracing
|
|
30
10
|
return if !init_options
|
31
11
|
# write to file
|
32
12
|
@to_file = init_options[:to_file]
|
13
|
+
|
14
|
+
# override default path for class
|
15
|
+
@default_path = init_options[:default_path]
|
16
|
+
|
33
17
|
if @to_file
|
34
18
|
write_wrap_file(to_file)
|
35
19
|
else
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Array
|
2
|
+
include Tracing::RuleMatch
|
3
|
+
|
4
|
+
def add(obj)
|
5
|
+
self << obj
|
6
|
+
self.flatten!
|
7
|
+
self.compact! if self
|
8
|
+
end
|
9
|
+
|
10
|
+
def rule_list
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
# iterate and return filters array
|
15
|
+
def filters
|
16
|
+
_filters = []
|
17
|
+
self.each do |_filter|
|
18
|
+
_filters.add(_filter.filters)
|
19
|
+
end
|
20
|
+
_filters
|
21
|
+
end
|
22
|
+
|
23
|
+
# iterate and return action_handlers array
|
24
|
+
def action_handlers
|
25
|
+
_action_handlers = []
|
26
|
+
self.each do |_action_handler|
|
27
|
+
_action_handlers.add(_action_handler.action_handlers)
|
28
|
+
end
|
29
|
+
_action_handlers
|
30
|
+
end
|
31
|
+
|
32
|
+
# iterate and return action_handlers array
|
33
|
+
def appenders
|
34
|
+
_appenders = []
|
35
|
+
self.each do |_appender|
|
36
|
+
_appenders.add(_appender.appenders)
|
37
|
+
end
|
38
|
+
_appenders
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
class Hash
|
2
|
+
|
3
|
+
def context
|
4
|
+
modules = self[:modules]
|
5
|
+
cls_name = self[:class_name]
|
6
|
+
method_name = self[:method_name]
|
7
|
+
self[:modules] = cls_name.modules if cls_name && !modules
|
8
|
+
self[:class_name] = cls_name.class_name if cls_name
|
9
|
+
calculate_full_names
|
10
|
+
end
|
11
|
+
|
12
|
+
def method_name=(name)
|
13
|
+
self[:method_name] = name
|
14
|
+
calculate_full_method_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def result=(res)
|
18
|
+
self[:result] = res
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def set_context(hash)
|
23
|
+
modules = hash[:modules]
|
24
|
+
cls_name = hash[:class_name]
|
25
|
+
method_name = hash[:method_name]
|
26
|
+
args = hash[:args]
|
27
|
+
vars = hash[:vars]
|
28
|
+
self[:modules] = cls_name.modules if cls_name
|
29
|
+
self[:modules] = modules if modules
|
30
|
+
|
31
|
+
self[:class_name] = cls_name.class_name if cls_name
|
32
|
+
self[:method_name] = method_name if method_name
|
33
|
+
self[:args] = args if args
|
34
|
+
self[:vars] = vars if vars
|
35
|
+
|
36
|
+
calculate_full_names
|
37
|
+
end
|
38
|
+
|
39
|
+
def full_modules_name
|
40
|
+
self[:modules].join("::") if self[:modules]
|
41
|
+
end
|
42
|
+
|
43
|
+
def full_class_name
|
44
|
+
mod_name = self.full_modules_name
|
45
|
+
name = self[:class_name]
|
46
|
+
name = "#{mod_name}::#{name}" if !mod_name.blank?
|
47
|
+
end
|
48
|
+
|
49
|
+
def full_method_name
|
50
|
+
cls_name = self.full_class_name
|
51
|
+
name = self[:method_name]
|
52
|
+
name = "#{cls_name}.#{name}" if !cls_name.blank?
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
def configuration
|
57
|
+
Tracing::Configuration.new(self)
|
58
|
+
end
|
59
|
+
|
60
|
+
def final_yield_action
|
61
|
+
self[:final_yield_action] || :include
|
62
|
+
end
|
63
|
+
|
64
|
+
# return filter
|
65
|
+
def filters
|
66
|
+
filter_list = self[:filters]
|
67
|
+
# puts "filter_list: #{filter_list.inspect}"
|
68
|
+
if filter_list
|
69
|
+
filter_list.filters
|
70
|
+
else
|
71
|
+
# puts "create filter from: #{self.inspect}"
|
72
|
+
x = self.create_filter
|
73
|
+
# puts "created filter: #{x.inspect}"
|
74
|
+
x
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# return action_handler
|
79
|
+
def action_handlers
|
80
|
+
action_handler_list = self[:action_handlers]
|
81
|
+
if action_handler_list
|
82
|
+
action_handler_list.action_handlers
|
83
|
+
else
|
84
|
+
Tracing::ActionHandler.new(self)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# return action_handler
|
89
|
+
def appenders
|
90
|
+
appender_list = self[:appenders]
|
91
|
+
appender_list.appenders
|
92
|
+
end
|
93
|
+
|
94
|
+
# return tracer
|
95
|
+
def tracer
|
96
|
+
tracer_key = self[:tracer]
|
97
|
+
tracer_class = Mappings.default_tracer_mappings[tracer_key]
|
98
|
+
tracer_class.new
|
99
|
+
end
|
100
|
+
|
101
|
+
def create_filter
|
102
|
+
return self.filters if self[:filters]
|
103
|
+
hash = self.create_filter_hash || self
|
104
|
+
if hash
|
105
|
+
filter_class = hash.filter_class
|
106
|
+
# puts "hash: #{hash.inspect} -> class: #{filter_class}"
|
107
|
+
return filter_class.new(hash) if filter_class
|
108
|
+
end
|
109
|
+
nil
|
110
|
+
end
|
111
|
+
|
112
|
+
def create_filter_hash
|
113
|
+
# puts "TRY create_filter: " + name_hash.inspect
|
114
|
+
[:module_filter, :class_filter, :method_filter, :vars_filter].each do |symbol|
|
115
|
+
# puts "symbol:" + symbol.to_s
|
116
|
+
res = self.try_create_filter_hash(symbol)
|
117
|
+
# puts "Filter created:" + res.inspect
|
118
|
+
return res if res
|
119
|
+
end
|
120
|
+
# puts "no filter could be created :("
|
121
|
+
nil
|
122
|
+
end
|
123
|
+
|
124
|
+
def try_create_filter_hash(symbol)
|
125
|
+
_symbol = has_any_prefix(symbol)
|
126
|
+
puts _symbol.inspect
|
127
|
+
return if !_symbol
|
128
|
+
|
129
|
+
prefix = _symbol[:prefix]
|
130
|
+
filter_sym = _symbol[:filter_symbol]
|
131
|
+
#
|
132
|
+
filter_names = self[filter_sym]
|
133
|
+
#
|
134
|
+
rule_symbol = prefix.to_sym.rule
|
135
|
+
{symbol => {rule_symbol => filter_names}}
|
136
|
+
end
|
137
|
+
|
138
|
+
def map(key)
|
139
|
+
clazz = self[key]
|
140
|
+
return clazz if clazz
|
141
|
+
self[:default]
|
142
|
+
end
|
143
|
+
|
144
|
+
def filter_class
|
145
|
+
Mappings.convenience_map.select do |key, _filter|
|
146
|
+
return _filter.filter_class if self.has_key?(key) || self.has_key?(_filter)
|
147
|
+
end
|
148
|
+
Mappings.filter_rule_mappings.select do |key, _filter|
|
149
|
+
return _filter.filter_class if self.has_key? key
|
150
|
+
end
|
151
|
+
nil
|
152
|
+
end
|
153
|
+
|
154
|
+
protected
|
155
|
+
|
156
|
+
def calculate_full_names
|
157
|
+
self[:full_modules_name] = full_modules_name
|
158
|
+
self[:full_class_name] = full_class_name
|
159
|
+
calculate_full_method_name
|
160
|
+
end
|
161
|
+
|
162
|
+
def calculate_full_method_name
|
163
|
+
self[:full_method_name] = full_method_name
|
164
|
+
end
|
165
|
+
|
166
|
+
def has_prefix(symbol, prefix)
|
167
|
+
sym = symbol.prefix(prefix)
|
168
|
+
self.has_key?(sym) ? {:filter_symbol => sym, :prefix => prefix} : false
|
169
|
+
end
|
170
|
+
|
171
|
+
def has_any_prefix(symbol)
|
172
|
+
['iy', 'xy', 'i', 'x'].each do |prefix|
|
173
|
+
hash_result = has_prefix(symbol, prefix)
|
174
|
+
return hash_result if hash_result
|
175
|
+
end
|
176
|
+
false
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
|
181
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class Hash
|
2
|
+
include Tracing::RuleMatch
|
3
|
+
|
4
|
+
def rules_allow_action(name)
|
5
|
+
rule_allow_action(name)
|
6
|
+
end
|
7
|
+
|
8
|
+
def rule_list
|
9
|
+
rules
|
10
|
+
end
|
11
|
+
|
12
|
+
# return a symbol, either - :include, :exclude or :exclude_and_yield, :include_and_yield or :yield (let next filter decide)
|
13
|
+
def rule_allow_action(name)
|
14
|
+
include_rules = self[:include].rule_list
|
15
|
+
if !include_rules.blank?
|
16
|
+
# puts "Rule include"
|
17
|
+
res = include_rules.matches_any?(name)
|
18
|
+
return :include if res
|
19
|
+
end
|
20
|
+
exclude_rules = self[:exclude].rule_list
|
21
|
+
if !exclude_rules.blank?
|
22
|
+
# puts "Rule exclude"
|
23
|
+
return :exclude if exclude_rules.matches_any?(name)
|
24
|
+
end
|
25
|
+
|
26
|
+
rules = self[:exclude_and_yield].rule_list
|
27
|
+
if !rules.blank?
|
28
|
+
# puts "Rule exclude"
|
29
|
+
return :exclude_and_yield if rules.matches_any?(name)
|
30
|
+
end
|
31
|
+
|
32
|
+
rules = self[:include_and_yield].rule_list
|
33
|
+
if !rules.blank?
|
34
|
+
# puts "Rule exclude"
|
35
|
+
return :include_and_yield if rules.matches_any?(name)
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
# puts "Not included or excluded"
|
40
|
+
if !self[:default].nil?
|
41
|
+
# puts "Return default: #{self[:default]}"
|
42
|
+
return self[:default]
|
43
|
+
end
|
44
|
+
# puts "Rule yields"
|
45
|
+
return :yield
|
46
|
+
rescue RuleTypeError
|
47
|
+
# puts "error"
|
48
|
+
return :exclude
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Dir.glob(File.join(File.dirname(__FILE__), '**/*.rb')).each {|f| require f }
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class String
|
2
|
+
def modules
|
3
|
+
self.split("::")[0..-2]
|
4
|
+
end
|
5
|
+
|
6
|
+
def class_name
|
7
|
+
name = self.split("::")[-1..-1]
|
8
|
+
name = name[0] if name.kind_of? Array
|
9
|
+
name
|
10
|
+
end
|
11
|
+
|
12
|
+
def in_module?(module_name)
|
13
|
+
modules = self.modules
|
14
|
+
modules.include?(module_name)
|
15
|
+
end
|
16
|
+
|
17
|
+
def rule_list
|
18
|
+
self.split_names
|
19
|
+
end
|
20
|
+
|
21
|
+
def split_names
|
22
|
+
if self.include?(",")
|
23
|
+
s = self.gsub(/\s/, '')
|
24
|
+
s.split(",") if s
|
25
|
+
else
|
26
|
+
self.split(" ")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# return name matching rules as array
|
31
|
+
# split " ", ","
|
32
|
+
def rules
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Symbol
|
2
|
+
def prefix(pre)
|
3
|
+
(pre.to_s + '_' + self.to_s).to_sym
|
4
|
+
end
|
5
|
+
|
6
|
+
def filter_class
|
7
|
+
mapper = Mappings.default_filters
|
8
|
+
mapper.map(self)
|
9
|
+
end
|
10
|
+
|
11
|
+
def trace_class
|
12
|
+
mapper = Mappings::default_tracer_mappings
|
13
|
+
mapper.map(self)
|
14
|
+
end
|
15
|
+
|
16
|
+
def appender_class
|
17
|
+
mapper = Mappings::default_appender_mappings
|
18
|
+
mapper.map(self)
|
19
|
+
end
|
20
|
+
|
21
|
+
def rule
|
22
|
+
mapper = Mappings::rule_symbol_mappings
|
23
|
+
mapper.map(self)
|
24
|
+
end
|
25
|
+
|
26
|
+
def appenders
|
27
|
+
self.appender_class.new
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|