asker-tool 2.1.3 → 2.1.5

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -17
  3. data/lib/asker.rb +40 -83
  4. data/lib/asker/application.rb +1 -1
  5. data/lib/asker/checker.rb +42 -25
  6. data/lib/asker/cli.rb +1 -1
  7. data/lib/asker/data/world.rb +2 -0
  8. data/lib/asker/{exporter/code_screen_exporter.rb → displayer/code_displayer.rb} +6 -6
  9. data/lib/asker/{exporter/concept_ai_screen_exporter.rb → displayer/concept_ai_displayer.rb} +27 -29
  10. data/lib/asker/displayer/concept_displayer.rb +27 -0
  11. data/lib/asker/displayer/stats_displayer.rb +13 -0
  12. data/lib/asker/exporter/code_gift_exporter.rb +10 -11
  13. data/lib/asker/exporter/concept_ai_gift_exporter.rb +9 -9
  14. data/lib/asker/exporter/concept_ai_yaml_exporter.rb +2 -4
  15. data/lib/asker/exporter/concept_doc_exporter.rb +9 -15
  16. data/lib/asker/exporter/output_file_exporter.rb +18 -0
  17. data/lib/asker/files/example-concept.haml +25 -8
  18. data/lib/asker/formatter/concept_string_formatter.rb +9 -8
  19. data/lib/asker/lang/lang.rb +3 -4
  20. data/lib/asker/lang/locales/du/templates.yaml +50 -0
  21. data/lib/asker/lang/locales/en/connectors.yaml +44 -0
  22. data/lib/asker/lang/locales/en/mistakes.yaml +37 -0
  23. data/lib/asker/lang/locales/en/templates.yaml +29 -0
  24. data/lib/asker/lang/locales/es/connectors.yaml +92 -0
  25. data/lib/asker/lang/locales/es/mistakes.yaml +82 -0
  26. data/lib/asker/lang/locales/es/templates.yaml +29 -0
  27. data/lib/asker/lang/locales/fr/connectors.yaml +92 -0
  28. data/lib/asker/lang/locales/fr/mistakes.yaml +82 -0
  29. data/lib/asker/lang/locales/fr/templates.yaml +29 -0
  30. data/lib/asker/lang/locales/javascript/connectors.yaml +11 -0
  31. data/lib/asker/lang/locales/javascript/mistakes.yaml +30 -0
  32. data/lib/asker/lang/locales/javascript/templates.yaml +3 -0
  33. data/lib/asker/lang/locales/math/connectors.yaml +2 -0
  34. data/lib/asker/lang/locales/math/mistakes.yaml +2 -0
  35. data/lib/asker/lang/locales/math/templates.yaml +1 -0
  36. data/lib/asker/lang/locales/python/connectors.yaml +11 -0
  37. data/lib/asker/lang/locales/python/mistakes.yaml +26 -0
  38. data/lib/asker/lang/locales/python/templates.yaml +3 -0
  39. data/lib/asker/lang/locales/ruby/connectors.yaml +11 -0
  40. data/lib/asker/lang/locales/ruby/mistakes.yaml +33 -0
  41. data/lib/asker/lang/locales/ruby/templates.yaml +3 -0
  42. data/lib/asker/lang/locales/sql/connectors.yaml +6 -0
  43. data/lib/asker/lang/locales/sql/mistakes.yaml +11 -0
  44. data/lib/asker/lang/locales/sql/templates.yaml +2 -0
  45. data/lib/asker/loader/input_loader.rb +22 -5
  46. data/lib/asker/loader/project_loader.rb +25 -24
  47. data/lib/asker/logger.rb +1 -2
  48. data/lib/asker/project.rb +5 -3
  49. data/lib/asker/skeleton.rb +25 -24
  50. metadata +47 -63
  51. data/docs/changelog/v2.1.md +0 -99
  52. data/docs/commands.md +0 -12
  53. data/docs/contributions.md +0 -18
  54. data/docs/history.md +0 -40
  55. data/docs/idea.md +0 -44
  56. data/docs/inputs/README.md +0 -39
  57. data/docs/inputs/code.md +0 -69
  58. data/docs/inputs/concepts.md +0 -142
  59. data/docs/inputs/jedi.md +0 -68
  60. data/docs/inputs/tables.md +0 -112
  61. data/docs/inputs/templates.md +0 -87
  62. data/docs/install/README.md +0 -38
  63. data/docs/install/manual.md +0 -26
  64. data/docs/install/scripts.md +0 -38
  65. data/docs/revise/asker-file.md +0 -41
  66. data/docs/revise/buenas-practicas/01-convocatoria.md +0 -30
  67. data/docs/revise/buenas-practicas/02-formulario.md +0 -35
  68. data/docs/revise/buenas-practicas/03-descripcion.md +0 -63
  69. data/docs/revise/buenas-practicas/04-resultados.md +0 -17
  70. data/docs/revise/buenas-practicas/05-reproducir.md +0 -10
  71. data/docs/revise/ejemplos/01/README.md +0 -27
  72. data/docs/revise/ejemplos/02/README.md +0 -31
  73. data/docs/revise/ejemplos/03/README.md +0 -31
  74. data/docs/revise/ejemplos/04/README.md +0 -37
  75. data/docs/revise/ejemplos/05/README.md +0 -25
  76. data/docs/revise/ejemplos/06/README.md +0 -43
  77. data/docs/revise/ejemplos/README.md +0 -11
  78. data/docs/revise/projects.md +0 -74
  79. data/lib/asker/exporter/concept_screen_exporter.rb +0 -25
  80. data/lib/asker/exporter/main.rb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 649acd19a295cc267a200754428f54c987a688cf6b81487d4ea0f2662bc4968a
4
- data.tar.gz: bebb65797eefd45784b3a1db72d0f41c15ec6fca9e8792ca893670712fe425f3
3
+ metadata.gz: 39bc74c80c6c83d62fb43bee32e10d3c3503880132cbaaa81f5e14115c9286d7
4
+ data.tar.gz: b60194338ffb8429c665d726b62f784c7a0787efb79db4a079b4c13bcbcd6fe8
5
5
  SHA512:
6
- metadata.gz: 7aa8c6683ed5931197398b88d2651c06f99fa75f713643bbf04f6c31fbad900d2cdc08efc7ccc6f3ab255de04d6345e7a2751786e760444e91fda4cf84cac1eb
7
- data.tar.gz: 3440de3f9bd77a4c0b3d0ce023ef76bf3335dfe555d52d7bea91b7a9148ac0804659803ae5bd662452801e8c1cbdabc6bfe114b9ec4e2a4d74b5b5d3cef3ef8d
6
+ metadata.gz: 11b8da624fedb21e507ec7f015e8e921d8d2a85efd613e1a85646114e4b505a73f303b96b2a76ce77653cf511143f495dffcb6477959eb43ad139446547e55ae
7
+ data.tar.gz: f6c64ac247cada2b4099385e77b2e86b953f60d4250a01f2907ff811b92d10d50628ffeb0c1f8921bef5900be3f46bec18f664276e03441e8af7ae7183965f28
data/README.md CHANGED
@@ -7,41 +7,41 @@ Generate a lot of questions from an _input file_ base on your own _definitions_.
7
7
 
8
8
  ASKER helps trainers to create a huge amount of questions, from a definitions (_conceptual entities_) input file.
9
9
 
10
- Steps:
11
-
12
- 1. Create an input file with your definitions (_conceptual entities_).
13
- 1. Run _asker_ and get the results into `output` directory.
14
-
15
- Features:
16
-
17
10
  * Free Software [LICENSE](https://github.com/dvarrui/asker/blob/devel/LICENSE).
18
11
  * Multiplatform.
19
- * Input file formats: HAML, XML.
20
- * Output file format: GIFT (Moodle cuestionairs).
21
12
  * Ruby program.
22
13
 
14
+ ---
15
+ # Installation
16
+
17
+ 1. Install Ruby on your system.
18
+ 2. `gem install asker-tool`
19
+
23
20
  ---
24
21
  # Usage
25
22
 
26
- To execute ASKER, we use `asker` command, with a path to an input file as argument. For example, to run our `jedi.haml` input file example, we do:
23
+ Steps:
24
+
25
+ 1. Create an input file with your definitions (_conceptual entities_).
26
+ 1. Run _asker_ and get the results into `output` directory.
27
+
28
+ Run `asker` with our example input file as argument (`jedi.haml`):
27
29
 
28
30
  ```
29
31
  asker docs/examples/starwars/jedi.haml
30
32
  ```
31
33
 
32
- * The program generates your output files into the `output` directory by default.
33
- * In this example, we use a demo input definition file `docs/examples/starwars/jedi.haml`, that contains conceptual entities about _"Jedi's"_ context.
34
- * [Example input files](https://github.com/dvarrui/asker/blob/devel/docs/examples).
35
- * More examples at `github/dvarrui/asker-inputs` repository.
34
+ * Output files created into the `output` folder.
35
+ * This example use an example input definition file `docs/examples/starwars/jedi.haml`, with concepts about _"Jedi's"_. ;-)
36
+ * More [example input files](https://github.com/dvarrui/asker/tree/devel/docs/examples).
37
+ * More asker input files at `github/dvarrui/asker-inputs` repository.
36
38
 
37
39
  ---
38
40
  # Documentation
39
41
 
40
42
  * [Installation](https://github.com/dvarrui/asker/blob/devel/docs/install/README.md)
41
- 1. Install Ruby on your system.
42
- 2. `gem install asker-tool`
43
43
  * [Inputs](https://github.com/dvarrui/asker/blob/devel/docs/inputs/README.md)
44
- * [Commands](https://github.com/dvarrui/asker/blob/devel/docs/commands.md)
44
+ * [Usage](https://github.com/dvarrui/asker/blob/devel/docs/usage.md)
45
45
  * [Contributions](https://github.com/dvarrui/asker/blob/devel/docs/contributions.md)
46
46
  * [Base idea](https://github.com/dvarrui/asker/blob/devel/docs/idea.md)
47
47
  * [History](https://github.com/dvarrui/asker/blob/devel/docs/history.md)
data/lib/asker.rb CHANGED
@@ -2,63 +2,23 @@
2
2
 
3
3
  require 'rainbow'
4
4
 
5
- require_relative 'asker/project'
6
- require_relative 'asker/data/concept'
7
- require_relative 'asker/data/world'
8
- require_relative 'asker/ai/concept_ai'
9
- require_relative 'asker/formatter/concept_string_formatter'
10
- require_relative 'asker/exporter/main'
5
+ require_relative 'asker/displayer/concept_displayer'
6
+ require_relative 'asker/displayer/stats_displayer'
7
+ require_relative 'asker/exporter/output_file_exporter'
11
8
  require_relative 'asker/loader/project_loader'
12
9
  require_relative 'asker/loader/input_loader'
13
10
  require_relative 'asker/checker'
11
+ require_relative 'asker/logger'
14
12
  require_relative 'asker/skeleton'
15
13
 
16
- # This class does all the job
17
- # * start
18
- # * load_input_data
19
- # * create_output_files, show_create_output_files
20
- # * create_questions
21
- # * show_final_results
14
+ ##
15
+ # Asker main class
22
16
  class Asker
23
- # Initialize atributes
24
- def initialize
25
- @concepts_ai = []
26
- @concepts = []
27
- @codes = []
28
- end
29
-
30
- ##
31
- # Start working
32
- # @param args (Hash)
33
- def start(args = {})
34
- load_input_data(args)
35
- create_output_files
36
- show_final_results
37
- end
38
-
39
17
  ##
40
- # Load input data
41
- # @param args (Hash)
42
- def load_input_data(args)
43
- ProjectLoader.load(args)
44
- Project.instance.open
45
- data = InputLoader.load(Project.instance.get(:inputdirs).split(','))
46
- @concepts = data[:concepts]
47
- @codes = data[:codes]
48
- Project.instance.verbose "\n[INFO] Loading data from Internet"
49
- @world = World.new(@concepts)
50
- ConceptScreenExporter.export_all(@concepts)
51
- end
52
-
53
- ##
54
- # Create output files
55
- # * Gift
56
- # * YAML
57
- # * TXT Doc
58
- def create_output_files
59
- show_create_output_files
60
- create_questions
61
- ConceptDocExporter.new(@concepts).export
18
+ # Create asker input demo files
19
+ # @param dirpath (String)
20
+ def self.create_skeleton(dirpath)
21
+ Skeleton.create(dirpath)
62
22
  end
63
23
 
64
24
  ##
@@ -69,43 +29,40 @@ class Asker
69
29
  end
70
30
 
71
31
  ##
72
- # Create asker input demo files
73
- # @param dirpath (String)
74
- def self.create_skeleton(dirpath)
75
- Skeleton.create(dirpath)
76
- end
77
-
78
- private
79
-
80
- def show_create_output_files
81
- p = Project.instance
82
- p.verbose "\n[INFO] Creating output files"
83
- p.verbose " ├── Gift questions file => #{Rainbow(p.outputpath).bright}"
84
- p.verbose " ├── YAML questions file => #{Rainbow(p.yamlpath).bright}"
85
- p.verbose " └── Lesson file => #{Rainbow(p.lessonpath).bright}"
32
+ # Start working
33
+ # @param filepath (String) HAML or XML filepath
34
+ def self.start(filepath)
35
+ project, data = load_input(filepath)
36
+ ConceptDisplayer.show(data[:concepts], project.get(:show_mode))
37
+ create_output(project, data)
86
38
  end
87
39
 
88
40
  ##
89
- # Create questions for every "concept"
90
- # Export output to:
91
- # * GIFT format file
92
- # * YAML format file
93
- # Create questions for every "code"
94
- # Export output to GIFT format file
95
- def create_questions
96
- @concepts.each do |concept|
97
- concept_ai = ConceptAI.new(concept, @world)
98
- concept_ai.make_questions
99
- @concepts_ai << concept_ai
100
- end
101
- ConceptAIGiftExporter.export_all(@concepts_ai)
102
- ConceptAIYAMLExporter.export_all(@concepts_ai)
103
- CodeGiftExporter.export_all(@codes) # UNDER DEVELOPMENT
41
+ # Load input data
42
+ # @param args (Hash)
43
+ 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]
104
48
  end
105
49
 
106
- def show_final_results
107
- ConceptAIScreenExporter.export_all(@concepts_ai)
108
- CodeScreenExporter.export_all(@codes)
109
- Project.instance.close
50
+ ##
51
+ # Create output files: Gift, YAML, TXT Doc
52
+ # rubocop:disable Metrics/AbcSize
53
+ # rubocop:disable Metrics/MethodLength
54
+ 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
62
+ OutputFileExporter.export(data, project)
63
+ StatsDisplayer.show(data, project.get(:show_mode))
64
+ project.close # Logger use Project.get(:logfile) until the end
110
65
  end
66
+ # rubocop:enable Metrics/AbcSize
67
+ # rubocop:enable Metrics/MethodLength
111
68
  end
@@ -7,7 +7,7 @@ require 'inifile'
7
7
  class Application
8
8
  include Singleton
9
9
 
10
- VERSION = '2.1.3' # Application version
10
+ VERSION = '2.1.5' # Application version
11
11
  NAME = 'asker' # Application name
12
12
  GEM = 'asker-tool' # Gem name
13
13
  attr_reader :config
data/lib/asker/checker.rb CHANGED
@@ -1,7 +1,15 @@
1
1
 
2
2
  require 'rainbow'
3
3
 
4
+ ##
5
+ # Check HAML file syntax
4
6
  module Checker
7
+ ##
8
+ # Check:
9
+ # * file exist
10
+ # * filename extension
11
+ # * and HAML syntax
12
+ # @param filepath (String)
5
13
  def self.check(filepath)
6
14
  unless File.exist? filepath
7
15
  puts Rainbow("File not found!").red.bright
@@ -14,6 +22,9 @@ module Checker
14
22
  check_filepath(filepath)
15
23
  end
16
24
 
25
+ ##
26
+ # Check HAML syntax
27
+ # @param filepath (String)
17
28
  def self.check_filepath(filepath)
18
29
  data = Data.new(filepath)
19
30
  data.check
@@ -85,6 +96,8 @@ module Checker
85
96
  @ok
86
97
  end
87
98
 
99
+ private
100
+
88
101
  def check_empty_lines(line, index)
89
102
  if line.strip.size.zero? or line.start_with? '#'
90
103
  @outputs[index][:type] = :empty
@@ -100,12 +113,12 @@ module Checker
100
113
  @outputs[index][:state] = :ok
101
114
  else
102
115
  @outputs[index][:state] = :err
103
- @outputs[index][:msg] = "Start with '%map{'"
116
+ @outputs[index][:msg] = 'Start with %map{'
104
117
  end
105
118
  elsif index > 0 and line.include?('%map{')
106
119
  @outputs[index][:state] = :err
107
120
  @outputs[index][:type] = :map
108
- @outputs[index][:msg] = "Write '%map' on line 0"
121
+ @outputs[index][:msg] = 'Write %map on line 0'
109
122
  end
110
123
  end
111
124
 
@@ -135,9 +148,9 @@ module Checker
135
148
  if find_parent(index) != :concept
136
149
  @outputs[index][:state] = :err
137
150
  @outputs[index][:msg] = 'Parent(concept) not found!'
138
- elsif not line.start_with? ' %names'
151
+ elsif !line.start_with? ' %names'
139
152
  @outputs[index][:state] = :err
140
- @outputs[index][:msg] = "Write 4 spaces before %names"
153
+ @outputs[index][:msg] = 'Write 4 spaces before %names'
141
154
  end
142
155
  end
143
156
 
@@ -151,9 +164,9 @@ module Checker
151
164
  if find_parent(index) != :concept
152
165
  @outputs[index][:state] = :err
153
166
  @outputs[index][:msg] = 'Parent(concept) not found!'
154
- elsif not line.start_with? ' %tags'
167
+ elsif !line.start_with? ' %tags'
155
168
  @outputs[index][:state] = :err
156
- @outputs[index][:msg] = "Write 4 spaces before %tags"
169
+ @outputs[index][:msg] = 'Write 4 spaces before %tags'
157
170
  end
158
171
  end
159
172
 
@@ -167,9 +180,9 @@ module Checker
167
180
  if find_parent(index) != :concept
168
181
  @outputs[index][:state] = :err
169
182
  @outputs[index][:msg] = 'Parent(concept) not found!'
170
- elsif not line.start_with? ' %def'
183
+ elsif !line.start_with? ' %def'
171
184
  @outputs[index][:state] = :err
172
- @outputs[index][:msg] = "Write 4 spaces before %def"
185
+ @outputs[index][:msg] = 'Write 4 spaces before %def'
173
186
  end
174
187
  end
175
188
 
@@ -183,9 +196,9 @@ module Checker
183
196
  if find_parent(index) != :concept
184
197
  @outputs[index][:state] = :err
185
198
  @outputs[index][:msg] = 'Parent(concept) not found!'
186
- elsif not line.start_with? ' %table'
199
+ elsif !line.start_with? ' %table'
187
200
  @outputs[index][:state] = :err
188
- @outputs[index][:msg] = "Write 4 spaces before %table"
201
+ @outputs[index][:msg] = 'Write 4 spaces before %table'
189
202
  end
190
203
  end
191
204
 
@@ -211,7 +224,7 @@ module Checker
211
224
  end
212
225
  else
213
226
  @outputs[index][:state] = :err
214
- @outputs[index][:msg] = "Write 6 or 8 spaces before %row"
227
+ @outputs[index][:msg] = 'Write 6 or 8 spaces before %row'
215
228
  end
216
229
  end
217
230
 
@@ -235,7 +248,7 @@ module Checker
235
248
  end
236
249
  else
237
250
  @outputs[index][:state] = :err
238
- @outputs[index][:msg] = "Write 8 or 10 spaces before %col"
251
+ @outputs[index][:msg] = 'Write 8 or 10 spaces before %col'
239
252
  end
240
253
  end
241
254
 
@@ -249,9 +262,9 @@ module Checker
249
262
  if find_parent(index) != :table
250
263
  @outputs[index][:state] = :err
251
264
  @outputs[index][:msg] = 'Parent(concept) not found!'
252
- elsif not line.start_with? ' %template'
265
+ elsif !line.start_with? ' %template'
253
266
  @outputs[index][:state] = :err
254
- @outputs[index][:msg] = "Write 6 spaces before %template"
267
+ @outputs[index][:msg] = 'Write 6 spaces before %template'
255
268
  end
256
269
  end
257
270
 
@@ -281,9 +294,9 @@ module Checker
281
294
  if find_parent(index) != :code
282
295
  @outputs[index][:state] = :err
283
296
  @outputs[index][:msg] = 'Parent(code) not found!'
284
- elsif not line.start_with? ' %type'
297
+ elsif !line.start_with? ' %type'
285
298
  @outputs[index][:state] = :err
286
- @outputs[index][:msg] = "Write 4 spaces before %type"
299
+ @outputs[index][:msg] = 'Write 4 spaces before %type'
287
300
  end
288
301
  end
289
302
 
@@ -297,9 +310,9 @@ module Checker
297
310
  if find_parent(index) != :code
298
311
  @outputs[index][:state] = :err
299
312
  @outputs[index][:msg] = 'Parent(code) not found!'
300
- elsif not line.start_with? ' %path'
313
+ elsif !line.start_with? ' %path'
301
314
  @outputs[index][:state] = :err
302
- @outputs[index][:msg] = "Write 4 spaces before %type"
315
+ @outputs[index][:msg] = 'Write 4 spaces before %type'
303
316
  end
304
317
  end
305
318
 
@@ -313,16 +326,17 @@ module Checker
313
326
  if find_parent(index) != :code
314
327
  @outputs[index][:state] = :err
315
328
  @outputs[index][:msg] = 'Parent(code) not found!'
316
- elsif not line.start_with? ' %features'
329
+ elsif !line.start_with? ' %features'
317
330
  @outputs[index][:state] = :err
318
- @outputs[index][:msg] = "Write 4 spaces before %features"
331
+ @outputs[index][:msg] = 'Write 4 spaces before %features'
319
332
  end
320
333
  end
321
334
 
322
335
  def check_unknown(line, index)
323
336
  return unless @outputs[index][:state] == :none
337
+
324
338
  @outputs[index][:type] = :unknown
325
- @outputs[index][:level] = count_spaces(line)/2
339
+ @outputs[index][:level] = count_spaces(line) / 2
326
340
  @outputs[index][:state] = :err
327
341
  @outputs[index][:msg] = "Unknown tag with parent(#{find_parent(index)})!"
328
342
  end
@@ -330,12 +344,14 @@ module Checker
330
344
  def find_parent(index)
331
345
  current_level = @outputs[index][:level]
332
346
  return :noparent if current_level.zero?
347
+
333
348
  i = index - 1
334
- while(i >= 0)
349
+ while i >= 0
335
350
  return @outputs[i][:type] if @outputs[i][:level] == current_level - 1
336
- i = i - 1
351
+
352
+ i -= 1
337
353
  end
338
- return :noparent
354
+ :noparent
339
355
  end
340
356
 
341
357
  def count_spaces(line)
@@ -350,7 +366,8 @@ module Checker
350
366
  return 8 if line.start_with? ' %'
351
367
  return 9 if line.start_with? ' %'
352
368
  return 10 if line.start_with? ' %'
353
- return -1
369
+
370
+ -1
354
371
  end
355
372
  end
356
373
  end
data/lib/asker/cli.rb CHANGED
@@ -45,7 +45,7 @@ class CLI < Thor
45
45
  # Enable/disable color output
46
46
  Rainbow.enabled = false if options['color'] == false
47
47
  # Asker start processing input file
48
- Asker.new.start(filename)
48
+ Asker.start(filename)
49
49
  end
50
50
 
51
51
  map ['i', '-i', '--init'] => 'init'
@@ -1,6 +1,7 @@
1
1
 
2
2
  require_relative '../loader/image_url_loader'
3
3
  require_relative '../project'
4
+ require_relative '../logger'
4
5
 
5
6
  class World
6
7
  attr_reader :concepts, :filenames, :contexts, :image_urls
@@ -23,6 +24,7 @@ class World
23
24
  @filenames.uniq!
24
25
  @contexts.uniq!
25
26
 
27
+ Logger.verbose "\n[INFO] Loading data from Internet" if show_progress
26
28
  threads = []
27
29
  concepts.each do |c|
28
30
  print('.') if show_progress