Revision 4c969e21
Added by Marc Dequènes over 13 years ago
- ID 4c969e21f0acc2a3d27c1c707dbc2a7917caf455
lib/cyborghood/cyborg/dsl.rb | ||
---|---|---|
#++
|
||
|
||
require 'active_support/basic_object'
|
||
require 'http_headers'
|
||
require 'set'
|
||
|
||
|
||
... | ... | |
end
|
||
|
||
class TaskBase < BaseDSL
|
||
attr_reader :bot, :name, :errors, :results
|
||
attr_reader :bot, :name, :errors, :results, :preferred_locales, :locale
|
||
|
||
@@task_wip = 0
|
||
|
||
... | ... | |
@results = {}.freeze
|
||
|
||
@notification_name = "task/#{@name}"
|
||
@preferred_locales = nil
|
||
@locale = nil
|
||
|
||
_setup
|
||
_start_dsl &block
|
||
end
|
||
|
||
def set_preferred_locales(prefs)
|
||
_add_subtask("setting/preferred_locales") do |subtask|
|
||
logger.debug "Task '#{@name}': setting preferred locales"
|
||
lang_chooser = HTTPHeaders::AcceptLanguage.parse(prefs)
|
||
if lang_chooser
|
||
@preferred_locales = prefs
|
||
|
||
ordered_list = lang_chooser.reduce(I18nController.instance.available_locales)
|
||
@locale = ordered_list.empty? ? I18nController::DEFAULT_LOCALE : ordered_list.first.range
|
||
logger.debug "Task '#{@name}': locale chosen: #{@locale}"
|
||
else
|
||
@errors << CyberError.new(:unrecoverable, "botnet/client/dsl", _("unparsable preferred locales"))
|
||
end
|
||
subtask.finish
|
||
end
|
||
end
|
||
|
||
# may return a Hash of results
|
||
def schedule(&job)
|
||
_add_subtask("job/#{job.hash}") do |subtask|
|
Also available in: Unified diff
[evol] select and record I18n locale in DSL Task (future use)