Sha256: c9813832ec9d138f9f0b54842037190e5cdfdf37ffe50ed3ae93105cf17df7f8

Contents?: true

Size: 1.61 KB

Versions: 4

Compression:

Stored size: 1.61 KB

Contents

# encoding: UTF-8
# frozen_string_literal: true

require 'yaml'

module Aranha
  module Spec
    # Lists pairs of source/target files in a directory.
    class SourceTargetFixtures
      class << self
        def source_target_basename(file)
          m = /^(.+)\.(?:source|target)(?:\..+)?$/.match(File.basename(file))
          m ? m[1] : nil
        end
      end

      attr_reader :fixtures_directory

      def initialize(fixtures_directory)
        @fixtures_directory = fixtures_directory
      end

      def source_target_files
        sources_targets_basenames.map do |basename|
          OpenStruct.new(source: source_file(basename), target: target_file(basename))
        end
      end

      def source_files
        r = []
        source_target_files.each do |st|
          r << st.source if st.source
        end
        r
      end

      def target_file(basename)
        fixture_file(basename, 'target')
      end

      def source_file(basename)
        fixture_file(basename, 'source')
      end

      private

      def fixture_file(basename, suffix)
        prefix = "#{basename}.#{suffix}"
        Dir.foreach(fixtures_directory) do |item|
          next if item == '.' || item == '..'
          return File.expand_path(item, fixtures_directory) if item.starts_with?(prefix)
        end
        nil
      end

      def sources_targets_basenames
        basenames = Set.new
        Dir.foreach(fixtures_directory) do |item|
          next if item == '.' || item == '..'
          b = self.class.source_target_basename(item)
          basenames << b if b.present?
        end
        basenames
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
aranha-parsers-0.1.0 lib/aranha/parsers/spec/source_target_fixtures.rb
aranha-0.10.1 lib/aranha/parsers/spec/source_target_fixtures.rb
aranha-0.10.0 lib/aranha/parsers/spec/source_target_fixtures.rb
aranha-0.9.1 lib/aranha/parsers/spec/source_target_fixtures.rb