Sha256: e94de1072fec4fa23fa50faa6d443442e5a0a3ae394a074ba35c3cc088335557

Contents?: true

Size: 1.69 KB

Versions: 4

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'

module Avm
  module EacRubyBase1
    module Rubygems
      class Gemspec
        require_sub __FILE__, require_dependency: true
        enable_simple_cache

        DEPENDENCY_LINE_PARSER = /s\.add([a-zA-Z0-9_]*)_dependency\s*'(\S+)'/
                                   .to_parser { |m| [m[2], m[1]] }

        class << self
          def from_file(path)
            new(path.read.each_line.map(&:rstrip))
          end
        end

        common_constructor :lines

        # @param gem_name [String]
        # @return [Avm::EacRubyBase1::Bundler::Gemfile::Dependency]
        def dependency(gem_name)
          dependencies_hash.fetch(gem_name)
        end

        # @return [Array<Avm::EacRubyBase1::Bundler::Gemfile::Dependency>]
        def dependencies
          dependencies_hash.values
        end

        def write(path)
          path.to_pathname.write(to_text)
        end

        def to_text
          lines.map { |line| "#{line}\n" }.join
        end

        protected

        # @param gem_name [String]
        # @param type [String] Avm::EacRubyBase1::Rubygems::Gemspec::Dependency::TYPE_*
        # @return [Avm::EacRubyBase1::Bundler::Gemfile::Dependency]
        def create_dependency(gem_name, type)
          ::Avm::EacRubyBase1::Rubygems::Gemspec::Dependency.new(self, gem_name, type)
        end

        # @return [Hash<String, Avm::EacRubyBase1::Bundler::Gemfile::Dependency>]
        def dependencies_hash_uncached
          lines.lazy.map { |line| DEPENDENCY_LINE_PARSER.parse(line) }.compact_blank
            .map { |dependency_args| create_dependency(*dependency_args) }.index_by(&:gem_name)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
avm-eac_ruby_base1-0.35.1 lib/avm/eac_ruby_base1/rubygems/gemspec.rb
eac_tools-0.96.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec.rb
avm-eac_ruby_base1-0.35.0 lib/avm/eac_ruby_base1/rubygems/gemspec.rb
eac_tools-0.95.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec.rb