Sha256: ac7c987f3843bee15c21ccca39b421cc47c4f5866c0c71b1a4d93ec06496c2fe
Contents?: true
Size: 943 Bytes
Versions: 1
Compression:
Stored size: 943 Bytes
Contents
# frozen_string_literal: true module Grumlin module Shortcuts module InstanceMethods def with_shortcuts(obj) ShortcutProxy.new(obj, self.class.shortcuts, parent: self) end end def self.extended(base) base.include(InstanceMethods) end def inherited(subclass) super subclass.shortcuts_from(self) end def shortcut(name, &block) name = name.to_sym # TODO: blocklist of names to avoid conflicts with standard methods? raise ArgumentError, "cannot use names of standard gremlin steps" if Grumlin.supported_steps.include?(name) raise ArgumentError, "shortcut '#{name}' already exists" if shortcuts.key?(name) shortcuts[name] = block end def shortcuts_from(other_shortcuts) other_shortcuts.shortcuts.each do |name, block| shortcut(name, &block) end end def shortcuts @shortcuts ||= {} end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
grumlin-0.13.0 | lib/grumlin/shortcuts.rb |