A use case for strmask gem?

String::Mask is a library I created not for a specific use case, but
simply b/c it had a certain logical sense to it. However, to this day
I have not conceived of any need for it. I’m wondering if anyone else
can think of a case where it might be useful.

I created a QED file which explains it pretty well:

http://github.com/rubyworks/strmask/blob/master/qed/strmask.rdoc

On Wed, Oct 13, 2010 at 3:54 PM, Intransition [email protected]
wrote:

String::Mask is a library I created not for a specific use case, but
simply b/c it had a certain logical sense to it. However, to this day
I have not conceived of any need for it. I’m wondering if anyone else
can think of a case where it might be useful.

I created a QED file which explains it pretty well:

Frankly, from the description it’s not clear to me what this is
supposed to do. What is the string, what is the mask and what does
the mask do? Apparently there are operations available on masks but
how do I apply a mask - and what to? And what’s the result of
applying a mask to something? What does escaping do?

Cheers

robert

On Wed, Oct 13, 2010 at 8:53 PM, Intransition [email protected]
wrote:

can think of is blacking-out a credit card number.

“4111-1234-1234-1234”.mask(’’) + "__-XXXX-XXXX-XXXX".mask(’’)

#=> “4111-XXXX-XXXX-XXXX”

The “escape character” is just what ever “empty slot” character you
want to use, in this case we are using ‘_’.

The term “escape character” for me has a different connotation: it is
a character that is used to strip meta characters off their metaness -
or the opposite (giving ordinary characters special meaning, such as
\n in double quoted strings). I would rather call the underscore in
your example “wildcard character” or so.

Does that make it a little clearer?

Yes, definitively. To me a different design would be more natural
though

cc_mask = StringMask.new("____-XXXX-XXXX-XXXX")
cc_mask.apply(“4111-1234-1234-1234”) # => “4111-XXXX-XXXX-XXXX”
cc_mask[“4111-1234-1234-1234”] # => “4111-XXXX-XXXX-XXXX”

That also seems more efficient: you only create one mask instance and
apply it to multiple Strings.

Kind regards

robert

On Oct 13, 10:32am, Robert K. [email protected] wrote:

the mask do? Apparently there are operations available on masks but
how do I apply a mask - and what to? And what’s the result of
applying a mask to something? What does escaping do?

Fair point.

The library defines logical operations for string content. You can use
it to “mask” strings is various ways. I guess the simplest example I
can think of is blacking-out a credit card number.

“4111-1234-1234-1234”.mask(’’) + "__-XXXX-XXXX-XXXX".mask(’’)

#=> “4111-XXXX-XXXX-XXXX”

The “escape character” is just what ever “empty slot” character you
want to use, in this case we are using ‘_’.

Does that make it a little clearer?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs