Sha256: c518b538e835efd244127c04f2756ae15a99266b5ba876e8f6f61275e4703656
Contents?: true
Size: 1.44 KB
Versions: 3
Compression:
Stored size: 1.44 KB
Contents
module OdeonUk # The object representing a film on the Odeon UK website class Film include Comparable # @return [String] the name of the film attr_reader :name # @return [String] the normalized slug derived from the film name attr_reader :slug # @param [String] name the film name # @return [OdeonUk::Film] def initialize(name) @name = name @slug = name.downcase.gsub(/[^0-9a-z ]/,'').gsub(/\s+/, '-') end # Allows sort on objects # @param [OdeonUk::Film] other another film object # @return [Integer] -1, 0 or 1 def <=> other self.slug <=> other.slug end # Check an object is the same as another object. # @param [OdeonUk::Film] other another film # @return [Boolean] True if both objects are the same exact object, or if # they are of the same type and share an equal slug # @note Guided by http://woss.name/2011/01/20/equality-comparison-and-ordering-in-ruby/ def eql? other self.class == other.class && self == other end # Generates hash of slug in order to allow two records of the same type and # id to work with something like: # # [ Film.new('ABC'), Film.new('DEF') ] & [ Film.new('DEF'), Film.new('GHI') ] # #=> [ Film.new('DEF') ] # # @return [Integer] hash of slug # @note Guided by http://woss.name/2011/01/20/equality-comparison-and-ordering-in-ruby/ def hash self.slug.hash end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
odeon_uk-1.1.5 | lib/odeon_uk/film.rb |
odeon_uk-1.1.4 | lib/odeon_uk/film.rb |
odeon_uk-1.1.3 | lib/odeon_uk/film.rb |