Sha256: d7b9af4e8fdabc3594a6c744cc5c64bdb5aae134008936d1dd312ff9add4e5cd

Contents?: true

Size: 1.91 KB

Versions: 150

Compression:

Stored size: 1.91 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'avm/eac_ruby_base1/bundler/incompatible_parser/gem_conflict'
require 'avm/eac_ruby_base1/bundler/incompatible_parser/line_factory'

module Avm
  module EacRubyBase1
    module Bundler
      class IncompatibleParser
        class LineBuffer
          class << self
            def from_file(path)
              new(::File.read(path.to_s))
            end
          end

          attr_reader :gems_in_conflict

          def initialize(content)
            self.gems_in_conflict = []
            self.parsing_required = false
            content.each_line { |string_line| add_line(LineFactory.new(string_line)) }
          end

          private

          attr_accessor :parsing_required
          attr_writer :gems_in_conflict

          def add_line(line)
            return if line.blank?

            return if LineFactory::TYPES.any? do |type|
              next false unless line.result.is_a?(type)

              send("on_#{type.name.demodulize.underscore.variableize}_line", line.result)
              true
            end

            return unless parsing_required

            raise(::ArgumentError, "Unparsed line: \"#{line.content}\"")
          end

          def on_gem_conflict_line(result)
            self.parsing_required = true
            gems_in_conflict << result
          end

          def on_in_gemfile_line(result)
            # Do nothing
          end

          def on_depends_on_line(result)
            current_gem_conflict.add_depends_on(result)
          end

          def on_version_requirement_line(result)
            current_gem_conflict.add_version_requirement(result)
          end

          def current_gem_conflict
            raise 'No gems in conflict' if gems_in_conflict.none?
            raise 'Last gem is blank' if gems_in_conflict.last.blank?

            gems_in_conflict.last
          end
        end
      end
    end
  end
end

Version data entries

150 entries across 150 versions & 3 rubygems

Version Path
avm-eac_ruby_base1-0.31.1 lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.75.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
avm-eac_ruby_base1-0.31.0 lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.75.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.74.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.74.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.73.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.72.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.70.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.70.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.69.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.69.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.68.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.67.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.67.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.66.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
avm-eac_ruby_base1-0.30.3 lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.65.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.65.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb
eac_tools-0.64.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb