Sha256: 8c92fd4b2837f9a9a1563cf5904007f46ca094b06fa3086c7691df7184e620e4
Contents?: true
Size: 1.3 KB
Versions: 2
Compression:
Stored size: 1.3 KB
Contents
module MaskableAttribute class MaskableAttribute attr_accessor :object, :attribute, :masks def initialize(object, attribute, masks) @object = object @attribute = attribute @masks = Masks.new masks end def masks @masks.names end def masked value = unmasked if !value.blank? and value.match(/\{.*\}/) value.scan(/(?<={)[^}]+(?=})/).each do |mask| #mask: two_digit model_series mask_value = @masks[mask].unmask(@object) value = value.sub "{#{mask}}", mask_value.to_s unless mask_value.nil? end end value end alias :to_s :masked def masked_object @object end def unmasked @object.read_attribute attribute end def set(value) unless value.blank? @masks.each do |mask| mask.accessed_by.each do |mask_accessor| value.sub! /#{mask.unmask(@object, :formatted => mask_accessor)}(?![^{]*})/, "{#{mask_accessor}}" unless mask.unmask(@object).blank? end end end value end class InvalidMask < RuntimeError attr :mask, :obj def initialize(mask, obj) @mask = mask @obj = obj end def to_s "Invalid mask '#{@mask}' for #{@obj.class.name}" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
maskable_attribute-0.0.3 | lib/maskable_attribute/maskable_attribute.rb |
maskable_attribute-0.0.2 | lib/maskable_attribute/maskable_attribute.rb |