Sha256: c8edab0f80de95aa590ca5cfaad0f2061efbdbd74365e8f96f0f05de11a8860c
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
module Compass::Commands module Registry def register(name, command_class) @commands ||= Hash.new @commands[name.to_sym] = command_class end def get(name) return unless name @commands ||= Hash.new @commands[name.to_sym] || @commands[abbreviation_of(name)] end def abbreviation_of(name) re = /^#{Regexp.escape(name)}/ matching = @commands.keys.select{|k| k.to_s =~ re} if matching.size == 1 matching.first elsif name =~ /^-/ nil elsif matching.size > 1 raise Compass::Error, "Ambiguous abbreviation '#{name}'. Did you mean one of: #{matching.join(", ")}" else raise Compass::Error, "Command not found: #{name}" end end def abbreviation?(name) re = /^#{Regexp.escape(name)}/ @commands.keys.detect{|k| k.to_s =~ re} end def command_exists?(name) @commands ||= Hash.new name && (@commands.has_key?(name.to_sym) || abbreviation?(name)) end def all @commands.keys end alias_method :[], :get alias_method :[]=, :register end extend Registry end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
compass-sourcemaps-0.12.3.sourcemaps.a4836f1 | lib/compass/commands/registry.rb |
compass-sourcemaps-0.12.2.sourcemaps.57a186c | lib/compass/commands/registry.rb |