# 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] # @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