Sha256: dc7a36bc765d5cf5e078e082e7d7fa6b2ff2a20798b3e97c78d1c89fa110b501

Contents?: true

Size: 861 Bytes

Versions: 2

Compression:

Stored size: 861 Bytes

Contents

# frozen_string_literal: true

class String
  CAP_LIST_REGEX = Regexp.new('"([\w\s]+)"|(\S+)')
  WHITESPACE_REGEX = Regexp.new('^\s+$')

  # Reformats string for a CAP list. If the string contains whitespace it will
  # enclose the contents in quotation marks.
  #
  # @return [String]
  # @example
  #   "one".for_cap_list       # => "one"
  #   "two words".for_cap_list # => "\"two words\""
  def for_cap_list
    if /\s/.match?(self)
      '"' + self + '"'
    else
      self
    end
  end

  # Will unpack a string generated by {Array#to_s_for_cap}
  #
  # @return [Array<String>]
  # @example
  #   "one \"two words\" three".unpack_cap_list # => [ "one", "two words", "three" ]
  # @see Array#to_s_for_cap
  def unpack_cap_list
    split(CAP_LIST_REGEX).reject { |match| match == '' || match =~ WHITESPACE_REGEX }
  end

  def blank?
    empty?
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rcap-2.7.4 lib/rcap/extensions/string.rb
rcap-2.7.3 lib/rcap/extensions/string.rb