Sha256: 4d02d469bd06f3f8638dc667e9aa5be5856a4502884383488a22b16e996983f2
Contents?: true
Size: 1.04 KB
Versions: 3
Compression:
Stored size: 1.04 KB
Contents
require 'open-uri' require 'uri' require_relative 'command' module Boxy class Dsl def self.interpret(url) Dsl.new(url).send(:interpret) end private def initialize(url) @url = URI.parse(url.to_s) @commands = [] end def interpret instance_eval(open(@url.to_s).read) @commands end def method_missing(sym, *args) add_command(sym, args.shift, args.shift.to_h) end def include(path_or_url) url = include_url(path_or_url) @commands += Dsl.interpret(url) end def include_url(url) url = URI.parse(url) if url.absolute? url else dirname = File.dirname(@url.path) path = "#{dirname}/#{url.to_s}" include_url = @url.clone include_url.path = path include_url end end # This is required to override Kernel.gem def gem(name, args = {}) add_command(:gem, name, args) end def add_command(type, name, options) @commands << Command.new(type, name, options) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
boxy-0.2.1 | lib/boxy/dsl.rb |
boxy-0.2.0 | lib/boxy/dsl.rb |
boxy-0.1.0 | lib/boxy/dsl.rb |