class Jekyll::AttendeasePlugin::ScheduleDataParser

Attributes

site[RW]

Public Class Methods

new(site) click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 7
def initialize(site)
  @site = site
end

Public Instance Methods

event() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 11
def event
  site.config['attendease']['event']
end
filters() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 55
def filters
  raw_filters
end
presenters() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 15
def presenters
  @presenters ||= raw_presenters.each do |presenter|
    slug = Helpers.parameterize("#{presenter['first_name']} #{presenter['last_name']}")
    if slug == ''
      presenter['slug'] = presenter['id'] + '.html'
    else
      presenter['slug'] = slug + '.html'
    end
  end
end
rooms() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 37
def rooms
  raw_rooms
end
sessions() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 41
def sessions
  @sessions ||= begin
    raw_sessions.each do |session|
      slug = Helpers.parameterize(session['name'])
      if site.config['attendease']['session_slug_uses_code'] || slug == ''
        session['slug'] = session['code'] + '.html'
      else
        session['slug'] = slug + '.html'
      end
    end
    populate_sessions_with_related_data!(raw_sessions)
  end
end
venues() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 26
def venues
  @venues ||= raw_venues.each do |venue|
    slug = Helpers.parameterize(venue['name'])
    if slug == ''
      venue['slug'] = venue['id'] + '.html'
    else
      venue['slug'] = slug + '.html'
    end
  end
end

Protected Instance Methods

data_path() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 81
def data_path
  File.join(site.config['attendease_source'], '_attendease', 'data')
end
get_session_filter_tags(session_filters) click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 136
def get_session_filter_tags(session_filters)
  session_filters.inject([]) do |memo, filter|
    filter['items'].each do |item|
      memo << Helpers.parameterize('attendease-filter-' + filter['name'] + "-" + item['name'], '-')
    end
    memo
  end.join(" ")
end
get_session_instances(session) click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 145
def get_session_instances(session)
  session['instances'] ||= []
  session['instances'].inject([]) do |memo, i|
    instance = i.select do |k, v|
      %w{ id date time end_time duration date_formatted time_formatted end_time_formatted duration_formatted room_id }.include?(k)
    end

    if room = rooms.select { |r| r['id'] == i['room_id'] }.first
      venue = venues.select { |v| v['id'] == room['venue_id'] }.first
      instance['room'] = room.merge({ 'venue_name' => venue['name'] })
      instance['venue_slug'] = venue['slug']

      memo << instance
    else
      memo
    end
  end
end
get_session_presenters(session) click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 99
def get_session_presenters(session)
  session_presenters = presenters.select do |presenter|
    session['speaker_ids'].include?(presenter['id'])
  end

  session_presenters.inject([]) do |memo, presenter|
    memo << presenter.select do |k, v|
      %w{ id first_name last_name company title profile_url featured slug }.include?(k)
    end
  end
end
populate_session_filters!(session, source) click to toggle source

Populates filter related data into session, from source.

# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 113
def populate_session_filters!(session, source)
  filters_for_session_hash = {}
  filters.each do |filter|
    filter['filter_items'].each_with_index do |filter_item, index|
      if source['filters'].include?(filter_item['id'])
        filters_for_session_hash[filter['name']] ||= { :colour => filter['colour'], :items => [] }
        filters_for_session_hash[filter['name']][:items] << {
          'name'   => filter_item['name'],
          'colour' => filter_item['colour'],
          'index'  => index,
        }
        if event['primary_filter_id'] && event['primary_filter_id'] == filter['id']
          session['primary_filter_name'] = filter['name']
          session['primary_filter'] = filter_item['name']
        end
      end
    end
  end

  session['filters'] = filters_for_session_hash.map { |key, value| { 'name' => key, 'items' => value[:items], 'colour' => value[:colour] } }
  session['filter_tags'] = get_session_filter_tags(session['filters'])
end
raw_filters() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 77
def raw_filters
  @raw_filters ||= @site.data['filters'].sort{|f1, f2| f1['name'] <=> f2['name']}
end
raw_presenters() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 61
def raw_presenters
  @raw_presenters ||= @site.data['presenters'].sort{|p1, p2| p1['last_name'] <=> p2['last_name']}
end
raw_rooms() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 69
def raw_rooms
  @raw_rooms ||= @site.data['rooms'].sort{|r1, r2| r1['name'] <=> r2['name']}
end
raw_sessions() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 73
def raw_sessions
  @raw_sessions ||= @site.data['sessions'].sort{|s1, s2| s1['name'] <=> s2['name']}
end
raw_venues() click to toggle source
# File lib/jekyll/attendease_plugin/schedule_data_parser.rb, line 65
def raw_venues
  @raw_venues ||= @site.data['venues'].sort{|v1, v2| v1['name'] <=> v2['name']}
end