asker-tool 2.1.5 → 2.2.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.
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