class AlohaAnalyzer::Base

Attributes

analysis[R]
language[R]

Public Class Methods

new(options) click to toggle source
# File lib/aloha_analyzer/base.rb, line 5
def initialize(options)
  @language = clean_language(options['language'].downcase)
  @analysis = (options['analysis'] || boilerplate).clone
  @options  = options
end

Public Instance Methods

add_account_language_user(user) click to toggle source
# File lib/aloha_analyzer/base.rb, line 71
def add_account_language_user(user)
  unless too_many_users?(@analysis['account_language']['users'])
    @analysis['account_language']['users'].push(user)
  end
end
add_foreign_language_user(user) click to toggle source
# File lib/aloha_analyzer/base.rb, line 77
def add_foreign_language_user(user)
  abbreviation = Language.find_by_abbreviation(user[language_key], network_name)['abbreviation']
  prepare_foreign_language(abbreviation)
  @analysis['foreign_languages'][abbreviation]['count'] += 1
  unless too_many_users?(@analysis['foreign_languages'][abbreviation]['users'])
    @analysis['foreign_languages'][abbreviation]['users'].push(user)
  end
end
analyze(users) click to toggle source
# File lib/aloha_analyzer/base.rb, line 11
def analyze(users)
  clean_users(users).each do |user|
    if user[language_key] == @language
      add_account_language_user(user)
      @analysis['account_language']['count'] += 1
    else
      add_foreign_language_user(user)
      @analysis['foreign_languages_count'] += 1
    end
    @analysis['count'] += 1
  end
  @analysis
end
boilerplate() click to toggle source
# File lib/aloha_analyzer/base.rb, line 25
def boilerplate
  {
    'account_language' => {
      'count'    => 0,
      'language' => Language.find_by_abbreviation(@language, network_name),
      'users'    => []
    },
    'foreign_languages_count' => 0,
    'count'                   => 0,
    'foreign_languages'       => {}
  }
end
clean_language(language) click to toggle source
# File lib/aloha_analyzer/base.rb, line 38
def clean_language(language)
  if Language.aliases.keys.include?(language)
    Language.aliases[language]
  else
    language
  end
end
clean_users(users) click to toggle source
# File lib/aloha_analyzer/base.rb, line 46
def clean_users(users)
  users.map do |user|
    if Language.aliases.keys.include?(user[language_key].downcase)
      user[language_key] = Language.aliases[user[language_key].downcase]
    end
    user
  end
end
language_key() click to toggle source
# File lib/aloha_analyzer/base.rb, line 59
def language_key
  self.class.language_key
end
network_name() click to toggle source
# File lib/aloha_analyzer/base.rb, line 55
def network_name
  self.class.network_name
end
prepare_foreign_language(abbreviation) click to toggle source
# File lib/aloha_analyzer/base.rb, line 86
def prepare_foreign_language(abbreviation)
  if @analysis['foreign_languages'][abbreviation].nil?
    @analysis['foreign_languages'][abbreviation] = {
      'count'    => 0,
      'language' => Language.find_by_abbreviation(abbreviation, network_name),
      'users'    => []
    }
  end
end
too_many_users?(users) click to toggle source
# File lib/aloha_analyzer/base.rb, line 63
def too_many_users?(users)
  if @options['max_users'] && users.size >= @options['max_users']
    true
  else
    false
  end
end