class Decidim::Gamification::BadgeRegistry
This class represents a repository of badges. New badges can be registered thanks to its DSL and will be validated prior to being inserted.
Public Class Methods
new()
click to toggle source
Public: Initializes the badge registry.
# File lib/decidim/gamification/badge_registry.rb, line 11 def initialize @badges = {} end
Public Instance Methods
all()
click to toggle source
Public: Returns all the registered badges.
Returns Array<Badge>.
# File lib/decidim/gamification/badge_registry.rb, line 18 def all @badges.values end
find(name)
click to toggle source
Public: Finds a badge given its name.
name - The name of the badge to find.
Returns a Badge
if found or nil otherwise.
# File lib/decidim/gamification/badge_registry.rb, line 27 def find(name) @badges[name.to_s] end
register(name, &block)
click to toggle source
Public: Registers a new badge.
name - The name of the badge to register. &block - A block that gets the new badge as argument.
Example:
register(:fake){ |badge| badge.levels = [1, 3, 10] }
Returns a Badge
when registered successfully, raises an exception otherwise.
# File lib/decidim/gamification/badge_registry.rb, line 41 def register(name, &block) name = name.to_s badge = Badge.new(name: name).tap do |object| object.instance_eval(&block) end badge.validate! @badges[name] = badge end
unregister(name)
click to toggle source
Public: Unregisters a previously registered badge.
name - The name of the badge to unregister.
Returns the deleted Badge
if found, nil otherwise.
# File lib/decidim/gamification/badge_registry.rb, line 58 def unregister(name) @badges.delete(name.to_s) end