Sha256: 3604f10f7fd799a733685bcc38d6755492688b3e371833b91e411d8132e3b26c

Contents?: true

Size: 1.52 KB

Versions: 4

Compression:

Stored size: 1.52 KB

Contents

require 'fitting/report/prefix'

module Fitting
  module Report
    class Prefixes
      def initialize(config_path)
        @prefixes = []
        YAML.safe_load(File.read(config_path))['prefixes'].map do |prefix|
          @prefixes.push(
            Fitting::Report::Prefix.new(
              name: prefix['name'],
              openapi2_json_path: prefix['openapi2_json_path'],
              openapi3_yaml_path: prefix['openapi3_yaml_path'],
              drafter_yaml_path: prefix['drafter_yaml_path'],
              tomogram_json_path: prefix['tomogram_json_path'],
              crafter_yaml_path: prefix['crafter_yaml_path'],
              skip: prefix['skip']
            )
          )
        end
      end

      def there_a_suitable_prefix?(test_path)
        @prefixes.map do |prefix|
          return true if prefix.name.nil?
          return true if prefix.name == ''
          return true if test_path[0..prefix.name.size - 1] == prefix.name
        end

        false
      end

      def cram_into_the_appropriate_prefix(test)
        @prefixes.map do |prefix|
          if prefix.name.nil? || prefix.name == '' || test.path[0..prefix.name.size - 1] == prefix.name
            prefix.add_test(test)
            break
          end
        end
      end

      def join(tests)
        tests.to_a.map do |test|
          if there_a_suitable_prefix?(test.path)
            cram_into_the_appropriate_prefix(test)
            test.mark_prefix
          end
        end
      end

      def to_a
        @prefixes
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fitting-2.18.3 lib/fitting/report/prefixes.rb
fitting-2.18.2 lib/fitting/report/prefixes.rb
fitting-2.18.1 lib/fitting/report/prefixes.rb
fitting-2.18.0 lib/fitting/report/prefixes.rb