Class: Arrow::CookieSet

Inherits:
Object
  • Object
show all
Extends:
Forwardable
Includes:
Enumerable
Defined in:
lib/arrow/cookieset.rb

Overview

An object class which provides a convenient way of accessing a set of Arrow::Cookies.

Synopsis

  cset = Arrow::CookieSet.new()
  cset = Arrow::CookieSet.new( cookies )

  cset['cookiename']  # => Arrow::Cookie

  cset['cookiename'] = cookie_object
  cset['cookiename'] = 'cookievalue'
  cset[:cookiename] = 'cookievalue'
  cset << Arrow::Cookie.new( *args )

  cset.include?( 'cookiename' )
  cset.include?( cookie_object )

  cset.each do |cookie|
     ...
  end

Authors

  • Michael Granger

  • Jeremiah Jordan

Please see the file LICENSE in the top-level directory for licensing details.

Instance Method Summary

Methods inherited from Object

deprecate_class_method, deprecate_method, inherited

Methods included from Loggable

#log

Constructor Details

- (CookieSet) initialize(*cookies)

Create a new CookieSet prepopulated with the given cookies



48
49
50
# File 'lib/arrow/cookieset.rb', line 48

def initialize( *cookies )
  @cookie_set = Set.new( cookies.flatten )
end

Instance Method Details

- (Object) <<(cookie)

Append operator: Add the given cookie to the set, replacing an existing cookie with the same name if one exists.



99
100
101
102
103
104
# File 'lib/arrow/cookieset.rb', line 99

def <<( cookie )
  @cookie_set.delete( cookie )
  @cookie_set.add( cookie )
  
  return self
end

- (Object) [](name)

Index operator method: returns the Arrow::Cookie with the given name if it exists in the cookieset.



69
70
71
72
# File 'lib/arrow/cookieset.rb', line 69

def []( name )
  name = name.to_s
  return @cookie_set.find() {|cookie| cookie.name == name }
end

- (Object) []=(name, value)

Index set operator method: set the cookie that corresponds to the given name to value. If value is not an Arrow::Cookie, one with be created and its value set to value.

Raises:

  • (ArgumentError)


78
79
80
81
82
83
84
# File 'lib/arrow/cookieset.rb', line 78

def []=( name, value )
  value = Arrow::Cookie.new( name.to_s, value ) unless value.is_a?( Arrow::Cookie )
  raise ArgumentError, "cannot set a cookie named '%s' with a key of '%s'" %
    [ value.name, name ] if value.name.to_s != name.to_s

  self << value
end

- (Boolean) include?(name_or_cookie) Also known as: key?

Returns true if the CookieSet includes either a cookie with the given name or an Arrow::Cookie object.

Returns:

  • (Boolean)


89
90
91
92
93
# File 'lib/arrow/cookieset.rb', line 89

def include?( name_or_cookie )
  return true if @cookie_set.include?( name_or_cookie )
  name = name_or_cookie.to_s
  return self[name] ? true : false
end

- (Object) length Also known as: size

Returns the number of cookies in the cookieset



61
62
63
# File 'lib/arrow/cookieset.rb', line 61

def length
  return @cookie_set.length
end