asker-tool 2.1.7 → 2.2.3

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