Module: Blocks::BuilderPermissions

Extended by:
ActiveSupport::Concern
Defined in:
lib/blocks/experimental/builder_permissions.rb

Constant Summary collapse

METHODS_TO_PROTECT =
[:render, :define, :deferred_render, :replace, :skip]

Instance Method Summary collapse

Instance Method Details

#permit(*names) ⇒ Object



33
34
35
# File 'lib/blocks/experimental/builder_permissions.rb', line 33

def permit(*names)
  self.permitted_blocks += names
end

#permit_allObject



37
38
39
# File 'lib/blocks/experimental/builder_permissions.rb', line 37

def permit_all
  self.allow_all_blocks = true
end

#permit_anonymous_blocksObject



41
42
43
# File 'lib/blocks/experimental/builder_permissions.rb', line 41

def permit_anonymous_blocks
  self.allow_anonymous_blocks = true
end

#permitted?(name) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
48
49
50
# File 'lib/blocks/experimental/builder_permissions.rb', line 45

def permitted?(name)
  allow_all_blocks ||
  (block_definitions[name].try(:anonymous) && allow_anonymous_blocks) ||
  !name.respond_to?(:to_sym) ||
  permitted_blocks.any? {|e| e.to_sym == name.to_sym }
end

#permitted_blocksObject



29
30
31
# File 'lib/blocks/experimental/builder_permissions.rb', line 29

def permitted_blocks
  @permitted_blocks ||= []
end

#restrict_blocksObject



25
26
27
# File 'lib/blocks/experimental/builder_permissions.rb', line 25

def restrict_blocks
  self.allow_all_blocks = false
end