asker-tool 2.1.7 → 2.2.3

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/{LICENSE.txt → LICENSE} +0 -0
  3. data/README.md +14 -15
  4. data/bin/asker +1 -1
  5. data/lib/asker/ai/ai.rb +6 -3
  6. data/lib/asker/ai/ai_calculate.rb +20 -6
  7. data/lib/asker/ai/concept_ai.rb +12 -3
  8. data/lib/asker/ai/question.rb +28 -6
  9. data/lib/asker/ai/stages/base_stage.rb +45 -6
  10. data/lib/asker/ai/stages/stage_b.rb +90 -49
  11. data/lib/asker/ai/stages/stage_d.rb +69 -90
  12. data/lib/asker/ai/stages/stage_f.rb +47 -38
  13. data/lib/asker/ai/stages/stage_i.rb +79 -92
  14. data/lib/asker/ai/stages/stage_s.rb +41 -36
  15. data/lib/asker/ai/stages/stage_t.rb +114 -73
  16. data/lib/asker/application.rb +7 -16
  17. data/lib/asker/check_input/check_haml_data.rb +264 -0
  18. data/lib/asker/check_input/check_table.rb +104 -0
  19. data/lib/asker/check_input.rb +51 -0
  20. data/lib/asker/cli.rb +47 -44
  21. data/lib/asker/data/code.rb +5 -16
  22. data/lib/asker/data/concept.rb +71 -24
  23. data/lib/asker/data/project_data.rb +63 -0
  24. data/lib/asker/data/table.rb +2 -0
  25. data/lib/asker/data/template.rb +3 -1
  26. data/lib/asker/data/world.rb +8 -16
  27. data/lib/asker/displayer/code_displayer.rb +7 -0
  28. data/lib/asker/displayer/concept_ai_displayer.erb +10 -0
  29. data/lib/asker/displayer/concept_ai_displayer.rb +24 -22
  30. data/lib/asker/displayer/concept_displayer.rb +9 -4
  31. data/lib/asker/displayer/stats_displayer.rb +8 -0
  32. data/lib/asker/exporter/concept_ai_gift_exporter.rb +7 -11
  33. data/lib/asker/exporter/concept_ai_moodle_exporter.rb +45 -0
  34. data/lib/asker/exporter/concept_ai_yaml_exporter.rb +6 -3
  35. data/lib/asker/exporter/concept_doc_exporter.rb +12 -2
  36. data/lib/asker/exporter/data_gift_exporter.rb +31 -0
  37. data/lib/asker/exporter/output_file_exporter.rb +9 -6
  38. data/lib/asker/files/{config.ini → asker.ini} +14 -4
  39. data/lib/asker/files/language/du/connectors.yaml +81 -0
  40. data/lib/asker/files/language/du/mistakes.yaml +82 -0
  41. data/lib/asker/files/language/du/templates.yaml +28 -49
  42. data/lib/asker/files/language/en/templates.yaml +19 -19
  43. data/lib/asker/files/language/es/mistakes.yaml +9 -7
  44. data/lib/asker/files/language/es/templates.yaml +19 -19
  45. data/lib/asker/files/language/fr/connectors.yaml +68 -84
  46. data/lib/asker/files/language/fr/templates.yaml +22 -22
  47. data/lib/asker/formatter/concept_doc_formatter.rb +0 -4
  48. data/lib/asker/formatter/concept_string_formatter.rb +7 -4
  49. data/lib/asker/formatter/moodle/matching.erb +38 -0
  50. data/lib/asker/formatter/moodle/multichoice.erb +49 -0
  51. data/lib/asker/formatter/moodle/shortanswer.erb +30 -0
  52. data/lib/asker/formatter/moodle/truefalse.erb +47 -0
  53. data/lib/asker/formatter/question_gift_formatter.rb +21 -19
  54. data/lib/asker/formatter/question_moodle_formatter.rb +27 -0
  55. data/lib/asker/lang/lang_factory.rb +7 -1
  56. data/lib/asker/loader/code_loader.rb +1 -1
  57. data/lib/asker/loader/content_loader.rb +12 -14
  58. data/lib/asker/loader/directory_loader.rb +1 -8
  59. data/lib/asker/loader/embedded_file.rb +42 -0
  60. data/lib/asker/loader/file_loader.rb +1 -6
  61. data/lib/asker/loader/haml_loader.rb +9 -5
  62. data/lib/asker/loader/image_url_loader.rb +8 -9
  63. data/lib/asker/loader/input_loader.rb +5 -6
  64. data/lib/asker/loader/project_loader.rb +18 -10
  65. data/lib/asker/logger.rb +36 -9
  66. data/lib/asker/skeleton.rb +3 -2
  67. data/lib/asker/version.rb +9 -0
  68. data/lib/asker.rb +72 -43
  69. metadata +60 -18
  70. data/lib/asker/checker.rb +0 -455
  71. data/lib/asker/project.rb +0 -146
data/lib/asker/project.rb DELETED
@@ -1,146 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'singleton'
4
- require 'rainbow'
5
- # require 'fileutils'
6
- require_relative 'application'
7
- require_relative 'logger'
8
-
9
- # Contains Project data and methods
10
- class Project
11
- include Singleton
12
- attr_reader :default, :param
13
-
14
- ##
15
- # Initialize
16
- def initialize
17
- reset
18
- end
19
-
20
- ##
21
- # Reset project params
22
- def reset
23
- @default = { inputbasedir: FileUtils.pwd,
24
- stages: { d: true, b: true, f: true, i: true, s: true, t: true },
25
- threshold: 0.5 }
26
- @param = {}
27
- end
28
-
29
- ##
30
- # Get value param
31
- # @param key (Symbol) key
32
- def get(key)
33
- return @param[key] unless @param[key].nil?
34
-
35
- @default[key]
36
- end
37
-
38
- ##
39
- # Set value param
40
- # @param key (Symbol) key
41
- # @param value (String) value
42
- def set(key, value)
43
- @param[key] = value
44
- end
45
-
46
- ##
47
- # Open new project
48
- # * setting new params and
49
- # * creating output files
50
- # IMPORTANT: We need at least theses values
51
- # * process_file
52
- # * inputdirs
53
- def open
54
- config = Application.instance.config
55
- ext = File.extname(@param[:process_file]) || '.haml'
56
- #@param[:process_file] = @param[:process_file] ||
57
- # get(:projectdir).split(File::SEPARATOR).last + ext
58
- @param[:projectname] = @param[:projectname] ||
59
- File.basename(@param[:process_file], ext)
60
- #@param[:inputdirs] = @param[:inputdirs] ||
61
- # File.join(get(:inputbasedir), @param[:projectdir])
62
-
63
- @param[:logname] = "#{@param[:projectname]}-log.txt"
64
- @param[:outputname] = "#{@param[:projectname]}-gift.txt"
65
- @param[:lessonname] = "#{@param[:projectname]}-doc.txt"
66
- @param[:yamlname] = "#{@param[:projectname]}.yaml"
67
-
68
- outputdir = config['global']['outputdir']
69
- @param[:logpath] = File.join(outputdir, get(:logname))
70
- @param[:outputpath] = File.join(outputdir, get(:outputname))
71
- @param[:lessonpath] = File.join(outputdir, get(:lessonname))
72
- @param[:yamlpath] = File.join(outputdir, get(:yamlname))
73
-
74
- Dir.mkdir(outputdir) unless Dir.exist?(outputdir)
75
- create_log_file
76
- create_output_file
77
- create_lesson_file
78
- create_yaml_file
79
- end
80
-
81
- ##
82
- # Close output files
83
- def close
84
- get(:logfile).close
85
- get(:outputfile).close
86
- get(:lessonfile).close
87
- get(:yamlfile).close
88
- end
89
-
90
- def method_missing(method, *_args, &_block)
91
- get(method)
92
- end
93
-
94
- private
95
-
96
- # create or reset logfile
97
- def create_log_file
98
- @param[:logfile] = File.open(get(:logpath), 'w')
99
- f = get(:logfile)
100
- f.write('=' * 50 + "\n")
101
- f.write("Created by : #{Application::NAME}")
102
- f.write(" (version #{Application::VERSION})\n")
103
- f.write("File : #{get(:logname)}\n")
104
- f.write("Time : #{Time.new}\n")
105
- f.write("Author : David Vargas Ruiz\n")
106
- f.write('=' * 50 + "\n\n")
107
-
108
- Logger.verbose '[INFO] Project open'
109
- Logger.verbose ' ├── inputdirs = ' + Rainbow(get(:inputdirs)).bright
110
- Logger.verbose ' └── process_file = ' + Rainbow(get(:process_file)).bright
111
- end
112
-
113
- # Create or reset output file
114
- def create_output_file
115
- config = Application.instance.config
116
- @param[:outputfile] = File.open(get(:outputpath), 'w')
117
- f = get(:outputfile)
118
- f.write('// ' + ('=' * 50) + "\n")
119
- f.write("// Created by : #{Application::NAME}")
120
- f.write(" (version #{Application::VERSION})\n")
121
- f.write("// File : #{get(:outputname)}\n")
122
- f.write("// Time : #{Time.new}\n")
123
- f.write("// Author : David Vargas Ruiz\n")
124
- f.write('// ' + ('=' * 50) + "\n\n")
125
- category = config['questions']['category']
126
- f.write("$CATEGORY: $course$/#{category}\n") unless category.nil?
127
- end
128
-
129
- # Create or reset lesson file
130
- def create_lesson_file
131
- @param[:lessonfile] = File.new(get(:lessonpath), 'w')
132
- f = get(:lessonfile)
133
- f.write('=' * 50 + "\n")
134
- f.write("Created by : #{Application::NAME}")
135
- f.write(" (version #{Application::VERSION})\n")
136
- f.write("File : #{get(:lessonname)}\n")
137
- f.write("Time : #{Time.new}\n")
138
- f.write("Author : David Vargas Ruiz\n")
139
- f.write('=' * 50 + "\n")
140
- end
141
-
142
- # Create or reset yaml file
143
- def create_yaml_file
144
- @param[:yamlfile] = File.open(get(:yamlpath), 'w')
145
- end
146
- end