jungi 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,49 @@
1
+ # JungI (Yoong-ee)
2
+
3
+ ```
4
+ JungI - A simple program for taking open source personality tests.
5
+ Copyright (C) 2015 Mfrogy Starmade
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ ```
20
+
21
+ > Disclaimer: I am not a psychologist!
22
+
23
+ ## Goals
24
+ 1. Provide a cross-platform way to take standardized Public Domain personality tests.
25
+ 2. To reduce outside dependencies to a minimum.
26
+ 3. To provide both a CLI(Command Line Interface) and a GUI(Graphical User Interface) as usable interfaces.
27
+
28
+ ## Supports
29
+ * Open Extended Jungian Types (OEJTS) 1.2
30
+ * IPIP Big-Five Broad Domain 50 Questions
31
+ * IPIP Big-Five Broad Domain 100 Questions
32
+ * Delroy L. Paulhus' Short Dark Triad (SD3)
33
+
34
+ ## Usage
35
+ ```
36
+ Usage: jungi-cli [options]
37
+
38
+ Tests:
39
+ -b, --big Use IPIP Big Five Broad 50 test
40
+ -B, --bigger Use IPIP Big Five Broad 100 test
41
+ -j, --jungian Use OEJTS 1.2 test
42
+ -t, --triad Use Delroy L. Paulhus' SD3
43
+
44
+ Modifiers:
45
+ -r, --randomize Automatically fills in random answers
46
+
47
+ Common options:
48
+ -h, --help Display this help and exit
49
+ ```
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Thanks, fhsjaagshs!
4
+
5
+ s = eval(File.read(Dir.glob("*.gemspec").first))
6
+ app_name = s.name
7
+ gem_name = "#{s.name}-#{s.version}.gem"
8
+
9
+ desc "Cleanup gem files"
10
+ task :clean do
11
+ `[ -f #{gem_name} ] && rm #{gem_name}`
12
+ end
13
+
14
+ desc "Build gem"
15
+ task :build do
16
+ puts "Building '#{app_name}'..."
17
+ `gem build -q #{app_name}.gemspec`
18
+ end
19
+
20
+ desc "Install gem"
21
+ task :install do
22
+ puts "Uninstalling currently installed '#{app_name}'..."
23
+ `gem uninstall -q --force #{gem_name}`
24
+ puts "Installing '#{app_name}'..."
25
+ `gem install -q --ignore-dependencies --local #{gem_name}`
26
+ end
27
+
28
+ desc "Upload gem to rubyforge"
29
+ task :push do
30
+ Rake::Task["clean"].invoke
31
+ Rake::Task["build"].invoke
32
+ puts "Pushing '#{app_name}' to rubygems..."
33
+ exec("gem push #{gem_name}")
34
+ end
35
+
36
+ task :default do
37
+ Rake::Task["build"].invoke
38
+ end
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ # JungI - A simple program for taking open source personality tests.
5
+ # Copyright (C) 2015 Mfrogy Starmade
6
+ #
7
+ # This program is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ require 'optparse'
21
+ begin
22
+ require_relative '../lib/jungi/classes'
23
+ require_relative '../lib/jungi/oejts'
24
+ require_relative '../lib/jungi/bigfive'
25
+ require_relative '../lib/jungi/paulhus'
26
+ require_relative '../lib/jungi/cli.rb'
27
+ rescue LoadError
28
+ require 'jungi/classes'
29
+ require 'jungi/oejts'
30
+ require 'jungi/bigfive'
31
+ require 'jungi/paulhus'
32
+ require 'jungi/cli'
33
+ end
34
+
35
+ WIDTH = JungiCli.width
36
+
37
+ options = {}
38
+ ARGV.options do |opts|
39
+ opts.banner = 'Usage: jungi-cli [options]'
40
+ opts.separator 'This test has Mad Cow Powers' if Process.uid == 0
41
+ opts.separator ''
42
+ opts.separator 'Tests:'
43
+ opts.on('-b', '--big', 'Use IPIP Big Five Broad 50 test') do |_v|
44
+ options[:bigfivebroad50] = true
45
+ end
46
+ opts.on('-B', '--bigger', 'Use IPIP Big Five Broad 100 test') do |_v|
47
+ options[:bigfivebroad100] = true
48
+ end
49
+ opts.on('-j', '--jungian', 'Use OEJTS 1.2 test') do |_v|
50
+ options[:oejts] = true
51
+ end
52
+ opts.on('-t', '--triad', "Use Delroy L. Paulhus' SD3") do |_v|
53
+ options[:sd3test] = true
54
+ end
55
+
56
+ opts.separator ''
57
+ opts.separator 'Modifiers:'
58
+ opts.on('-r', '--randomize', 'Automatically fills in random answers') do |_v|
59
+ options[:randomize] = true
60
+ end
61
+ opts.on('-s', '--shoes', 'Use the green_shoes gem to provide a GUI') do |_v|
62
+ options[:shoes] = true
63
+ end
64
+ opts.separator ''
65
+ opts.separator 'Common options:'
66
+ opts.on_tail('-h', '--help', 'Display this help and exit')
67
+
68
+ options[:helper] = opts.help
69
+
70
+ opts.parse!
71
+ end
72
+ if options[:shoes]
73
+ shoes_available = begin
74
+ Gem::Specification.find_by_name('green_shoes')
75
+ rescue Gem::LoadError
76
+ false
77
+ rescue
78
+ Gem.available?('green_shoes')
79
+ end
80
+
81
+ if shoes_available
82
+ require 'green_shoes'
83
+ else
84
+ STDERR.puts options[:helper] + "\n"
85
+ STDERR.puts 'The -s/--shoes option requires the green_shoes gem'
86
+ exit
87
+ end
88
+ end
89
+
90
+ if WIDTH < 80
91
+ STDERR.puts options[:helper] + "\n"
92
+ STDERR.puts "Minimum shell width is 80 characters (#{WIDTH})"
93
+ exit
94
+ end
95
+ tests = 0
96
+ tests += 1 if options[:bigfivebroad50]
97
+ tests += 1 if options[:bigfivebroad100]
98
+ tests += 1 if options[:oejts]
99
+ tests += 1 if options[:sd3test]
100
+
101
+ if tests > 1
102
+ STDERR.puts options[:helper] + "\n"
103
+ STDERR.puts 'Only use one test argument at a time'
104
+ exit
105
+ end
106
+
107
+ if options[:oejts]
108
+ current_test = OEJTSTest.new
109
+ JungiCli.clr
110
+ JungiCli.display_doc(OEJTSTest::DOC)
111
+ JungiCli.line
112
+
113
+ 32.times do |int|
114
+ puts "Question #{int + 1}".center WIDTH
115
+ s = JungiCli.ask_scale((current_test.question int), options[:randomize])
116
+ current_test.set_answer int, s
117
+ end
118
+ desig, iev, snv, ftv, jpv = current_test.result
119
+
120
+ puts('Test Complete'.center WIDTH)
121
+ puts('Designation'.center WIDTH, '-')
122
+ puts(desig.center WIDTH)
123
+ JungiCli.line
124
+ JungiCli.display_doc(OEJTSTest.parse_result(desig, iev, snv, ftv, jpv))
125
+ JungiCli.line
126
+ elsif options[:bigfivebroad50]
127
+ current_test = BigFiveBroad50Test.new
128
+ JungiCli.clr
129
+ JungiCli.display_doc(BigFiveBroad50Test::DOC)
130
+ JungiCli.line
131
+
132
+ 50.times do |c|
133
+ puts "Question #{c + 1}".center WIDTH
134
+ s = JungiCli.ask_scale((current_test.question c), options[:randomize])
135
+ current_test.set_answer c, s
136
+ end
137
+ ex, agr, cons, emo, int = current_test.result
138
+ puts('Test Complete'.center WIDTH)
139
+ JungiCli.line
140
+ JungiCli.display_doc("Extraversion: #{ex} Agreeableness: #{agr}\n" \
141
+ "Conscientiousness: #{cons} Emotional Stability: #{emo}\n" \
142
+ "Intellect: #{int}")
143
+ JungiCli.line
144
+ elsif options[:bigfivebroad100]
145
+ current_test = BigFiveBroad100Test.new
146
+ JungiCli.clr
147
+ JungiCli.display_doc(BigFiveBroad100Test::DOC)
148
+ JungiCli.line
149
+
150
+ 100.times do |num|
151
+ puts "Question #{num + 1}".center WIDTH
152
+ s = JungiCli.ask_scale((current_test.question num), options[:randomize])
153
+ current_test.set_answer num, s
154
+ end
155
+ ex, agr, cons, emo, int = current_test.result
156
+ puts('Test Complete'.center WIDTH)
157
+ JungiCli.line
158
+ JungiCli.display_doc("Extraversion: #{ex} Agreeableness: #{agr}\n" \
159
+ "Conscientiousness: #{cons} Emotional Stability: #{emo}\n" \
160
+ "Intellect: #{int}")
161
+ JungiCli.line
162
+ elsif options[:sd3test]
163
+ current_test = SD3Test.new
164
+ JungiCli.clr
165
+ JungiCli.display_doc(SD3Test::DOC)
166
+ JungiCli.line
167
+
168
+ 27.times do |c|
169
+ puts "Question #{c + 1}".center WIDTH
170
+ s = JungiCli.ask_scale((current_test.question c), options[:randomize])
171
+ current_test.set_answer c, s
172
+ end
173
+ mach, narc, psycho = current_test.result
174
+ puts('Test Complete'.center WIDTH)
175
+ JungiCli.line
176
+ JungiCli.display_doc(SD3Test.parse_result(mach, narc, psycho))
177
+ JungiCli.line
178
+ else
179
+ STDERR.puts options[:helper] + "\n"
180
+ STDERR.puts 'You must specify a test type'
181
+ end
@@ -0,0 +1,329 @@
1
+ # JungI - A simple program for taking open source personality tests.
2
+ # Copyright (C) 2015 Mfrogy Starmade
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ # BigFive IPIP tests are sourced from the following locations.
18
+ #
19
+ #
20
+ # Goldberg, L. R. (1999). A broad-bandwidth, public domain, personality
21
+ # inventory measuring the lower-level facets of several five-factor
22
+ # models. In I. Mervielde, I. Deary, F. De Fruyt, & F. Ostendorf (Eds.),
23
+ # Personality Psychology in Europe, Vol. 7 (pp. 7-28). Tilburg,
24
+ # The Netherlands: Tilburg University Press.
25
+ #
26
+ # Goldberg, L. R., Johnson, J. A., Eber, H. W., Hogan, R., Ashton,
27
+ # M. C., Cloninger, C. R., & Gough, H. C. (2006). The International
28
+ # Personality Item Pool and the future of public-domain personality
29
+ # measures. Journal of Research in Personality, 40, 84-96.
30
+ #
31
+ # International Personality Item Pool: A Scientific Collaboratory for
32
+ # the Development of Advanced Measures of Personality Traits and
33
+ # Other Individual Differences (http://ipip.ori.org/). Internet Web Site.
34
+
35
+ begin
36
+ require_relative './classes'
37
+ rescue LoadError
38
+ require 'jungi/classes'
39
+ end
40
+
41
+ # Implementation of BigFive Broad 50 Q
42
+ class BigFiveBroad50Test < ScaleTest
43
+ DOC = <<END_FILE
44
+ IPIP Big Five Broad Domains
45
+ 50 Question Version
46
+
47
+ Each question will be asking how well a specific trait
48
+ describes you. For instance, if the trait is
49
+ "Start conversations" you should type in "1"
50
+ if you never start conversations, "2" if you rarely start
51
+ conversations, "3" if you sometimes do, "4" if you often
52
+ start them, and "5" if you start them all the time.
53
+ Press <ENTER> after you've made your choice.
54
+ END_FILE
55
+ QUESTIONS = [
56
+ 'Am not really interested in others.',
57
+ 'Often forget to put things back in their proper place.',
58
+ 'Get irritated easily.',
59
+ 'Am the life of the party.',
60
+ 'Change my mood a lot.',
61
+ 'Often feel blue.',
62
+ 'Leave my belongings around.',
63
+ 'Am quick to understand things.',
64
+ 'Am exacting in my work.',
65
+ 'Am quiet around strangers.',
66
+ 'Have a vivid imagination.',
67
+ "Feel others' emotions.",
68
+ 'Start conversations.',
69
+ 'Get upset easily.',
70
+ 'Am easily disturbed.',
71
+ 'Am full of ideas.',
72
+ 'Make a mess of things.',
73
+ "Don't like to draw attention to myself.",
74
+ 'Take time out for others.',
75
+ 'Do not have a good imagination.',
76
+ 'Get stressed out easily.',
77
+ 'Have excellent ideas.',
78
+ "Am not interested in other people's problems.",
79
+ 'Have frequent mood swings.',
80
+ 'Am interested in people.',
81
+ 'Get chores done right away.',
82
+ 'Talk to a lot of different people at parties.',
83
+ 'Worry about things.',
84
+ 'Feel comfortable around people.',
85
+ 'Have difficulty understanding abstract ideas.',
86
+ "Don't mind being the center of attention.",
87
+ 'Feel little concern for others.',
88
+ 'Have a soft heart.',
89
+ "Don't talk a lot.",
90
+ 'Spend time reflecting on things.',
91
+ 'Have a rich vocabulary.',
92
+ 'Am relaxed most of the time.',
93
+ 'Keep in the background.',
94
+ 'Shirk my duties.',
95
+ 'Like order.',
96
+ 'Pay attention to details.',
97
+ 'Insult people.',
98
+ 'Am not interested in abstract ideas.',
99
+ 'Make people feel at ease.',
100
+ 'Use difficult words.',
101
+ 'Follow a schedule.',
102
+ 'Have little to say.',
103
+ 'Am always prepared.',
104
+ "Sympathize with others' feelings.",
105
+ 'Seldom feel blue.'
106
+ ]
107
+
108
+ def result
109
+ fail 'Not ready yet!' unless self.finished?
110
+
111
+ ex = self.Q4 + self.Q29 + self.Q13 + self.Q27 + self.Q31 +
112
+ Question::Answer.reverse_scale(self.Q34) +
113
+ Question::Answer.reverse_scale(self.Q38) +
114
+ Question::Answer.reverse_scale(self.Q47) +
115
+ Question::Answer.reverse_scale(self.Q18) +
116
+ Question::Answer.reverse_scale(self.Q10)
117
+ agr = self.Q25 + self.Q49 + self.Q33 + self.Q19 + self.Q12 +
118
+ self.Q44 + Question::Answer.reverse_scale(self.Q1) +
119
+ Question::Answer.reverse_scale(self.Q42) +
120
+ Question::Answer.reverse_scale(self.Q23) +
121
+ Question::Answer.reverse_scale(self.Q32)
122
+ cons = self.Q48 + self.Q41 + self.Q26 + self.Q40 + self.Q46 +
123
+ self.Q9 + Question::Answer.reverse_scale(self.Q7) +
124
+ Question::Answer.reverse_scale(self.Q17) +
125
+ Question::Answer.reverse_scale(self.Q2) +
126
+ Question::Answer.reverse_scale(self.Q39)
127
+ emo = self.Q37 + self.Q50 +
128
+ Question::Answer.reverse_scale(self.Q21) +
129
+ Question::Answer.reverse_scale(self.Q28) +
130
+ Question::Answer.reverse_scale(self.Q15) -
131
+ self.Q14 + Question::Answer.reverse_scale(self.Q5) +
132
+ Question::Answer.reverse_scale(self.Q24) +
133
+ Question::Answer.reverse_scale(self.Q3) +
134
+ Question::Answer.reverse_scale(self.Q6)
135
+ int = self.Q36 + self.Q11 + self.Q22 + self.Q8 + self.Q45 + self.Q35 +
136
+ self.Q16 + Question::Answer.reverse_scale(self.Q30) +
137
+ Question::Answer.reverse_scale(self.Q43) +
138
+ Question::Answer.reverse_scale(self.Q20)
139
+
140
+ [ex, agr, cons, emo, int]
141
+ end
142
+ end
143
+
144
+ # Implementation of BigFive Broad 100 Q
145
+ class BigFiveBroad100Test < ScaleTest
146
+ DOC = <<END_FILE
147
+ IPIP Big Five Broad Domains
148
+ 100 Question Version
149
+
150
+ Each question will be asking how well a specific trait
151
+ describes you. For instance, if the trait is
152
+ "Start conversations" you should type in "1"
153
+ if you never start conversations, "2" if you rarely start
154
+ conversations, "3" if you sometimes do, "4" if you often
155
+ start them, and "5" if you start them all the time.
156
+ Press <ENTER> after you've made your choice.
157
+ END_FILE
158
+ QUESTIONS = [
159
+ 'Talk to a lot of different people at parties.',
160
+ 'Like to tidy up.',
161
+ 'Know how to captivate people.',
162
+ 'Change my mood a lot.',
163
+ 'Have little to say.',
164
+ 'Neglect my duties.',
165
+ 'Panic easily.',
166
+ 'Often forget to put things back in their proper place.',
167
+ 'Make friends easily.',
168
+ 'Start conversations.',
169
+ 'Follow a schedule.',
170
+ 'Am quiet around strangers.',
171
+ 'Leave a mess in my room.',
172
+ 'Have excellent ideas.',
173
+ 'Use difficult words.',
174
+ 'Try to avoid complex people.',
175
+ 'Catch on to things quickly.',
176
+ 'Feel at ease with people.',
177
+ 'Love to think up new ways of doing things.',
178
+ 'Am skilled in handling social situations.',
179
+ 'Often feel blue.',
180
+ 'Have a vivid imagination.',
181
+ 'Often feel uncomfortable around others.',
182
+ 'Insult people.',
183
+ 'Love order and regularity.',
184
+ 'Feel comfortable around people.',
185
+ 'Get irritated easily.',
186
+ 'Can handle a lot of information.',
187
+ 'Carry the conversation to a higher level.',
188
+ 'Grumble about things.',
189
+ 'Spend time reflecting on things.',
190
+ 'Waste my time.',
191
+ 'Do things in a half-way manner.',
192
+ 'Show my gratitude.',
193
+ 'Seldom get mad.',
194
+ 'Make plans and stick to them.',
195
+ 'Leave my belongings around.',
196
+ 'Have frequent mood swings.',
197
+ 'Have difficulty imagining things.',
198
+ "Don't talk a lot.",
199
+ 'Love to read challenging material.',
200
+ 'Have a good word for everyone.',
201
+ 'Get upset easily.',
202
+ 'Love to help others.',
203
+ 'Feel threatened easily.',
204
+ 'Am exacting in my work.',
205
+ 'Am not really interested in others.',
206
+ 'Get stressed out easily.',
207
+ 'Will not probe deeply into a subject.',
208
+ 'Continue until everything is perfect.',
209
+ 'Am easily disturbed.',
210
+ 'Am not interested in abstract ideas.',
211
+ 'Am relaxed most of the time.',
212
+ 'Get caught up in my problems.',
213
+ "Sympathize with others' feelings.",
214
+ 'Am on good terms with nearly everyone.',
215
+ 'Find it difficult to get down to work.',
216
+ "Feel others' emotions.",
217
+ "Am not interested in other people's problems.",
218
+ 'Do not have a good imagination.',
219
+ 'Am the life of the party.',
220
+ 'Like order.',
221
+ 'Make a mess of things.',
222
+ 'Get chores done right away.',
223
+ 'Feel little concern for others.',
224
+ 'Take offense easily.',
225
+ 'Get angry easily.',
226
+ "Don't mind being the center of attention.",
227
+ "Inquire about others' well-being.",
228
+ 'Am hard to get to know.',
229
+ 'Am interested in people.',
230
+ 'Am good at many things.',
231
+ 'Worry about things.',
232
+ 'Find it difficult to approach others.',
233
+ 'Am a very private person.',
234
+ 'Have a soft heart.',
235
+ 'Keep in the background.',
236
+ 'Love children.',
237
+ 'Am quick to understand things.',
238
+ "Don't like to draw attention to myself.",
239
+ 'Avoid difficult reading material.',
240
+ 'Take charge.',
241
+ 'Think of others first.',
242
+ 'Make people feel at ease.',
243
+ 'Wait for others to lead the way.',
244
+ 'Know how to comfort others.',
245
+ 'Seldom feel blue.',
246
+ 'Bottle up my feelings.',
247
+ 'Am not easily bothered by things.',
248
+ 'Am full of ideas.',
249
+ 'Am indifferent to the feelings of others.',
250
+ 'Shirk my duties.',
251
+ 'Pay attention to details.',
252
+ 'Rarely get irritated.',
253
+ 'Get overwhelmed by emotions.',
254
+ 'Have difficulty understanding abstract ideas.',
255
+ 'Have a rich vocabulary.',
256
+ 'Am always prepared.',
257
+ 'Do things according to a plan.',
258
+ 'Take time out for others.'
259
+ ]
260
+
261
+ def result
262
+ fail 'Not ready yet!' unless self.finished?
263
+
264
+ ex = self.Q61 + self.Q26 + self.Q10 + self.Q1 +
265
+ self.Q68 + self.Q9 + self.Q82 + self.Q3 +
266
+ self.Q18 +
267
+ Question::Answer.reverse_scale(self.Q20) +
268
+ Question::Answer.reverse_scale(self.Q4) +
269
+ Question::Answer.reverse_scale(self.Q77) +
270
+ Question::Answer.reverse_scale(self.Q5) +
271
+ Question::Answer.reverse_scale(self.Q80) +
272
+ Question::Answer.reverse_scale(self.Q12) +
273
+ Question::Answer.reverse_scale(self.Q74) +
274
+ Question::Answer.reverse_scale(self.Q23) +
275
+ Question::Answer.reverse_scale(self.Q88) +
276
+ Question::Answer.reverse_scale(self.Q75) +
277
+ Question::Answer.reverse_scale(self.Q85)
278
+ agr = self.Q71 + self.Q55 + self.Q76 + self.Q100 +
279
+ self.Q58 + self.Q84 + self.Q69 + self.Q86 +
280
+ self.Q78 + self.Q56 + self.Q42 + self.Q34 +
281
+ self.Q83 + self.Q44 +
282
+ Question::Answer.reverse_scale(self.Q24) +
283
+ Question::Answer.reverse_scale(self.Q59) +
284
+ Question::Answer.reverse_scale(self.Q65) +
285
+ Question::Answer.reverse_scale(self.Q47) +
286
+ Question::Answer.reverse_scale(self.Q70) +
287
+ Question::Answer.reverse_scale(self.Q91)
288
+ cons = self.Q98 + self.Q93 + self.Q64 + self.Q62 +
289
+ self.Q11 + self.Q46 + self.Q99 + self.Q50 +
290
+ self.Q36 + self.Q25 + self.Q2 +
291
+ Question::Answer.reverse_scale(self.Q37) +
292
+ Question::Answer.reverse_scale(self.Q63) +
293
+ Question::Answer.reverse_scale(self.Q8) +
294
+ Question::Answer.reverse_scale(self.Q92) +
295
+ Question::Answer.reverse_scale(self.Q6) +
296
+ Question::Answer.reverse_scale(self.Q32) +
297
+ Question::Answer.reverse_scale(self.Q33) +
298
+ Question::Answer.reverse_scale(self.Q57) +
299
+ Question::Answer.reverse_scale(self.Q13)
300
+ emo = self.Q53 + self.Q87 + self.Q89 + self.Q94 +
301
+ self.Q35 + Question::Answer.reverse_scale(self.Q48) +
302
+ Question::Answer.reverse_scale(self.Q73) +
303
+ Question::Answer.reverse_scale(self.Q51) +
304
+ Question::Answer.reverse_scale(self.Q43) +
305
+ Question::Answer.reverse_scale(self.Q4) +
306
+ Question::Answer.reverse_scale(self.Q38) +
307
+ Question::Answer.reverse_scale(self.Q27) +
308
+ Question::Answer.reverse_scale(self.Q21) +
309
+ Question::Answer.reverse_scale(self.Q67) +
310
+ Question::Answer.reverse_scale(self.Q7) +
311
+ Question::Answer.reverse_scale(self.Q45) +
312
+ Question::Answer.reverse_scale(self.Q95) +
313
+ Question::Answer.reverse_scale(self.Q66) +
314
+ Question::Answer.reverse_scale(self.Q54) +
315
+ Question::Answer.reverse_scale(self.Q30)
316
+ int = self.Q97 + self.Q22 + self.Q14 + self.Q79 + self.Q15 +
317
+ self.Q31 + self.Q90 + self.Q29 + self.Q17 + self.Q28 +
318
+ self.Q19 + self.Q41 + self.Q72 +
319
+ Question::Answer.reverse_scale(self.Q96) +
320
+ Question::Answer.reverse_scale(self.Q52) +
321
+ Question::Answer.reverse_scale(self.Q60) +
322
+ Question::Answer.reverse_scale(self.Q16) +
323
+ Question::Answer.reverse_scale(self.Q39) +
324
+ Question::Answer.reverse_scale(self.Q81) +
325
+ Question::Answer.reverse_scale(self.Q49)
326
+
327
+ [ex, agr, cons, emo, int]
328
+ end
329
+ end