Class: RubynCode::Skills::GemfileParser

Inherits:
Object
  • Object
show all
Defined in:
lib/rubyn_code/skills/gemfile_parser.rb

Overview

Parses Gemfiles to extract gem names for skill pack matching. Handles standard gem declarations and grouped gems.

Recognized patterns:

gem 'stripe'
gem 'stripe', '~> 8.0'
gem 'pundit', require: false
gem 'sidekiq', '>= 6.0', group: :workers

Does NOT match comments or source declarations.

Constant Summary collapse

GEM_PATTERN =
/
  ^\s*gem\s+
  ['"]([^'"]+)['"]
/x

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content) ⇒ GemfileParser

Returns a new instance of GemfileParser.



29
30
31
# File 'lib/rubyn_code/skills/gemfile_parser.rb', line 29

def initialize(content)
  @content = content
end

Class Method Details

.gems(content) ⇒ Array<String>

Extract unique gem names from Gemfile content.

Parameters:

  • content (String)

    raw Gemfile content

Returns:

  • (Array<String>)

    gem names (lowercase)



25
26
27
# File 'lib/rubyn_code/skills/gemfile_parser.rb', line 25

def self.gems(content)
  new(content).gems
end

Instance Method Details

#gemsObject



33
34
35
36
37
# File 'lib/rubyn_code/skills/gemfile_parser.rb', line 33

def gems
  return [] if @content.to_s.strip.empty?

  @content.scan(GEM_PATTERN).flatten.map { |m| m.strip.downcase }.uniq
end