# frozen_string_literal: true

require "calagator/engine"
require "calagator/version"

require "formtastic"
require "rails_autolink"
require "rails-observers"
require "nokogiri"
require "geokit"
require "htmlentities"
require "paper_trail"
require "ri_cal"
require "will_paginate"
require "will_paginate/array"
require "rest-client"
require "loofah"
require "loofah-activerecord"
require "bluecloth"
require "acts-as-taggable-on"
require "jquery-rails"
require "jquery-ui-rails"
require "font-awesome-rails"
require "paper_trail_manager"
require "utf8-cleaner"
require "sunspot_rails"
require "lucene_query"
require "rack/contrib/jsonp"

module Calagator
  mattr_accessor :title,
    :tagline,
    :url,
    :administrator_email,
    :admin_username,
    :admin_password,
    :search_engine,
    :icalendar_sequence_offset,
    :mapping_marker_color,
    :mapping_google_maps_api_key,
    :mapping_provider,
    :mapping_tiles,
    :venues_map_options,
    :denylist_patterns

  self.title = "Calagator"
  self.tagline = "A Tech Calendar"
  self.url = "http://my-calagator.org/"
  self.administrator_email = "your@email.addr"
  self.search_engine = :sql
  self.icalendar_sequence_offset = 0
  self.mapping_marker_color = "green"
  self.mapping_provider = "stamen"
  self.mapping_tiles = "terrain"
  self.venues_map_options = {}
  self.denylist_patterns = [
    /\b(online|overseas).+(drugstore|pharmacy)\b/,
    /\bcialis\b/
  ]

  def self.configure_search_engine
    kind = search_engine.try(:to_sym)

    Calagator::Event::SearchEngine.use(kind)
    Calagator::Venue::SearchEngine.use(kind)
  end

  def self.setup
    yield self
  end
end