Sha256: 8d79dced46a6cab75dbb814588ef14305650662deb770f04beba0142a3f48d5c

Contents?: true

Size: 1.45 KB

Versions: 10

Compression:

Stored size: 1.45 KB

Contents

class String

  BRA2KET = { '['=>']', '('=>')', '{'=>'}', '<'=>'>' }

  # Return a new string embraced by given brackets.
  # If only one bracket char is given it will be placed
  # on either side.
  #
  #   "wrap me".bracket('{')        #=> "{wrap me}"
  #   "wrap me".bracket('--','!')   #=> "--wrap me!"
  #
  # CREDIT: Trans

  def bracket(bra, ket=nil)
    #ket = String.bra2ket[$&] if ! ket && /^[\[({<]$/ =~ bra
    ket = BRA2KET[bra] unless ket
    "#{bra}#{self}#{ket ? ket : bra}"
  end

  # Inplace version of #bracket.
  #
  # CREDIT: Trans

  def bracket!(bra, ket=nil)
    self.replace(bracket(bra, ket))
  end

  # Return a new string with the given brackets removed.
  # If only one bracket char is given it will be removed
  # from either side.
  #
  #   "{unwrap me}".unbracket('{')        #=> "unwrap me"
  #   "--unwrap me!".unbracket('--','!')  #=> "unwrap me"
  #
  # CREDIT: Trans

  def unbracket(bra=nil, ket=nil)
    if bra
      ket = BRA2KET[bra] unless ket
      ket = ket ? ket : bra
      s = self.dup
      s.gsub!(%r[^#{Regexp.escape(bra)}], '')
      s.gsub!(%r[#{Regexp.escape(ket)}$], '')
      return s
    else
      if m = BRA2KET[ self[0,1] ]
        return self.slice(1...-1) if self[-1,1]  == m
      end
    end
    return self.dup  # if nothing else
  end

  # Inplace version of #unbracket.
  #
  # CREDIT: Trans

  def unbracket!(bra=nil, ket=nil)
    self.replace( unbracket(bra, ket) )
  end

  # TODO: rename #bracket to #embrace ?

end

Version data entries

10 entries across 9 versions & 2 rubygems

Version Path
facets-glimmer-3.2.0 lib/core/facets/string/bracket.rb
facets-3.1.0 lib/core/facets/string/bracket.rb
facets-3.0.0 lib/core/facets/string/bracket.rb
facets-2.9.3 lib/core/facets/string/bracket.rb
facets-2.9.2 src/core/facets/string/bracket.rb
facets-2.9.2 lib/core/facets/string/bracket.rb
facets-2.9.1 lib/core/facets/string/bracket.rb
facets-2.9.0 lib/core/facets/string/bracket.rb
facets-2.9.0.pre.2 lib/core/facets/string/bracket.rb
facets-2.9.0.pre.1 lib/core/facets/string/bracket.rb