asker-tool 2.4.0 → 2.4.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/lib/asker/application.rb +2 -2
- data/lib/asker/cli.rb +4 -4
- data/lib/asker/exporter/code_gift_exporter.rb +0 -1
- data/lib/asker/exporter/code_moodle_exporter.rb +15 -0
- data/lib/asker/exporter/concept_ai_moodle_exporter.rb +1 -31
- data/lib/asker/exporter/concept_doc_exporter.rb +1 -1
- data/lib/asker/exporter/data_gift_exporter.rb +2 -2
- data/lib/asker/exporter/data_moodle_exporter.rb +32 -0
- data/lib/asker/exporter/output_file_exporter.rb +4 -6
- data/lib/asker/files/asker.ini +1 -1
- data/lib/asker/formatter/question_moodle_formatter.rb +5 -3
- data/lib/asker/logger.rb +2 -2
- data/lib/asker/skeleton.rb +2 -2
- data/lib/asker/version.rb +2 -3
- data/lib/asker.rb +3 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b065799af9c56fecd0ad4054746d486edef55660afb780bd183f6c1f7620a2c
|
4
|
+
data.tar.gz: 63252dea3460940024ea801e7c73a694584b586820b6203b40e382e6af860381
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d580345e46c9fb771fce4ddf554dba2c07c16bb504993f1eb574e8e922ba8d8561defbcc2a8ea5befba84ff56831d00441c318526769591c8c1cb15af84378b2
|
7
|
+
data.tar.gz: 4e8badf15cbd35d7d9a6fd9587c65503a469967b11c794db6a87acbf0e06b35a1fc7afa1bec5cfede85c9955e408299b2f409a541a8e13d652c73e5084b2d6a1
|
data/lib/asker/application.rb
CHANGED
@@ -16,10 +16,10 @@ class Application
|
|
16
16
|
|
17
17
|
def reset
|
18
18
|
filename = File.join(Dir.pwd,
|
19
|
-
|
19
|
+
Asker::CONFIGFILE)
|
20
20
|
filename = File.join(File.dirname(__FILE__),
|
21
21
|
'files',
|
22
|
-
|
22
|
+
Asker::CONFIGFILE) unless File.exist? filename
|
23
23
|
|
24
24
|
begin
|
25
25
|
@config = IniFile.load(filename)
|
data/lib/asker/cli.rb
CHANGED
@@ -13,7 +13,7 @@ class CLI < Thor
|
|
13
13
|
map ['--version'] => 'version'
|
14
14
|
desc 'version', 'Show the program version'
|
15
15
|
def version
|
16
|
-
puts "#{
|
16
|
+
puts "#{Asker::NAME} version #{Asker::VERSION}"
|
17
17
|
exit 0
|
18
18
|
end
|
19
19
|
|
@@ -24,13 +24,13 @@ class CLI < Thor
|
|
24
24
|
exit 0
|
25
25
|
end
|
26
26
|
|
27
|
-
map ['new','--new'] => '
|
27
|
+
map ['new','--new'] => 'create_input'
|
28
28
|
desc 'new DIRPATH', 'Create Asker demo input files'
|
29
29
|
##
|
30
30
|
# Create Asker demo input files
|
31
31
|
# @param dirname (String) Path to folder
|
32
|
-
def
|
33
|
-
Asker.
|
32
|
+
def create_input(dirname)
|
33
|
+
Asker.create_input(dirname)
|
34
34
|
exit 0
|
35
35
|
end
|
36
36
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
require_relative '../formatter/question_moodle_formatter'
|
3
|
+
|
4
|
+
module CodeMoodleExporter
|
5
|
+
|
6
|
+
def self.run(code, file)
|
7
|
+
return false unless code.process?
|
8
|
+
|
9
|
+
code.questions.each do |question|
|
10
|
+
file.write QuestionMoodleFormatter.to_s(question)
|
11
|
+
end
|
12
|
+
true
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -1,38 +1,9 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
1
|
|
3
2
|
require_relative '../formatter/question_moodle_formatter'
|
4
|
-
require_relative '../version'
|
5
3
|
|
6
|
-
# Export ConceptIA data to gift to moodlefile
|
7
4
|
module ConceptAIMoodleExporter
|
8
|
-
##
|
9
|
-
# Export an array of ConceptAI objects from Project into Moodle format file
|
10
|
-
# @param concepts_ai (Array)
|
11
|
-
# @param project (Project)
|
12
|
-
def self.export_all(concepts_ai, project)
|
13
|
-
file = File.open(project.get(:moodlepath), 'w')
|
14
|
-
file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
15
|
-
file.write("<quiz>\n")
|
16
|
-
file.write("<!--\n#{('=' * 50)}\n")
|
17
|
-
file.write(" Created by : #{Version::NAME}")
|
18
|
-
file.write(" (version #{Version::VERSION})\n")
|
19
|
-
file.write(" File : #{project.get(:moodlename)}\n")
|
20
|
-
file.write(" Time : #{Time.new}\n")
|
21
|
-
file.write(" Author : David Vargas Ruiz\n")
|
22
|
-
file.write("#{('=' * 50)}\n-->\n\n")
|
23
5
|
|
24
|
-
|
25
|
-
|
26
|
-
file.write("</quiz>\n")
|
27
|
-
file.close
|
28
|
-
end
|
29
|
-
|
30
|
-
##
|
31
|
-
# Export 1 concept_ai from project
|
32
|
-
# @param concept_ai (ConceptAI)
|
33
|
-
# @param file (File)
|
34
|
-
# rubocop:disable Metrics/AbcSize
|
35
|
-
private_class_method def self.export(concept_ai, file)
|
6
|
+
def self.run(concept_ai, file)
|
36
7
|
return unless concept_ai.concept.process?
|
37
8
|
|
38
9
|
Application.instance.config['questions']['stages'].each do |stage|
|
@@ -41,5 +12,4 @@ module ConceptAIMoodleExporter
|
|
41
12
|
end
|
42
13
|
end
|
43
14
|
end
|
44
|
-
# rubocop:enable Metrics/AbcSize
|
45
15
|
end
|
@@ -11,7 +11,7 @@ module ConceptDocExporter
|
|
11
11
|
def self.export_all(concepts, project)
|
12
12
|
file = File.new(project.get(:lessonpath), 'w')
|
13
13
|
file.write('=' * 50 + "\n")
|
14
|
-
file.write("Created by : #{
|
14
|
+
file.write("Created by : #{Asker::NAME} (version #{Asker::VERSION})\n")
|
15
15
|
file.write("File : #{project.get(:lessonname)}\n")
|
16
16
|
file.write("Time : #{Time.new}\n")
|
17
17
|
file.write("Author : David Vargas Ruiz\n")
|
@@ -14,8 +14,8 @@ module DataGiftExporter
|
|
14
14
|
def self.export_all(data, project)
|
15
15
|
file = File.open(project.get(:outputpath), 'w')
|
16
16
|
file.write('// ' + ('=' * 50) + "\n")
|
17
|
-
file.write("// Created by : #{
|
18
|
-
file.write(" (version #{
|
17
|
+
file.write("// Created by : #{Asker::NAME}")
|
18
|
+
file.write(" (version #{Asker::VERSION})\n")
|
19
19
|
file.write("// File : #{project.get(:outputname)}\n")
|
20
20
|
file.write("// Time : #{Time.new}\n")
|
21
21
|
file.write("// Author : David Vargas Ruiz\n")
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
require_relative '../version'
|
3
|
+
require_relative 'concept_ai_moodle_exporter'
|
4
|
+
require_relative 'code_moodle_exporter'
|
5
|
+
|
6
|
+
# Export data to MoodleXML file
|
7
|
+
module DataMoodleExporter
|
8
|
+
|
9
|
+
def self.export_all(data, project)
|
10
|
+
file = File.open(project.get(:moodlepath), 'w')
|
11
|
+
file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
12
|
+
file.write("<quiz>\n")
|
13
|
+
file.write("<!--\n#{('=' * 50)}\n")
|
14
|
+
file.write(" Created by : #{Asker::NAME}")
|
15
|
+
file.write(" (version #{Asker::VERSION})\n")
|
16
|
+
file.write(" File : #{project.get(:moodlename)}\n")
|
17
|
+
file.write(" Time : #{Time.new}\n")
|
18
|
+
file.write(" Author : David Vargas Ruiz\n")
|
19
|
+
file.write("#{('=' * 50)}\n-->\n\n")
|
20
|
+
|
21
|
+
data[:concepts_ai].each do |concept_ai|
|
22
|
+
ConceptAIMoodleExporter.run(concept_ai, file)
|
23
|
+
end
|
24
|
+
|
25
|
+
data[:codes_ai].each do |code|
|
26
|
+
CodeMoodleExporter.run(code, file)
|
27
|
+
end
|
28
|
+
|
29
|
+
file.write("</quiz>\n")
|
30
|
+
file.close
|
31
|
+
end
|
32
|
+
end
|
@@ -1,21 +1,19 @@
|
|
1
|
-
require_relative 'concept_ai_moodle_exporter'
|
2
1
|
require_relative 'concept_ai_yaml_exporter'
|
3
2
|
require_relative 'concept_doc_exporter'
|
4
3
|
require_relative 'data_gift_exporter'
|
4
|
+
require_relative 'data_moodle_exporter'
|
5
5
|
|
6
6
|
# Export Output data:
|
7
7
|
# * Gift (ConceptAI, Code)
|
8
8
|
# * YAML
|
9
9
|
# * Doc (txt)
|
10
|
+
# * Moodle XML (ConceptAI, Code)
|
10
11
|
module OutputFileExporter
|
11
12
|
def self.export(data, project)
|
12
13
|
config = Application.instance.config
|
13
|
-
DataGiftExporter.export_all(data, project) if config['output']['gift'] == 'yes'
|
14
14
|
ConceptAIYAMLExporter.export_all(data[:concepts_ai], project) if config['output']['yaml'] == 'yes'
|
15
15
|
ConceptDocExporter.export_all(data[:concepts], project) if config['output']['doc'] == 'yes'
|
16
|
-
|
17
|
-
|
18
|
-
# UNDER DEVELOPMENT
|
19
|
-
ConceptAIMoodleExporter.export_all(data[:concepts_ai], project) if config['output']['moodle'] == 'yes'
|
16
|
+
DataGiftExporter.export_all(data, project) if config['output']['gift'] == 'yes'
|
17
|
+
DataMoodleExporter.export_all(data, project) if config['output']['moodle'] == 'yes'
|
20
18
|
end
|
21
19
|
end
|
data/lib/asker/files/asker.ini
CHANGED
@@ -49,7 +49,7 @@ formula_weights = 1, 1, 1
|
|
49
49
|
; Default values
|
50
50
|
; fractions = 0 to disable
|
51
51
|
; Only used for multichoice questions
|
52
|
-
fractions =
|
52
|
+
fractions = ",-50,-33.33333,-25,-20,-16.66667,-14.28571,-12.5,-11.11111,-10"
|
53
53
|
|
54
54
|
; List of values d,b,f,i,s,t
|
55
55
|
stages = d,b,f,i,s,t
|
@@ -4,7 +4,7 @@ require 'erb'
|
|
4
4
|
require_relative '../application'
|
5
5
|
|
6
6
|
# Transform Questions into Gift format
|
7
|
-
|
7
|
+
class QuestionMoodleFormatter
|
8
8
|
##
|
9
9
|
# Convert question object into gift formatted string
|
10
10
|
# @param question (Question)
|
@@ -13,9 +13,11 @@ module QuestionMoodleFormatter
|
|
13
13
|
case question.type
|
14
14
|
when :choice
|
15
15
|
fractions = Application.instance.config['questions']['fractions']
|
16
|
-
# penalties = ['', '-50', '-33.33333', '-25', '-20']
|
17
16
|
penalties = fractions
|
18
|
-
|
17
|
+
# penalties = ['', '-50', '-33.33333', '-25', '-20']
|
18
|
+
# puts "[DEBUG] fractions : #{fractions}"
|
19
|
+
# puts "[DEBUG] penalties : #{penalties}"
|
20
|
+
|
19
21
|
penalty = penalties[question.bads.size]
|
20
22
|
template = File.read(File.join(File.dirname(__FILE__), 'moodle', 'multichoice.erb'))
|
21
23
|
when :boolean
|
data/lib/asker/logger.rb
CHANGED
@@ -33,8 +33,8 @@ class Logger
|
|
33
33
|
def self.create(logpath, logname)
|
34
34
|
@logfile = File.open(logpath, 'w')
|
35
35
|
@logfile.write('=' * 50 + "\n")
|
36
|
-
@logfile.write("Created by : #{
|
37
|
-
@logfile.write(" (version #{
|
36
|
+
@logfile.write("Created by : #{Asker::NAME}")
|
37
|
+
@logfile.write(" (version #{Asker::VERSION})\n")
|
38
38
|
@logfile.write("File : #{logname}\n")
|
39
39
|
@logfile.write("Time : #{Time.new}\n")
|
40
40
|
@logfile.write("Author : David Vargas Ruiz\n")
|
data/lib/asker/skeleton.rb
CHANGED
@@ -34,8 +34,8 @@ module Skeleton
|
|
34
34
|
# Create default configuration files
|
35
35
|
def self.create_configuration
|
36
36
|
puts "\n[INFO] Creating configuration files"
|
37
|
-
src = File.join(File.dirname(__FILE__), 'files',
|
38
|
-
dst = File.join(
|
37
|
+
src = File.join(File.dirname(__FILE__), 'files', Asker::CONFIGFILE)
|
38
|
+
dst = File.join(Asker::CONFIGFILE)
|
39
39
|
copyfile(src, dst)
|
40
40
|
end
|
41
41
|
|
data/lib/asker/version.rb
CHANGED
data/lib/asker.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rainbow'
|
4
|
+
require 'colorize'
|
4
5
|
|
5
6
|
require_relative 'asker/skeleton'
|
6
7
|
require_relative 'asker/check_input'
|
@@ -13,11 +14,12 @@ require_relative 'asker/logger'
|
|
13
14
|
require_relative 'asker/loader/project_loader'
|
14
15
|
require_relative 'asker/loader/input_loader'
|
15
16
|
class Asker
|
17
|
+
|
16
18
|
def self.init
|
17
19
|
Skeleton.create_configuration
|
18
20
|
end
|
19
21
|
|
20
|
-
def self.
|
22
|
+
def self.create_input(dirpath)
|
21
23
|
Skeleton.create_input(dirpath)
|
22
24
|
end
|
23
25
|
|
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.4.
|
4
|
+
version: 2.4.3
|
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: 2022-04-
|
11
|
+
date: 2022-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: haml
|
@@ -161,11 +161,13 @@ files:
|
|
161
161
|
- lib/asker/displayer/concept_displayer.rb
|
162
162
|
- lib/asker/displayer/stats_displayer.rb
|
163
163
|
- lib/asker/exporter/code_gift_exporter.rb
|
164
|
+
- lib/asker/exporter/code_moodle_exporter.rb
|
164
165
|
- lib/asker/exporter/concept_ai_gift_exporter.rb
|
165
166
|
- lib/asker/exporter/concept_ai_moodle_exporter.rb
|
166
167
|
- lib/asker/exporter/concept_ai_yaml_exporter.rb
|
167
168
|
- lib/asker/exporter/concept_doc_exporter.rb
|
168
169
|
- lib/asker/exporter/data_gift_exporter.rb
|
170
|
+
- lib/asker/exporter/data_moodle_exporter.rb
|
169
171
|
- lib/asker/exporter/output_file_exporter.rb
|
170
172
|
- lib/asker/files/asker.ini
|
171
173
|
- lib/asker/files/example-code.haml
|