Class: KrakenMobile::FeatureGrouper

Inherits:
Object
  • Object
show all
Defined in:
lib/kraken-mobile/helpers/feature_grouper.rb

Class Method Summary collapse

Class Method Details

.create_file_groups(group_size, files) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/kraken-mobile/helpers/feature_grouper.rb', line 20

def self.create_file_groups group_size, files
  files_per_group = files.size/group_size
  number_of_remaining_files = files.size % group_size
  groups = Array.new(group_size) { []  }
  groups.each do |group|
    files_per_group.times {
      group << files.delete_at(0)
    }
  end
  unless number_of_remaining_files == 0
    groups[0..(number_of_remaining_files-1)].each do |group|
      group << files.delete_at(0)
    end
  end
  groups.reject(&:empty?)
end

.distributed_file_groups(feature_folder, group_size) ⇒ Object

Returns files in feature_folder distributed equally in group size.



7
8
9
10
11
# File 'lib/kraken-mobile/helpers/feature_grouper.rb', line 7

def self.distributed_file_groups(feature_folder, group_size)
  files = feature_files_in_folder feature_folder
  groups = create_file_groups group_size,files
  groups
end

.feature_files_in_folder(feature_dir_or_file) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/kraken-mobile/helpers/feature_grouper.rb', line 37

def self.feature_files_in_folder(feature_dir_or_file)
  if File.directory?(feature_dir_or_file) # Is a folder containing feature files.
    files = Dir[File.join(feature_dir_or_file, "**{,/*/**}/*")].uniq
    files.grep(/\.feature$/)
  elsif feature_dir_or_file.include?('.feature') # Is a feature file.
    [feature_dir_or_file]
  else
    []
  end
end

.file_groups(feature_folder, group_size) ⇒ Object

All groups contains all files in feature_folder



14
15
16
17
18
# File 'lib/kraken-mobile/helpers/feature_grouper.rb', line 14

def self.file_groups(feature_folder, group_size)
  files = feature_files_in_folder feature_folder
  ensure_features_format files
  group_size.times.map { files }
end