diff --git a/README.md b/README.md index a100f46..2cbae84 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ smart people at [Hashrocket](http://hashrocket.com/). - [Limit Split](ruby/limit-split.md) - [Override The Initial Sequence Value](ruby/override-the-initial-sequence-value.md) - [Parallel Bundle Install](ruby/parallel-bundle-install.md) +- [Percent Notation](ruby/percent-notation.md) - [Squeeze Out The Extra Space](ruby/squeeze-out-the-extra-space.md) - [Summing Collections](ruby/summing-collections.md) diff --git a/ruby/percent-notation.md b/ruby/percent-notation.md new file mode 100644 index 0000000..f703ba9 --- /dev/null +++ b/ruby/percent-notation.md @@ -0,0 +1,33 @@ +# Percent Notation + +Ruby has many uses for the `%` character. One of the more obscure uses is as +a notion for custom delimited strings. Use the percent notation with a +non-alphanumeric character to surround a string. + +```ruby +> %=Jurassic Park= +=> "Jurassic Park" +> % Ghostbusters +=> "Ghostbusters" +``` + +It even works with balanced characters + +> %(The Goonies) +=> "The Goonies" + +This is useful for defining a string that has both types of quotes + +```ruby +> %[That'll be the "day"] +=> "That'll be the \"day\"" +``` + +It's also useful for creating horribly obfuscated code + +```ruby +> %=what===%?what? +=> true +``` + +h/t [Josh Davey](https://twitter.com/joshuadavey/status/615613617099046912)