Socket
Book a DemoInstallSign in
Socket

maskable_attributes

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

maskable_attributes

bundlerRubygems
Version
0.0.1
Version published
Maintainers
1
Created
Source

maskable_attributes

maskable attributes provides a simple way to mask the output of a method. maskable attributes works really well with the decorator / presenter pattern. We are using maskable attributes to hide job posting information from users who are not signed in.

Usage

require 'delegate'
require 'maskable_attributes'

class Person < Struct.new(:name, :email, :phone)
end

class MaskedPerson < DelegateClass(Person)

  include MaskableAttributes

  masked_attributes :email, :phone

end

person = Person.new('Michael', '513-347-1111', 'foo@bar.com')
masked = MaskedPerson.new(person)

masked.name  # => "Michael"
masked.phone # => "************"
masked.email # => "************"

Custom strategies

You can provide a string, lambda, or a symbol (representing a predefined strategy) in order to further customize the masking.

String

If you provide a string, that string will always be used to mask the attributes.

masked_attributes :email, :phone, :with => "HIDDEN"

masked.phone # => "HIDDEN"
masked.email # => "HIDDEN"

lambda / Proc

If you provide a lambda it will be called with the original value passed to it. This allows the masking to be different based on the attribute value. You can see here we output the same number of stars as the length of the attribute

masked_attributes :email, :phone, :with => lambda { |v| "*" * v.size }

masked.phone # => "************"
masked.email # => "***********"

symbols

Currently masked_attributes only provides 1 predefined strategy named :stars, which provides the same functionality from the lambda example above.

masked_attributes :email, :phone, :with => :stars

masked.phone # => "************"
masked.email # => "***********"

You can easily add more strategies yourself.

MaskableAttributes.strategies[:dashes] = lambda { |v| "-" * v.size }

masked_attributes :email, :phone, :with => :dashes

masked.phone # => "------------"
masked.email # => "-----------"

Default string masking

The default masking strategy is a string with 12 *'s. You can override the default string masking if you choose to.

MaskableAttributes.default_masking = "HIDDEN"

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright (c) 2010 Michael Guterl. See LICENSE for details.

FAQs

Package last updated on 29 Apr 2010

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts