Class: Tengine::Core::DslFilterDef

Inherits:
Object
  • Object
show all
Defined in:
lib/tengine/core/dsl_filter_def.rb

Constant Summary collapse

BRACE_FORMAT =

メソッド名にはカッコが使えないので変わりに表現する方法として(と)をそれぞれs_と_eで表します。

's_%s_e'.freeze
FORMATTERS =
{
  :and => lambda{|event_type_names, filter| "%s_and_%s" % event_type_names },
  :at  => lambda{|event_type_names, filter| "%s_at_%s" % [event_type_names.first, filter['pattern'].to_s] },
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(event_type_names, filter) ⇒ DslFilterDef

Returns a new instance of DslFilterDef.



7
8
9
10
# File 'lib/tengine/core/dsl_filter_def.rb', line 7

def initialize(event_type_names, filter)
  @event_type_names = event_type_names
  @filter = filter
end

Instance Attribute Details

#event_type_namesObject (readonly)

Returns the value of attribute event_type_names.



6
7
8
# File 'lib/tengine/core/dsl_filter_def.rb', line 6

def event_type_names
  @event_type_names
end

#filterObject (readonly)

Returns the value of attribute filter.



5
6
7
# File 'lib/tengine/core/dsl_filter_def.rb', line 5

def filter
  @filter
end

Class Method Details

.new_and(left, right) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/tengine/core/dsl_filter_def.rb', line 27

def new_and(left, right)
  Tengine::Core::DslFilterDef.new(
    [left, right],
    {
      'type' => :and,
      'method' => :and,
      'children' => [
        { 'pattern' => left, 'method' => :find_or_mark_in_session },
        { 'pattern' => right, 'method' => :find_or_mark_in_session },
      ]
    })
end

.new_at(event_type_name, source_pattern) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/tengine/core/dsl_filter_def.rb', line 40

def new_at(event_type_name, source_pattern)
  Tengine::Core::DslFilterDef.new(
    [event_type_name],
    {
      'type' => :at,
      'method' => :match_source_name?,
      'pattern' => source_pattern.to_s,
    })
end

Instance Method Details

#to_method_nameObject



19
20
21
22
23
24
# File 'lib/tengine/core/dsl_filter_def.rb', line 19

def to_method_name
  event_type_name_args =
    event_type_names.map{|obj| obj.is_a?(Tengine::Core::DslFilterDef) ? obj.to_method_name : obj.to_s}
  formatter = FORMATTERS[ filter['type'] ]
  BRACE_FORMAT % formatter.call(event_type_name_args, filter)
end