asker-tool 2.1.5 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -17
  3. data/bin/asker +2 -1
  4. data/lib/asker/ai/ai.rb +10 -3
  5. data/lib/asker/ai/ai_calculate.rb +20 -6
  6. data/lib/asker/ai/code/base_code_ai.rb +104 -0
  7. data/lib/asker/{code/ai → ai/code}/code_ai_factory.rb +11 -1
  8. data/lib/asker/{code/ai → ai/code}/javascript_code_ai.rb +2 -5
  9. data/lib/asker/ai/code/problem_code_ai.rb +176 -0
  10. data/lib/asker/{code/ai → ai/code}/python_code_ai.rb +2 -5
  11. data/lib/asker/{code/ai → ai/code}/ruby_code_ai.rb +14 -7
  12. data/lib/asker/{code/ai → ai/code}/sql_code_ai.rb +2 -5
  13. data/lib/asker/ai/concept_ai.rb +13 -3
  14. data/lib/asker/ai/question.rb +28 -6
  15. data/lib/asker/ai/stages/base_stage.rb +45 -6
  16. data/lib/asker/ai/stages/stage_b.rb +100 -50
  17. data/lib/asker/ai/stages/stage_d.rb +75 -90
  18. data/lib/asker/ai/stages/stage_f.rb +64 -36
  19. data/lib/asker/ai/stages/stage_i.rb +79 -92
  20. data/lib/asker/ai/stages/stage_s.rb +41 -36
  21. data/lib/asker/ai/stages/stage_t.rb +149 -108
  22. data/lib/asker/application.rb +19 -11
  23. data/lib/asker/cli.rb +31 -44
  24. data/lib/asker/data/code.rb +62 -0
  25. data/lib/asker/data/column.rb +31 -21
  26. data/lib/asker/data/concept.rb +109 -65
  27. data/lib/asker/data/data_field.rb +14 -0
  28. data/lib/asker/data/project_data.rb +63 -0
  29. data/lib/asker/data/row.rb +75 -52
  30. data/lib/asker/data/table.rb +91 -42
  31. data/lib/asker/data/template.rb +3 -1
  32. data/lib/asker/data/world.rb +51 -35
  33. data/lib/asker/displayer/code_displayer.rb +7 -0
  34. data/lib/asker/displayer/concept_ai_displayer.erb +10 -0
  35. data/lib/asker/displayer/concept_ai_displayer.rb +74 -53
  36. data/lib/asker/displayer/concept_displayer.rb +16 -9
  37. data/lib/asker/displayer/stats_displayer.rb +12 -3
  38. data/lib/asker/exporter/concept_ai_gift_exporter.rb +19 -11
  39. data/lib/asker/exporter/concept_ai_moodle_exporter.rb +44 -0
  40. data/lib/asker/exporter/concept_ai_yaml_exporter.rb +13 -6
  41. data/lib/asker/exporter/concept_doc_exporter.rb +14 -1
  42. data/lib/asker/exporter/data_gift_exporter.rb +29 -0
  43. data/lib/asker/exporter/output_file_exporter.rb +9 -6
  44. data/lib/asker/files/{config.ini → asker.ini} +48 -1
  45. data/lib/asker/files/example-concept.haml +0 -1
  46. data/lib/asker/files/language/du/connectors.yaml +81 -0
  47. data/lib/asker/{lang/locales/fr → files/language/du}/mistakes.yaml +1 -1
  48. data/lib/asker/files/language/du/templates.yaml +29 -0
  49. data/lib/asker/{lang/locales → files/language}/en/connectors.yaml +0 -0
  50. data/lib/asker/{lang/locales → files/language}/en/mistakes.yaml +0 -0
  51. data/lib/asker/files/language/en/templates.yaml +29 -0
  52. data/lib/asker/{lang/locales → files/language}/es/connectors.yaml +0 -0
  53. data/lib/asker/files/language/es/mistakes.yaml +84 -0
  54. data/lib/asker/files/language/es/templates.yaml +29 -0
  55. data/lib/asker/files/language/fr/connectors.yaml +76 -0
  56. data/lib/asker/{lang/locales/es → files/language/fr}/mistakes.yaml +0 -0
  57. data/lib/asker/files/language/fr/templates.yaml +29 -0
  58. data/lib/asker/{lang/locales → files/language}/javascript/connectors.yaml +0 -0
  59. data/lib/asker/{lang/locales → files/language}/javascript/mistakes.yaml +0 -0
  60. data/lib/asker/{lang/locales → files/language}/javascript/templates.yaml +0 -0
  61. data/lib/asker/{lang/locales → files/language}/math/connectors.yaml +0 -0
  62. data/lib/asker/{lang/locales → files/language}/math/mistakes.yaml +0 -0
  63. data/lib/asker/{lang/locales → files/language}/math/templates.yaml +0 -0
  64. data/lib/asker/{lang/locales → files/language}/python/connectors.yaml +0 -0
  65. data/lib/asker/{lang/locales → files/language}/python/mistakes.yaml +0 -0
  66. data/lib/asker/{lang/locales → files/language}/python/templates.yaml +0 -0
  67. data/lib/asker/{lang/locales → files/language}/ruby/connectors.yaml +0 -0
  68. data/lib/asker/{lang/locales → files/language}/ruby/mistakes.yaml +0 -0
  69. data/lib/asker/{lang/locales → files/language}/ruby/templates.yaml +0 -0
  70. data/lib/asker/{lang/locales → files/language}/sql/connectors.yaml +0 -0
  71. data/lib/asker/{lang/locales → files/language}/sql/mistakes.yaml +0 -0
  72. data/lib/asker/{lang/locales → files/language}/sql/templates.yaml +0 -0
  73. data/lib/asker/formatter/concept_doc_formatter.rb +0 -4
  74. data/lib/asker/formatter/concept_string_formatter.rb +7 -4
  75. data/lib/asker/formatter/moodle/matching.erb +38 -0
  76. data/lib/asker/formatter/moodle/multichoice.erb +49 -0
  77. data/lib/asker/formatter/moodle/shortanswer.erb +30 -0
  78. data/lib/asker/formatter/moodle/truefalse.erb +47 -0
  79. data/lib/asker/formatter/question_gift_formatter.rb +30 -20
  80. data/lib/asker/formatter/question_moodle_formatter.rb +27 -0
  81. data/lib/asker/{checker.rb → input_checker.rb} +126 -49
  82. data/lib/asker/lang/lang.rb +17 -10
  83. data/lib/asker/lang/lang_factory.rb +32 -5
  84. data/lib/asker/lang/text_actions.rb +87 -69
  85. data/lib/asker/loader/code_loader.rb +4 -4
  86. data/lib/asker/loader/content_loader.rb +21 -19
  87. data/lib/asker/loader/directory_loader.rb +1 -8
  88. data/lib/asker/loader/embedded_file.rb +42 -0
  89. data/lib/asker/loader/file_loader.rb +3 -14
  90. data/lib/asker/loader/haml_loader.rb +15 -0
  91. data/lib/asker/loader/image_url_loader.rb +8 -12
  92. data/lib/asker/loader/input_loader.rb +13 -15
  93. data/lib/asker/loader/project_loader.rb +25 -15
  94. data/lib/asker/logger.rb +36 -9
  95. data/lib/asker/skeleton.rb +23 -13
  96. data/lib/asker.rb +76 -42
  97. metadata +53 -54
  98. data/lib/asker/code/ai/base_code_ai.rb +0 -48
  99. data/lib/asker/code/code.rb +0 -53
  100. data/lib/asker/lang/locales/du/templates.yaml +0 -50
  101. data/lib/asker/lang/locales/en/templates.yaml +0 -29
  102. data/lib/asker/lang/locales/es/templates.yaml +0 -29
  103. data/lib/asker/lang/locales/fr/connectors.yaml +0 -92
  104. data/lib/asker/lang/locales/fr/templates.yaml +0 -29
  105. data/lib/asker/project.rb +0 -172
data/lib/asker.rb CHANGED
@@ -2,67 +2,101 @@
2
2
 
3
3
  require 'rainbow'
4
4
 
5
+ require_relative 'asker/skeleton'
6
+ require_relative 'asker/input_checker'
7
+
5
8
  require_relative 'asker/displayer/concept_displayer'
6
9
  require_relative 'asker/displayer/stats_displayer'
7
10
  require_relative 'asker/exporter/output_file_exporter'
11
+ require_relative 'asker/logger'
12
+
8
13
  require_relative 'asker/loader/project_loader'
9
14
  require_relative 'asker/loader/input_loader'
10
- require_relative 'asker/checker'
11
- require_relative 'asker/logger'
12
- require_relative 'asker/skeleton'
13
15
 
14
- ##
15
- # Asker main class
16
16
  class Asker
17
- ##
18
- # Create asker input demo files
19
- # @param dirpath (String)
20
- def self.create_skeleton(dirpath)
21
- Skeleton.create(dirpath)
17
+ def self.init
18
+ Skeleton.create_configuration
19
+ end
20
+
21
+ def self.new_input(dirpath)
22
+ Skeleton.create_input(dirpath)
22
23
  end
23
24
 
24
- ##
25
- # Checking input file syntax
26
- # @param filepath (String)
27
25
  def self.check(filepath)
28
- Checker.check(filepath)
26
+ InputChecker.check(filepath)
29
27
  end
30
28
 
31
- ##
32
- # Start working
33
- # @param filepath (String) HAML or XML filepath
34
29
  def self.start(filepath)
35
- project, data = load_input(filepath)
36
- ConceptDisplayer.show(data[:concepts], project.get(:show_mode))
37
- create_output(project, data)
30
+ project_data, data = load_input(filepath)
31
+ ConceptDisplayer.show(data[:concepts])
32
+ create_output(project_data, data)
38
33
  end
39
34
 
40
- ##
41
- # Load input data
42
- # @param args (Hash)
43
35
  private_class_method def self.load_input(args)
44
- project = ProjectLoader.load(args)
45
- project.open # Open output files
46
- data = InputLoader.load(project.get(:inputdirs).split(','))
47
- [project, data]
36
+ init_project_data
37
+ project_data = ProjectLoader.load(args)
38
+ init_logger(project_data)
39
+
40
+ inputdirs = project_data.get(:inputdirs).split(',')
41
+ internet = Application.instance.config['global']['internet'] == 'yes'
42
+ data = InputLoader.load(inputdirs, internet)
43
+ [project_data, data]
44
+ end
45
+
46
+ private_class_method def self.init_project_data()
47
+ project_data = ProjectData.instance
48
+ outputdir = Application.instance.config['output']['folder']
49
+ project_data.set(:outputdir, outputdir)
50
+
51
+ formula_weights = Application.instance.config['ai']['formula_weights']
52
+ project_data.set(:weights, formula_weights)
53
+ end
54
+
55
+ private_class_method def self.init_logger(project_data)
56
+ # Create log file where to save log messages
57
+ Logger.create(project_data.get(:logpath),
58
+ project_data.get(:logname))
59
+ Logger.instance.set_verbose(Application.instance.config['verbose'])
60
+ Logger.verboseln '[INFO] Project open'
61
+ Logger.verboseln ' ├── inputdirs = ' + Rainbow(project_data.get(:inputdirs)).bright
62
+ Logger.verboseln ' └── process_file = ' + Rainbow(project_data.get(:process_file)).bright
48
63
  end
49
64
 
50
- ##
51
- # Create output files: Gift, YAML, TXT Doc
52
- # rubocop:disable Metrics/AbcSize
53
- # rubocop:disable Metrics/MethodLength
54
65
  private_class_method def self.create_output(project, data)
55
- Logger.verbose "\n[INFO] Creating output files"
56
- Logger.verbose ' ├── Gift questions file => ' +
57
- Rainbow(project.get(:outputpath)).bright
58
- Logger.verbose ' ├── YAML questions file => ' +
59
- Rainbow(project.get(:yamlpath)).bright
60
- Logger.verbose ' └── Lesson file => ' +
61
- Rainbow(project.get(:lessonpath)).bright
66
+ Logger.verboseln "\n[INFO] Creating output files"
67
+ m = ' ├── Gift questions file => '
68
+ m += if Application.instance.config['output']['gift'] == 'yes'
69
+ Rainbow(project.get(:outputpath)).bright
70
+ else
71
+ "#{project.get(:outputpath)} (No)"
72
+ end
73
+ Logger.verboseln m
74
+
75
+ m = ' ├── Lesson file => '
76
+ m += if Application.instance.config['output']['doc'] == 'yes'
77
+ Rainbow(project.get(:lessonpath)).bright
78
+ else
79
+ "#{project.get(:lessonpath)} (No)"
80
+ end
81
+ Logger.verboseln m
82
+
83
+ m = ' ├── YAML questions file => '
84
+ m += if Application.instance.config['output']['yaml'] == 'yes'
85
+ Rainbow(project.get(:yamlpath)).bright
86
+ else
87
+ "#{project.get(:yamlpath)} (No)"
88
+ end
89
+ Logger.verboseln m
90
+
91
+ m = ' └── Moodle XML file => '
92
+ m += if Application.instance.config['output']['moodle'] == 'yes'
93
+ Rainbow(project.get(:moodlepath)).bright
94
+ else
95
+ "#{project.get(:moodlepath)} (No)"
96
+ end
97
+ Logger.verboseln m
62
98
  OutputFileExporter.export(data, project)
63
- StatsDisplayer.show(data, project.get(:show_mode))
64
- project.close # Logger use Project.get(:logfile) until the end
99
+ StatsDisplayer.show(data)
100
+ Logger.close
65
101
  end
66
- # rubocop:enable Metrics/AbcSize
67
- # rubocop:enable Metrics/MethodLength
68
102
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asker-tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.5
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Vargas Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-29 00:00:00.000000000 Z
11
+ date: 2022-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.20'
83
- - !ruby/object:Gem::Dependency
84
- name: base64_compatible
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '0.0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '0.0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: minitest
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -138,6 +124,13 @@ files:
138
124
  - lib/asker.rb
139
125
  - lib/asker/ai/ai.rb
140
126
  - lib/asker/ai/ai_calculate.rb
127
+ - lib/asker/ai/code/base_code_ai.rb
128
+ - lib/asker/ai/code/code_ai_factory.rb
129
+ - lib/asker/ai/code/javascript_code_ai.rb
130
+ - lib/asker/ai/code/problem_code_ai.rb
131
+ - lib/asker/ai/code/python_code_ai.rb
132
+ - lib/asker/ai/code/ruby_code_ai.rb
133
+ - lib/asker/ai/code/sql_code_ai.rb
141
134
  - lib/asker/ai/concept_ai.rb
142
135
  - lib/asker/ai/question.rb
143
136
  - lib/asker/ai/stages/base_stage.rb
@@ -149,84 +142,90 @@ files:
149
142
  - lib/asker/ai/stages/stage_s.rb
150
143
  - lib/asker/ai/stages/stage_t.rb
151
144
  - lib/asker/application.rb
152
- - lib/asker/checker.rb
153
145
  - lib/asker/cli.rb
154
- - lib/asker/code/ai/base_code_ai.rb
155
- - lib/asker/code/ai/code_ai_factory.rb
156
- - lib/asker/code/ai/javascript_code_ai.rb
157
- - lib/asker/code/ai/python_code_ai.rb
158
- - lib/asker/code/ai/ruby_code_ai.rb
159
- - lib/asker/code/ai/sql_code_ai.rb
160
- - lib/asker/code/code.rb
146
+ - lib/asker/data/code.rb
161
147
  - lib/asker/data/column.rb
162
148
  - lib/asker/data/concept.rb
163
149
  - lib/asker/data/data_field.rb
150
+ - lib/asker/data/project_data.rb
164
151
  - lib/asker/data/row.rb
165
152
  - lib/asker/data/table.rb
166
153
  - lib/asker/data/template.rb
167
154
  - lib/asker/data/world.rb
168
155
  - lib/asker/displayer/code_displayer.rb
156
+ - lib/asker/displayer/concept_ai_displayer.erb
169
157
  - lib/asker/displayer/concept_ai_displayer.rb
170
158
  - lib/asker/displayer/concept_displayer.rb
171
159
  - lib/asker/displayer/stats_displayer.rb
172
160
  - lib/asker/exporter/code_gift_exporter.rb
173
161
  - lib/asker/exporter/concept_ai_gift_exporter.rb
162
+ - lib/asker/exporter/concept_ai_moodle_exporter.rb
174
163
  - lib/asker/exporter/concept_ai_yaml_exporter.rb
175
164
  - lib/asker/exporter/concept_doc_exporter.rb
165
+ - lib/asker/exporter/data_gift_exporter.rb
176
166
  - lib/asker/exporter/output_file_exporter.rb
177
- - lib/asker/files/config.ini
167
+ - lib/asker/files/asker.ini
178
168
  - lib/asker/files/example-code.haml
179
169
  - lib/asker/files/example-concept.haml
170
+ - lib/asker/files/language/du/connectors.yaml
171
+ - lib/asker/files/language/du/mistakes.yaml
172
+ - lib/asker/files/language/du/templates.yaml
173
+ - lib/asker/files/language/en/connectors.yaml
174
+ - lib/asker/files/language/en/mistakes.yaml
175
+ - lib/asker/files/language/en/templates.yaml
176
+ - lib/asker/files/language/es/connectors.yaml
177
+ - lib/asker/files/language/es/mistakes.yaml
178
+ - lib/asker/files/language/es/templates.yaml
179
+ - lib/asker/files/language/fr/connectors.yaml
180
+ - lib/asker/files/language/fr/mistakes.yaml
181
+ - lib/asker/files/language/fr/templates.yaml
182
+ - lib/asker/files/language/javascript/connectors.yaml
183
+ - lib/asker/files/language/javascript/mistakes.yaml
184
+ - lib/asker/files/language/javascript/templates.yaml
185
+ - lib/asker/files/language/math/connectors.yaml
186
+ - lib/asker/files/language/math/mistakes.yaml
187
+ - lib/asker/files/language/math/templates.yaml
188
+ - lib/asker/files/language/python/connectors.yaml
189
+ - lib/asker/files/language/python/mistakes.yaml
190
+ - lib/asker/files/language/python/templates.yaml
191
+ - lib/asker/files/language/ruby/connectors.yaml
192
+ - lib/asker/files/language/ruby/mistakes.yaml
193
+ - lib/asker/files/language/ruby/templates.yaml
194
+ - lib/asker/files/language/sql/connectors.yaml
195
+ - lib/asker/files/language/sql/mistakes.yaml
196
+ - lib/asker/files/language/sql/templates.yaml
180
197
  - lib/asker/formatter/code_string_formatter.rb
181
198
  - lib/asker/formatter/concept_doc_formatter.rb
182
199
  - lib/asker/formatter/concept_string_formatter.rb
200
+ - lib/asker/formatter/moodle/matching.erb
201
+ - lib/asker/formatter/moodle/multichoice.erb
202
+ - lib/asker/formatter/moodle/shortanswer.erb
203
+ - lib/asker/formatter/moodle/truefalse.erb
183
204
  - lib/asker/formatter/question_gift_formatter.rb
184
205
  - lib/asker/formatter/question_hash_formatter.rb
206
+ - lib/asker/formatter/question_moodle_formatter.rb
185
207
  - lib/asker/formatter/question_moodlexml_formatter.rb
186
208
  - lib/asker/formatter/rb2haml_formatter.rb
209
+ - lib/asker/input_checker.rb
187
210
  - lib/asker/lang/lang.rb
188
211
  - lib/asker/lang/lang_factory.rb
189
- - lib/asker/lang/locales/du/templates.yaml
190
- - lib/asker/lang/locales/en/connectors.yaml
191
- - lib/asker/lang/locales/en/mistakes.yaml
192
- - lib/asker/lang/locales/en/templates.yaml
193
- - lib/asker/lang/locales/es/connectors.yaml
194
- - lib/asker/lang/locales/es/mistakes.yaml
195
- - lib/asker/lang/locales/es/templates.yaml
196
- - lib/asker/lang/locales/fr/connectors.yaml
197
- - lib/asker/lang/locales/fr/mistakes.yaml
198
- - lib/asker/lang/locales/fr/templates.yaml
199
- - lib/asker/lang/locales/javascript/connectors.yaml
200
- - lib/asker/lang/locales/javascript/mistakes.yaml
201
- - lib/asker/lang/locales/javascript/templates.yaml
202
- - lib/asker/lang/locales/math/connectors.yaml
203
- - lib/asker/lang/locales/math/mistakes.yaml
204
- - lib/asker/lang/locales/math/templates.yaml
205
- - lib/asker/lang/locales/python/connectors.yaml
206
- - lib/asker/lang/locales/python/mistakes.yaml
207
- - lib/asker/lang/locales/python/templates.yaml
208
- - lib/asker/lang/locales/ruby/connectors.yaml
209
- - lib/asker/lang/locales/ruby/mistakes.yaml
210
- - lib/asker/lang/locales/ruby/templates.yaml
211
- - lib/asker/lang/locales/sql/connectors.yaml
212
- - lib/asker/lang/locales/sql/mistakes.yaml
213
- - lib/asker/lang/locales/sql/templates.yaml
214
212
  - lib/asker/lang/text_actions.rb
215
213
  - lib/asker/loader/code_loader.rb
216
214
  - lib/asker/loader/content_loader.rb
217
215
  - lib/asker/loader/directory_loader.rb
216
+ - lib/asker/loader/embedded_file.rb
218
217
  - lib/asker/loader/file_loader.rb
218
+ - lib/asker/loader/haml_loader.rb
219
219
  - lib/asker/loader/image_url_loader.rb
220
220
  - lib/asker/loader/input_loader.rb
221
221
  - lib/asker/loader/project_loader.rb
222
222
  - lib/asker/logger.rb
223
- - lib/asker/project.rb
224
223
  - lib/asker/skeleton.rb
225
- homepage: https://github.com/dvarrui/asker/tree/devel
224
+ homepage: https://github.com/teuton-software/asker/tree/v2.2
226
225
  licenses:
227
226
  - GPL-3.0
228
227
  metadata: {}
229
- post_install_message: Use asker command!
228
+ post_install_message:
230
229
  rdoc_options: []
231
230
  require_paths:
232
231
  - lib
@@ -234,7 +233,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
234
233
  requirements:
235
234
  - - ">="
236
235
  - !ruby/object:Gem::Version
237
- version: 2.3.0
236
+ version: 2.6.9
238
237
  required_rubygems_version: !ruby/object:Gem::Requirement
239
238
  requirements:
240
239
  - - ">="
@@ -1,48 +0,0 @@
1
-
2
- require_relative '../../lang/lang_factory'
3
- require_relative '../../ai/question'
4
-
5
- class BaseCodeAI
6
- def name
7
- File.basename(@data_object.filename)
8
- end
9
-
10
- def num
11
- @num += 1
12
- end
13
-
14
- def clone_array(array)
15
- out = []
16
- array.each { |item| out << item.dup }
17
- out
18
- end
19
-
20
- def lines_to_s(lines)
21
- out = ''
22
- lines.each_with_index do |line,index|
23
- out << "%2d: #{line}\n"%(index+1)
24
- end
25
- out
26
- end
27
-
28
- def lines_to_html(lines)
29
- out = ''
30
- lines.each_with_index do |line,index|
31
- out << "%2d: #{line}</br>"%(index+1)
32
- end
33
- out
34
- end
35
-
36
- def find_make_methods
37
- list = self.public_methods.sort
38
- list.select! { |name| name.to_s.start_with? 'make_'}
39
- list.delete(:make_questions)
40
- list
41
- end
42
-
43
- def make_questions
44
- list = find_make_methods
45
- list.each { |m| @questions += self.send m }
46
- @questions
47
- end
48
- end
@@ -1,53 +0,0 @@
1
- require_relative 'ai/code_ai_factory'
2
- require_relative '../project'
3
- require_relative '../formatter/code_string_formatter'
4
-
5
- # Contains code data input
6
- class Code
7
- attr_reader :dirname, :filename, :type
8
- attr_accessor :process, :features
9
- attr_reader :lines, :questions
10
-
11
- def initialize(dirname, filename, type)
12
- @dirname = dirname
13
- @filename = filename
14
- @type = type
15
- @filepath = File.join(@dirname, @filename)
16
- @process = false
17
- @features = []
18
- @lines = load(@filepath)
19
- @questions = []
20
- @code_ai = CodeAIFactory.get(self)
21
- end
22
-
23
- def process?
24
- @process
25
- end
26
-
27
- def make_questions
28
- return unless process?
29
- @questions += @code_ai.make_questions
30
- end
31
-
32
- def lines_to_s(lines)
33
- out = ''
34
- lines.each_with_index do |line, index|
35
- out << format("%2d| #{line}\n", (index + 1))
36
- end
37
- out
38
- end
39
-
40
- def debug
41
- out = CodeStringFormatter.to_s(self)
42
- p = Project.instance
43
- p.verbose out
44
- end
45
-
46
- private
47
-
48
- def load(filepath)
49
- return if filepath.nil?
50
- content = File.read(filepath)
51
- content.split("\n")
52
- end
53
- end
@@ -1,50 +0,0 @@
1
- ---
2
- :none: keine Antwort ist richtig
3
- :error: Fehler
4
- :misspelling: Rechtschreibfehler
5
- :true: richtig
6
- :false: falsch
7
- :d1: 'Bedeutung \: <i><%=text1%></i><br/> Wählen Sie die dazu passende Option aus, die am besten zu der vorstehenden Bedeutung passt.<br/>'
8
- :d2: 'Bedeutung des Begriffs <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/>'
9
- :d3: 'Bedeutung des Begriffs <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/></br><p> Bemerkung: Ein Fragezeichnen stellt einen Buchstaben dar, und ein Sternchen steht für ein Wort oder mehrere Wörter.</p>'
10
- :d4: 'Bedeutung des Begriffs <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/><br/>(Setzen Sie die Wörter in die Lücken ein)'
11
-
12
- :b1: 'En relación al concepto <b><%=text1%></b>, asocia cada "<%=text2%>" con su "<%=text3%>".<br/>'
13
- :f1: 'Los siguientes elementos son "<%=text2%>" del concepto <b><%=text1%></b>\:<ul><li><%=text3%></li></ul>'
14
- :f2: 'Los siguientes elementos son "<%=text2%>".<br/>Selecciona la opción que no pertenezca al concepto <b><%=text1%></b>.'
15
- :f3: 'Los siguientes elementos son "<%=text2%>" del concepto <b><%=text1%></b>\:<br><p><%=text3%></p>(Coloca cada palabra en su posición correcta dentro del texto)'
16
- :i1: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Elige la opción que mejor se corresponda con la imagen anterior.<br/>'
17
- :i2: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>La imagen anterior corresponde a <b><%=text2%></b>.'
18
- :i3: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Escribe la opción <%=text2%>, que mejor corresponda con la imagen anterior.<br/>'
19
- :i4: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Definición\: <i><%=text2%></i><br/><br/>(Coloca cada palabra en su posición correcta dentro del texto)'
20
- :s1: 'En relación al concepto <b><%=text1%></b>, ordena cada "<%=text2%>" de modo que se cumpla el criterio "<%=text3%>".<br/>'
21
- :t1table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Elige la opción correcta.<br/>'
22
- :t2table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Elige la opción correcta.<br/>'
23
- :t3table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Elige la opción correcta.<br/>'
24
- :t4table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Elige la opción correcta.<br/>'
25
- :t5table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
26
- :t6table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
27
- :t7table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
28
- :t8table: 'Concepto <b><%=text1%></b><br/>Completa la siguiente asociación\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: [*]</li></ul>Escribir una palabra.<br/>'
29
- :t9table: 'Concepto <b><%=text1%></b><br/>Completa la siguiente asociación\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: <%=text5%></li></ul>Escribir <%=text6%> palabras.<br/>'
30
- :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
31
-
32
- B1: In Bezug auf den Begriff (+++++), verbinden Sie die passenden Begriffe.
33
- F1: Die folgenden Elemente sind (+++++) des Begriffs (++++)
34
- F2: Die folgenden Elemente sind (+++++) Wählen Sie die Antwortmöglichkeit aus, die nicht zum Begriff (++++) passt
35
- F3: Die folgenden Elemente sind (+++++) des Begriffs (++++) (Setzen Sie die Wörter in die Lücken ein)
36
- I1: Wählen Sie die Antwortmöglichkeit, die am besten zu dem gezeigten Bild passt.
37
- I2: Das gezeigte Bild gehört zu (++++)
38
- I3: Setzen Sie die Antwort ein (+++), die am besten zu dem gezeigten Bild passt.
39
- I4: Bedeutung (Setzen Sie die Wörter in die Lücken ein)
40
- S1: Beziehen Sie sich auf den Begriff (+++++) und ordnen Sie die richtigen Lösungen zu.
41
- T1: Begriff / Wählen Sie die richtige Lösung aus.
42
- T2: Begriff / Wählen Sie die richtige Lösung aus.
43
- T3: Begriff / Wählen Sie die richtige Lösung aus.
44
- T4: Begriff / Wählen Sie die richtige Lösung aus.
45
- T5: Begriff / Die Lösung ist richtig
46
- T6: Begriff / Die Lösung ist richtig
47
- T7: Begriff / Die Lösung ist richtig
48
- T8: Begriff / Vervollständigen Sie / Schreiben Sie einen Begriff
49
- T9: Begriff / Verbinden Sie / Schreiben Sie fogende Begriffe
50
- Code1: Nennen Sie die Nummer der Zeile, in der sich der erste Fehler befindet / Wenn es keinen Fehler gibt, setzen Sie 0 ein.
@@ -1,29 +0,0 @@
1
- ---
2
- :none: 'No correct'
3
- :error: 'Error'
4
- :misspelling: 'Misspelling'
5
- :true: 'True'
6
- :false: 'False'
7
- :d1: 'Definition\: <i><%=text1%></i><br/>Choose the best association for the previous definition.<br/>'
8
- :d2: 'Definition of <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/>'
9
- :d3: 'Definition of <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/><p>Note: Every ? symbol represents one letter, and * severals.</p>'
10
- :d4: 'Definition of <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/><br/>(Put every word into the right position)'
11
- :b1: 'Related with concept <b><%=text1%></b>, associate every "<%=text2%>" with their "<%=text3%>".<br/>'
12
- :f1: 'The next items are "<%=text2%>" from <b><%=text1%></b> concept\:<br/><ul><li><%=text3%></li></ul>'
13
- :f2: 'The next items are "<%=text2%>".<br/>Choose the option that not belongs concept <b><%=text1%></b>.'
14
- :f3: 'The next items are ""<%=text2%>" from <b><%=text1%></b> concept\:<br><p><%=text3%></p>(Put every word into the right position)'
15
- :i1: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Choose the best association for the previous image.<br/>'
16
- :i2: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>The previous image corresponds to <b><%=text2%></b>.'
17
- :i3: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Write the best answer <%=text2%>, for the previous image.<br/>'
18
- :i4: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Definition\:<br/> <i><%=text2%></i><br/><br/>(Put every word in the right text position)'
19
- :s1: "About <b><%=text1%></b> concept, sort every \"<%=text2%>\", so It is true that \"<%=text3%>\".<br/>"
20
- :t1table: '<b>Concept <%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>: "<%=text4%>"<br/>Choose the right answer.<br/>'
21
- :t2table: '<b>Concept <%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>: "<%=text4%>"<br/>Choose the right answer.<br/>'
22
- :t3table: '<b>Concept <%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>\: [*]<br/>Choose the right answer.<br/>'
23
- :t4table: '<b>Concept <%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>\: [*]<br/>Choose the right answer.<br/>'
24
- :t5table: '<b>Concept <%=text1%></b><br/>The next association is right\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
25
- :t6table: '<b>Concept <%=text1%></b><br/>The next association is right\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
26
- :t7table: '<b>Concept <%=text1%></b><br/>The next association is right\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
27
- :t8table: '<b>Concept <%=text1%></b><br/>Complete the next association\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: [*]</li></ul>Write only one word.<br/>'
28
- :t9table: '<b>Concept <%=text1%></b><br/>Complete the next association\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: <%=text5%></li></ul>Write <%=text6%> words.<br/>'
29
- :code1: '<pre><%=text1%></pre><br/><p>Write the number of the first wrong line. Write 0 if there is no fail.</p>'
@@ -1,29 +0,0 @@
1
- ---
2
- :none: 'Ninguna es correcta'
3
- :error: 'Error'
4
- :misspelling: 'Error ortográfico'
5
- :true: 'Verdadero'
6
- :false: 'Falso'
7
- :d1: 'Definición \: <i><%=text1%></i><br/>Elige la opción que mejor se corresponda con la definición anterior.<br/>'
8
- :d2: 'Definición de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/>'
9
- :d3: 'Definición de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/></br><p>Nota: Cada símbolo ? representa una letra, y * a una o varias palabras.</p>'
10
- :d4: 'Definición de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/><br/>(Coloca cada palabra en su posición correcta dentro del texto)'
11
- :b1: 'En relación al concepto <b><%=text1%></b>, asocia cada "<%=text2%>" con su "<%=text3%>".<br/>'
12
- :f1: 'Los siguientes elementos son "<%=text2%>" del concepto <b><%=text1%></b>\:<ul><li><%=text3%></li></ul>'
13
- :f2: 'Los siguientes elementos son "<%=text2%>".<br/>Selecciona la opción que no pertenezca al concepto <b><%=text1%></b>.'
14
- :f3: 'Los siguientes elementos son "<%=text2%>" del concepto <b><%=text1%></b>\:<br><p><%=text3%></p>(Coloca cada palabra en su posición correcta dentro del texto)'
15
- :i1: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Elige la opción que mejor se corresponda con la imagen anterior.<br/>'
16
- :i2: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>La imagen anterior corresponde a <b><%=text2%></b>.'
17
- :i3: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Escribe la opción <%=text2%>, que mejor corresponda con la imagen anterior.<br/>'
18
- :i4: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Definición\: <i><%=text2%></i><br/><br/>(Coloca cada palabra en su posición correcta dentro del texto)'
19
- :s1: 'En relación al concepto <b><%=text1%></b>, ordena cada/las/los "<%=text2%>" de modo que se cumpla el criterio "<%=text3%>".<br/>'
20
- :t1table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Elige la opción correcta.<br/>'
21
- :t2table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Elige la opción correcta.<br/>'
22
- :t3table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Elige la opción correcta.<br/>'
23
- :t4table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Elige la opción correcta.<br/>'
24
- :t5table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
25
- :t6table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
26
- :t7table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
27
- :t8table: 'Concepto <b><%=text1%></b><br/>Completa la siguiente asociación\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: [*]</li></ul>Escribir una palabra.<br/>'
28
- :t9table: 'Concepto <b><%=text1%></b><br/>Completa la siguiente asociación\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: <%=text5%></li></ul>Escribir <%=text6%> palabras.<br/>'
29
- :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
@@ -1,92 +0,0 @@
1
- ---
2
- - '[*]'
3
- - a
4
- - al
5
- - ante
6
- - bajo
7
- - cada
8
- - como
9
- - cómo
10
- - con
11
- - contra
12
- - cuando
13
- - cuanto
14
- - cual
15
- - de
16
- - del
17
- - desde
18
- - e
19
- - en
20
- - entre
21
- - él
22
- - el
23
- - ella
24
- - ellos
25
- - es
26
- - ese
27
- - esa
28
- - eso
29
- - esos
30
- - esas
31
- - este
32
- - esto
33
- - esta
34
- - estos
35
- - estas
36
- - hacia
37
- - hasta
38
- - la
39
- - las
40
- - lo
41
- - los
42
- - le
43
- - les
44
- - mas
45
- - más
46
- - mi
47
- - me
48
- - muy
49
- - muchos
50
- - mucho
51
- - no
52
- - nos
53
- - nosotros
54
- - o
55
- - para
56
- - pero
57
- - por
58
- - porqué
59
- - porque
60
- - que
61
- - qué
62
- - quien
63
- - si
64
- - sin
65
- - sobre
66
- - toda
67
- - todas
68
- - todo
69
- - todos
70
- - tras
71
- - tu
72
- - tú
73
- - se
74
- - su
75
- - sus
76
- - suyo
77
- - suyos
78
- - mío
79
- - míos
80
- - u
81
- - un
82
- - uno
83
- - unos
84
- - una
85
- - unas
86
- - vosotros
87
- - vuestro
88
- - vuestros
89
- - nuestro
90
- - nuestros
91
- - y
92
- - yo