Class: CfSim::ControlFieldSetFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/cf_sim/control_field_set_finder.rb

Instance Method Summary collapse

Constructor Details

#initialize(fields, options = {}) ⇒ ControlFieldSetFinder

Returns a new instance of ControlFieldSetFinder.



5
6
7
8
9
10
11
# File 'lib/cf_sim/control_field_set_finder.rb', line 5

def initialize(fields, options = {})
  @fields = CfSim::ControlFieldSet.new(fields.sort_by(&:area).reverse)
  @coexistable_field_map = CfSim::CoexistableFieldMap.new(@fields)
  @limit_field_count = options[:limit_field_count] || nil
  @max_count_control_fields_list = []
  @max_area_control_fields = nil
end

Instance Method Details

#find_max_area_fieldsObject



13
14
15
16
17
# File 'lib/cf_sim/control_field_set_finder.rb', line 13

def find_max_area_fields
  @max_area_control_fields = nil
  find_recursively(CfSim::ControlFieldSet.new, @fields, :max_area)
  @max_area_control_fields
end

#find_max_count_fields_listObject



19
20
21
22
23
24
# File 'lib/cf_sim/control_field_set_finder.rb', line 19

def find_max_count_fields_list
  @max_count_control_fields_list = []
  find_recursively(CfSim::ControlFieldSet.new, @fields, :max_count)
  all_list = @max_count_control_fields_list.sort_by(&:total_area).reverse
  @limit_field_count ? all_list[0...@limit_field_count] : all_list
end