Sha256: f4befd2b08ddc650462b35348add4f1938926c61d87f4bb59f73dd87c062671d
Contents?: true
Size: 871 Bytes
Versions: 1
Compression:
Stored size: 871 Bytes
Contents
require "active_support/inflector" module SimplestStatus autoload :Status, 'simplest_status/status' class StatusCollection < Hash def each super do |status| yield Status.new(status) end end def [](status_name) status_for(status_name).value end alias :value_for :[] def status_for(input) find { |status| status.matches?(input) } || NullStatus.new end def add(status, value = self.size) self.merge!(status => value) end def label_for(value) status_for(value).label end def for_select map(&:for_select) end def configure_for(model) tap { ModelMethods.new(model, self).add } end def status_name default end def model_accessor status_name.to_s.pluralize end private NullStatus = Struct.new(:value) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simplest_status-1.0.0 | lib/simplest_status/status_collection.rb |