Sha256: fb341c1eedb4eba56f5136e086da6c52066748975202635461d803a407dce98d

Contents?: true

Size: 1.63 KB

Versions: 26

Compression:

Stored size: 1.63 KB

Contents

class String

  def self.bra2ket
    @bra2ket ||= { '['=>']', '('=>')', '{'=>'}', '<'=>'>' }
  end

  # Return a new string embraced by given brakets.
  # If only one bracket char is given it will be placed
  # on either side.
  #
  #   "wrap me".bracket('{')        #=> "{wrap me}"
  #   "wrap me".bracket('--','!')   #=> "--wrap me!"
  #
  def bracket(bra, ket=nil)
    #ket = String.bra2ket[$&] if ! ket && /^[\[({<]$/ =~ bra
    ket = String.bra2ket[bra] unless ket
    "#{bra}#{self}#{ket ? ket : bra}"
  end

  # Inplace version of #braket.
  def bracket!(bra, ket=nil)
    self.replace( self.bracket(bra, ket) )
  end

end


#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
=begin test

  require 'test/unit'

  class TCString < Test::Unit::TestCase

    def test_bracket
      assert_equal( '#X#', 'X'.bracket('#') )
      assert_equal( 'xX!', 'X'.bracket('x','!') )
      assert_equal( '{X}', 'X'.bracket('{','}') )
      assert_equal( '<X>', 'X'.bracket('<') )
      assert_equal( '(X)', 'X'.bracket('(') )
      assert_equal( '[X]', 'X'.bracket('[') )
      assert_equal( '{X}', 'X'.bracket('{') )
    end

    def test_braket!
      a = 'X' ; a.bracket!('#')
      assert_equal( '#X#', a )
      a = 'X' ; a.bracket!('x','!')
      assert_equal( 'xX!', a )
      a = 'X' ; a.bracket!('{','}')
      assert_equal( '{X}', a )
      a = 'X' ; a.bracket!('<')
      assert_equal( '<X>', a )
      a = 'X' ; a.bracket!('(')
      assert_equal( '(X)', a )
      a = 'X' ; a.bracket!('[')
      assert_equal( '[X]', a )
      a = 'X' ; a.bracket!('{')
      assert_equal( '{X}', a )
    end

  end

=end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
facets-1.0.0 lib/facet/string/bracket.rb
facets-1.0.3 packages/core/lib/facet/string/bracket.rb
facets-0.9.0 lib/nano/string/bracket.rb
facets-1.1.0 lib/facet/string/bracket.rb
facets-1.2.0 lib/facets/core/string/bracket.rb
facets-1.3.0 lib/facets/core/string/bracket.rb
facets-1.2.1 lib/facets/core/string/bracket.rb
facets-1.3.3 lib/facets/core/string/bracket.rb
facets-1.3.1 lib/facets/core/string/bracket.rb
facets-1.3.2 lib/facets/core/string/bracket.rb
facets-1.4.1 lib/facets/core/string/bracket.rb
facets-1.4.0 lib/facets/core/string/bracket.rb
facets-1.4.2 lib/facets/core/string/bracket.rb
facets-1.4.3 lib/facets/core/string/bracket.rb
facets-1.4.5 lib/facets/core/string/bracket.rb
facets-1.4.4 lib/facets/core/string/bracket.rb
facets-1.7.30 lib/facets/core/string/bracket.rb
facets-1.7.0 lib/facets/core/string/bracket.rb
facets-1.7.38 lib/facets/core/string/bracket.rb
facets-1.7.46 lib/facets/core/string/bracket.rb