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.
- checksums.yaml +4 -4
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +14 -15
- data/bin/asker +1 -1
- data/lib/asker/ai/ai.rb +6 -3
- data/lib/asker/ai/ai_calculate.rb +20 -6
- data/lib/asker/ai/concept_ai.rb +12 -3
- data/lib/asker/ai/question.rb +28 -6
- data/lib/asker/ai/stages/base_stage.rb +45 -6
- data/lib/asker/ai/stages/stage_b.rb +90 -49
- data/lib/asker/ai/stages/stage_d.rb +69 -90
- data/lib/asker/ai/stages/stage_f.rb +47 -38
- data/lib/asker/ai/stages/stage_i.rb +79 -92
- data/lib/asker/ai/stages/stage_s.rb +41 -36
- data/lib/asker/ai/stages/stage_t.rb +114 -73
- data/lib/asker/application.rb +7 -16
- data/lib/asker/check_input/check_haml_data.rb +264 -0
- data/lib/asker/check_input/check_table.rb +104 -0
- data/lib/asker/check_input.rb +51 -0
- data/lib/asker/cli.rb +47 -44
- data/lib/asker/data/code.rb +5 -16
- data/lib/asker/data/concept.rb +71 -24
- data/lib/asker/data/project_data.rb +63 -0
- data/lib/asker/data/table.rb +2 -0
- data/lib/asker/data/template.rb +3 -1
- data/lib/asker/data/world.rb +8 -16
- data/lib/asker/displayer/code_displayer.rb +7 -0
- data/lib/asker/displayer/concept_ai_displayer.erb +10 -0
- data/lib/asker/displayer/concept_ai_displayer.rb +24 -22
- data/lib/asker/displayer/concept_displayer.rb +9 -4
- data/lib/asker/displayer/stats_displayer.rb +8 -0
- data/lib/asker/exporter/concept_ai_gift_exporter.rb +7 -11
- data/lib/asker/exporter/concept_ai_moodle_exporter.rb +45 -0
- data/lib/asker/exporter/concept_ai_yaml_exporter.rb +6 -3
- data/lib/asker/exporter/concept_doc_exporter.rb +12 -2
- data/lib/asker/exporter/data_gift_exporter.rb +31 -0
- data/lib/asker/exporter/output_file_exporter.rb +9 -6
- data/lib/asker/files/{config.ini → asker.ini} +14 -4
- data/lib/asker/files/language/du/connectors.yaml +81 -0
- data/lib/asker/files/language/du/mistakes.yaml +82 -0
- data/lib/asker/files/language/du/templates.yaml +28 -49
- data/lib/asker/files/language/en/templates.yaml +19 -19
- data/lib/asker/files/language/es/mistakes.yaml +9 -7
- data/lib/asker/files/language/es/templates.yaml +19 -19
- data/lib/asker/files/language/fr/connectors.yaml +68 -84
- data/lib/asker/files/language/fr/templates.yaml +22 -22
- data/lib/asker/formatter/concept_doc_formatter.rb +0 -4
- data/lib/asker/formatter/concept_string_formatter.rb +7 -4
- data/lib/asker/formatter/moodle/matching.erb +38 -0
- data/lib/asker/formatter/moodle/multichoice.erb +49 -0
- data/lib/asker/formatter/moodle/shortanswer.erb +30 -0
- data/lib/asker/formatter/moodle/truefalse.erb +47 -0
- data/lib/asker/formatter/question_gift_formatter.rb +21 -19
- data/lib/asker/formatter/question_moodle_formatter.rb +27 -0
- data/lib/asker/lang/lang_factory.rb +7 -1
- data/lib/asker/loader/code_loader.rb +1 -1
- data/lib/asker/loader/content_loader.rb +12 -14
- data/lib/asker/loader/directory_loader.rb +1 -8
- data/lib/asker/loader/embedded_file.rb +42 -0
- data/lib/asker/loader/file_loader.rb +1 -6
- data/lib/asker/loader/haml_loader.rb +9 -5
- data/lib/asker/loader/image_url_loader.rb +8 -9
- data/lib/asker/loader/input_loader.rb +5 -6
- data/lib/asker/loader/project_loader.rb +18 -10
- data/lib/asker/logger.rb +36 -9
- data/lib/asker/skeleton.rb +3 -2
- data/lib/asker/version.rb +9 -0
- data/lib/asker.rb +72 -43
- metadata +60 -18
- data/lib/asker/checker.rb +0 -455
- 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
|