class Thumbtack::Types::Tags
Handles conversion and validation of tag lists to values supported by Pinboard
@api private
Constants
- INVALID_CHARACTER
Tags
cannot have commas- MAXIMUM_LENGTH
The maximum tag length
- SEPARATOR
Tag parameters are separated by spaces
Public Class Methods
deserialize(parameter)
click to toggle source
Convert a parameter from Pinboard to a list of tags
@param [String] parameter
space-separated list of tags
@return [Array<String>]
# File lib/thumbtack/types/tags.rb, line 53 def self.deserialize(parameter) parameter.split(SEPARATOR) end
serialize(value)
click to toggle source
Convert a tag value to a parameter acceptable to Pinboard
@param [String, Array<String>] value
a single tag or an array of many tags
@return [String]
space-separated list of tags
# File lib/thumbtack/types/tags.rb, line 43 def self.serialize(value) Array(value).map(&:strip).join(SEPARATOR) end
validate(value)
click to toggle source
Validate a tags value
@param [String, Array<String>] value
a single tag or an array of many tags
@return [self]
@raise [Types::ValidationError]
if any tags contain commas or are longer than 255 characters
# File lib/thumbtack/types/tags.rb, line 26 def self.validate(value) Array(value).each do |tag| next if tag_valid?(tag) raise ValidationError, "#{tag} cannot contain commas or be longer than 255 characters" end self end
Private Class Methods
tag_valid?(tag)
click to toggle source
If true, the tag is valid
@param [String] tag
a tag to validate
@return [Boolean]
@api private
# File lib/thumbtack/types/tags.rb, line 65 def self.tag_valid?(tag) tag.length < MAXIMUM_LENGTH && !tag.include?(INVALID_CHARACTER) end