Protocol::HTTPSourceProtocolHTTPHeaderSplit

class Split

Represents headers that can contain multiple distinct values separated by commas.

This isn't a specific header class is a utility for handling headers with comma-separated values, such as accept, cache-control, and other similar headers. The values are split and stored as an array internally, and serialized back to a comma-separated string when needed.

Definitions

COMMA = /\s*,\s*/

Regular expression used to split values on commas, with optional surrounding whitespace.

def self.parse(value)

Parses a raw header value.

Split headers receive comma-separated values in a single header entry. This method splits the raw value into individual entries.

Signature

parameter value String

a raw header value containing multiple entries separated by commas.

returns Split

a new instance containing the parsed values.

Implementation

def self.parse(value)
	self.new(value.split(COMMA))
end

def self.coerce(value)

Coerces a value into a parsed header object.

This method is used by the Headers class when setting values via []= to convert application values into the appropriate policy type.

Signature

parameter value String | Array

the value to coerce.

returns Split

a parsed header object.

Implementation

def self.coerce(value)
	case value
	when Array
		self.new(value.map(&:to_s))
	else
		self.parse(value.to_s)
	end
end

def initialize(value = nil)

Initializes a Split header with the given values.

Signature

parameter value Array | String | Nil

an array of values, a raw header value, or nil for an empty header.

Implementation

def initialize(value = nil)
	if value.is_a?(Array)
		super(value)
	elsif value.is_a?(String)
		# Compatibility with the old constructor, prefer to use `parse` instead:
		super()
		self << value
	elsif value
		raise ArgumentError, "Invalid value: #{value.inspect}"
	end
end

def <<(value)

Adds one or more comma-separated values to the header.

The input string is split into distinct entries and appended to the array.

Signature

parameter value String

a raw header value containing one or more values separated by commas.

Implementation

def << value
	self.concat(value.split(COMMA))
end

def to_s

Converts the parsed header value into a raw header value.

Signature

returns String

a raw header value (comma-separated string).

Implementation

def to_s
	join(",")
end

def self.trailer?

Whether this header is acceptable in HTTP trailers. This is a base class for comma-separated headers, default is to disallow in trailers.

Signature

returns Boolean

false, as most comma-separated headers should not appear in trailers by default.

Implementation

def self.trailer?
	false
end