Class: BetterSeo::StructuredData::Event
- Defined in:
- lib/better_seo/structured_data/event.rb
Constant Summary collapse
- EVENT_STATUS_MAPPING =
{ "EventScheduled" => "https://schema.org/EventScheduled", "EventCancelled" => "https://schema.org/EventCancelled", "EventPostponed" => "https://schema.org/EventPostponed", "EventRescheduled" => "https://schema.org/EventRescheduled" }.freeze
- ATTENDANCE_MODE_MAPPING =
{ "OfflineEventAttendanceMode" => "https://schema.org/OfflineEventAttendanceMode", "OnlineEventAttendanceMode" => "https://schema.org/OnlineEventAttendanceMode", "MixedEventAttendanceMode" => "https://schema.org/MixedEventAttendanceMode" }.freeze
- AVAILABILITY_MAPPING =
{ "InStock" => "https://schema.org/InStock", "SoldOut" => "https://schema.org/SoldOut", "PreOrder" => "https://schema.org/PreOrder" }.freeze
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #description(value) ⇒ Object
- #end_date(value) ⇒ Object
-
#event_attendance_mode(value) ⇒ Object
Event attendance mode.
-
#event_status(value) ⇒ Object
Event status.
- #image(value) ⇒ Object
-
#initialize(**properties) ⇒ Event
constructor
A new instance of Event.
-
#location(type: nil, name: nil, address: nil, url: nil, **other_properties) ⇒ Object
Location (Place or VirtualLocation).
-
#name(value) ⇒ Object
Basic properties.
-
#offers(value) ⇒ Object
Offers.
-
#organizer(value) ⇒ Object
Organizer (Organization or Person).
-
#performer(value) ⇒ Object
Performer.
-
#start_date(value) ⇒ Object
Date and time.
- #url(value) ⇒ Object
Methods inherited from Base
#get, #set, #to_h, #to_json, #to_script_tag, #valid?, #validate!
Constructor Details
#initialize(**properties) ⇒ Event
Returns a new instance of Event.
25 26 27 |
# File 'lib/better_seo/structured_data/event.rb', line 25 def initialize(**properties) super("Event", **properties) end |
Instance Method Details
#description(value) ⇒ Object
34 35 36 |
# File 'lib/better_seo/structured_data/event.rb', line 34 def description(value) set(:description, value) end |
#end_date(value) ⇒ Object
52 53 54 55 |
# File 'lib/better_seo/structured_data/event.rb', line 52 def end_date(value) formatted_value = format_date(value) set(:endDate, formatted_value) end |
#event_attendance_mode(value) ⇒ Object
Event attendance mode
68 69 70 71 72 73 74 75 |
# File 'lib/better_seo/structured_data/event.rb', line 68 def event_attendance_mode(value) mode_value = if value.start_with?("https://schema.org/") value else ATTENDANCE_MODE_MAPPING[value] || value end set(:eventAttendanceMode, mode_value) end |
#event_status(value) ⇒ Object
Event status
58 59 60 61 62 63 64 65 |
# File 'lib/better_seo/structured_data/event.rb', line 58 def event_status(value) status_value = if value.start_with?("https://schema.org/") value else EVENT_STATUS_MAPPING[value] || value end set(:eventStatus, status_value) end |
#image(value) ⇒ Object
42 43 44 |
# File 'lib/better_seo/structured_data/event.rb', line 42 def image(value) set(:image, value) end |
#location(type: nil, name: nil, address: nil, url: nil, **other_properties) ⇒ Object
Location (Place or VirtualLocation)
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/better_seo/structured_data/event.rb', line 78 def location(type: nil, name: nil, address: nil, url: nil, **other_properties) location_hash = {} location_hash["@type"] = type if type location_hash["name"] = name if name location_hash["url"] = url if url location_hash["address"] = build_address(address) if address other_properties.each do |key, value| location_hash[key.to_s] = value end set(:location, location_hash) end |
#name(value) ⇒ Object
Basic properties
30 31 32 |
# File 'lib/better_seo/structured_data/event.rb', line 30 def name(value) set(:name, value) end |
#offers(value) ⇒ Object
Offers
108 109 110 111 112 113 114 115 116 |
# File 'lib/better_seo/structured_data/event.rb', line 108 def offers(value) if value.is_a?(Array) set(:offers, value.map { |v| build_offer(v) }) elsif value.is_a?(Hash) set(:offers, build_offer(value)) else set(:offers, value) end end |
#organizer(value) ⇒ Object
Organizer (Organization or Person)
95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/better_seo/structured_data/event.rb', line 95 def organizer(value) organizer_value = if value.is_a?(Base) value elsif value.is_a?(Hash) build_organizer(value) else value end set(:organizer, organizer_value) end |
#performer(value) ⇒ Object
Performer
119 120 121 122 123 124 125 126 127 |
# File 'lib/better_seo/structured_data/event.rb', line 119 def performer(value) if value.is_a?(Array) set(:performer, value.map { |v| build_performer(v) }) elsif value.is_a?(Hash) set(:performer, build_performer(value)) else set(:performer, value) end end |
#start_date(value) ⇒ Object
Date and time
47 48 49 50 |
# File 'lib/better_seo/structured_data/event.rb', line 47 def start_date(value) formatted_value = format_date(value) set(:startDate, formatted_value) end |
#url(value) ⇒ Object
38 39 40 |
# File 'lib/better_seo/structured_data/event.rb', line 38 def url(value) set(:url, value) end |