Sha256: c7333bab72198e5efdea221c5fca080add8d4430ffa1dcb063cd174d6e5ae690

Contents?: true

Size: 1.51 KB

Versions: 8

Compression:

Stored size: 1.51 KB

Contents

require 'json'
require 'kraken-mobile/helpers/feature_analyzer'

module KrakenMobile
  class FeatureGrouper
    # Returns files in feature_folder distributed equally in group size.
    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

    # All groups contains all files in feature_folder
    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

    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

    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
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
kraken-mobile-1.0.9 lib/kraken-mobile/helpers/feature_grouper.rb
kraken-mobile-1.0.8 lib/kraken-mobile/helpers/feature_grouper.rb
kraken-mobile-1.0.5 lib/kraken-mobile/helpers/feature_grouper.rb
kraken-mobile-1.0.4 lib/kraken-mobile/helpers/feature_grouper.rb
kraken-mobile-1.0.3 lib/kraken-mobile/helpers/feature_grouper.rb
kraken-mobile-1.0.2 lib/kraken-mobile/helpers/feature_grouper.rb
kraken-mobile-1.0.1 lib/kraken-mobile/helpers/feature_grouper.rb
kraken-mobile-1.0.0 lib/kraken-mobile/helpers/feature_grouper.rb