# encoding: utf-8 require 'fast_gettext' module Noosfero def self.root(default = nil) ENV.fetch('RAILS_RELATIVE_URL_ROOT', default) end def self.pattern_for_controllers_in_directory(dir) disjunction = controllers_in_directory(dir).join('|') pattern = disjunction.blank? ? '' : ('(' + disjunction + ')') Regexp.new(pattern) end class << self def locales @locales ||= { 'en' => 'English', 'pt' => 'Português', 'fr' => 'Français', 'hy' => 'հայերեն լեզու', 'de' => 'Deutsch', 'ru' => 'русский язык', 'es' => 'Español', 'eo' => 'Esperanto', 'it' => 'Italiano' } end attr_writer :locales attr_accessor :default_locale def available_locales @available_locales ||= begin locales_list = locales.keys # move English to the beginning if locales_list.include?('en') locales_list = ['en'] + (locales_list - ['en']).sort end locales_list end end def each_locale locales.keys.sort.each do |key| yield(key, locales[key]) end end def with_locale(locale) orig_locale = FastGettext.locale FastGettext.set_locale(locale) yield FastGettext.set_locale(orig_locale) end end def self.identifier_format '[a-z0-9][a-z0-9~.]*([_\-][a-z0-9~.]+)*' end # All valid identifiers, plus ~ meaning "the current user". See # ApplicationController#redirect_to_current_user def self.identifier_format_in_url "(#{identifier_format}|~)" end def self.default_hostname Environment.table_exists? && Environment.default ? Environment.default.default_hostname : 'localhost' end private def self.controllers_in_directory(dir) app_controller_path = Dir.glob(Rails.root.join('app', 'controllers', dir, '*_controller.rb')) app_controller_path.map do |item| item.gsub(/^.*\/([^\/]+)_controller.rb$/, '\1') end end def self.url_options case Rails.env when 'development' development_url_options when 'cucumber' if Capybara.current_driver == :selenium { :host => Capybara.current_session.driver.rack_server.host, :port => Capybara.current_session.driver.rack_server.port } end end || { } end def self.development_url_options @development_url_options || {} end end require 'noosfero/version' require 'noosfero/constants' require 'noosfero/core_ext'