Class: AlohaAnalyzer::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/aloha_analyzer/base.rb

Direct Known Subclasses

Facebook, FacebookPage, Twitter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Base

Returns a new instance of Base.



5
6
7
8
9
# 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

Instance Attribute Details

#analysisObject (readonly)

Returns the value of attribute analysis.



3
4
5
# File 'lib/aloha_analyzer/base.rb', line 3

def analysis
  @analysis
end

#languageObject (readonly)

Returns the value of attribute language.



3
4
5
# File 'lib/aloha_analyzer/base.rb', line 3

def language
  @language
end

Instance Method Details

#add_account_language_user(user) ⇒ Object



71
72
73
74
75
# File 'lib/aloha_analyzer/base.rb', line 71

def (user)
  unless too_many_users?(@analysis['account_language']['users'])
    @analysis['account_language']['users'].push(user)
  end
end

#add_foreign_language_user(user) ⇒ Object



77
78
79
80
81
82
83
84
# 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) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/aloha_analyzer/base.rb', line 11

def analyze(users)
  clean_users(users).each do |user|
    if user[language_key] == @language
      (user)
      @analysis['account_language']['count'] += 1
    else
      add_foreign_language_user(user)
      @analysis['foreign_languages_count'] += 1
    end
    @analysis['count'] += 1
  end
  @analysis
end

#boilerplateObject



25
26
27
28
29
30
31
32
33
34
35
36
# 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) ⇒ Object



38
39
40
41
42
43
44
# 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) ⇒ Object



46
47
48
49
50
51
52
53
# 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_keyObject



59
60
61
# File 'lib/aloha_analyzer/base.rb', line 59

def language_key
  self.class.language_key
end

#network_nameObject



55
56
57
# File 'lib/aloha_analyzer/base.rb', line 55

def network_name
  self.class.network_name
end

#prepare_foreign_language(abbreviation) ⇒ Object



86
87
88
89
90
91
92
93
94
# 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) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
66
67
68
69
# 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