Class: Ji2p::Package::DSL

Inherits:
Object show all
Defined in:
lib/ji2p/package/gemfile.rb

Overview

DSL is a minimal, incomplete Gemfile DSL subset parser, only what is currently required is implemented.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDSL

Returns a new instance of DSL.



190
191
192
# File 'lib/ji2p/package/gemfile.rb', line 190

def initialize
  @gemset = Gemset.new
end

Instance Attribute Details

#gemsetObject (readonly)

Returns the value of attribute gemset.



188
189
190
# File 'lib/ji2p/package/gemfile.rb', line 188

def gemset
  @gemset
end

Class Method Details

.parse(gemfile_content) ⇒ Gemset

Returns parsed Gemfile content as a Gemset.

Parameters:

  • gemfile_content (String)

    the Gemfile string content

Returns:

  • (Gemset)

    parsed Gemfile content as a Gemset



196
197
198
199
200
# File 'lib/ji2p/package/gemfile.rb', line 196

def self.parse(gemfile_content)
  dsl = self.new
  dsl.instance_eval(gemfile_content)
  dsl.gemset
end

Instance Method Details

#gem(name, *requirements) ⇒ Object



208
209
210
211
# File 'lib/ji2p/package/gemfile.rb', line 208

def gem(name, *requirements)
  parsed = Gem.parse(name, *requirements)
  @gemset.add_gem(parsed)
end

#gemspec(options = {}) ⇒ Object

Raises:



213
214
215
216
# File 'lib/ji2p/package/gemfile.rb', line 213

def gemspec(options = {})
  raise(GemfileError, "cannot declare multiple gemspec directives") unless @gemset.gemspec.empty?
  @gemset.gemspec = options
end

#source(url) ⇒ Object

DSL methods



204
205
206
# File 'lib/ji2p/package/gemfile.rb', line 204

def source(url)
  @gemset.sources << url
end