jungi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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