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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1881a2e04cd676c6eb0a07deeaef15666b8f880b138a4418248d1e80ef3b60e4
4
- data.tar.gz: e2dd9ddeee2eb2b83ee245c6cdbd6f0991d108c6bcd1bfac4a70e16f0f45af30
3
+ metadata.gz: 8b065799af9c56fecd0ad4054746d486edef55660afb780bd183f6c1f7620a2c
4
+ data.tar.gz: 63252dea3460940024ea801e7c73a694584b586820b6203b40e382e6af860381
5
5
  SHA512:
6
- metadata.gz: 79bce51d1fc4ed05c08787dc0f5f5828bbf06ba3ba233323d2e4e573d9ada3594106c709fc5199d0ad5cfec23b8fa79a4cc140dbf6f3a48f6bb70bdbb3920139
7
- data.tar.gz: 8b550ee119b2e7c3a6e2239c5bdfca809e84b2f96f393cef7273c04e788b6f4bc7d096431913b3e407cbfaa7110bb74d8a7387343da3c307a57b9476810668b8
6
+ metadata.gz: d580345e46c9fb771fce4ddf554dba2c07c16bb504993f1eb574e8e922ba8d8561defbcc2a8ea5befba84ff56831d00441c318526769591c8c1cb15af84378b2
7
+ data.tar.gz: 4e8badf15cbd35d7d9a6fd9587c65503a469967b11c794db6a87acbf0e06b35a1fc7afa1bec5cfede85c9955e408299b2f409a541a8e13d652c73e5084b2d6a1
@@ -16,10 +16,10 @@ class Application
16
16
 
17
17
  def reset
18
18
  filename = File.join(Dir.pwd,
19
- Version::CONFIGFILE)
19
+ Asker::CONFIGFILE)
20
20
  filename = File.join(File.dirname(__FILE__),
21
21
  'files',
22
- Version::CONFIGFILE) unless File.exist? filename
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 "#{Version::NAME} version #{Version::VERSION}"
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'] => 'new_input'
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 new_input(dirname)
33
- Asker.new_input(dirname)
32
+ def create_input(dirname)
33
+ Asker.create_input(dirname)
34
34
  exit 0
35
35
  end
36
36
 
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
 
3
2
  require_relative '../formatter/question_gift_formatter'
4
3
 
@@ -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
- concepts_ai.each { |concept_ai| export(concept_ai, file) }
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 : #{Version::NAME} (version #{Version::VERSION})\n")
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 : #{Version::NAME}")
18
- file.write(" (version #{Version::VERSION})\n")
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
- # ConceptAIGiftExporter.export_all(data[:concepts_ai], project) if config['output']['gift'] == 'yes'
17
- # CodeGiftExporter.export_all(data[:codes_ai], project.get(:outputfile)) if config['output']['gift'] == 'yes'
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
@@ -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 = 0, -50, -33.33, -25, -20
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
- module QuestionMoodleFormatter
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 : #{Version::NAME}")
37
- @logfile.write(" (version #{Version::VERSION})\n")
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")
@@ -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', Version::CONFIGFILE)
38
- dst = File.join(Version::CONFIGFILE)
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
@@ -1,7 +1,6 @@
1
1
 
2
- module Version
3
- MAJOR_NUMBER = '2.4'
4
- VERSION = "#{MAJOR_NUMBER}.0"
2
+ class Asker
3
+ VERSION = '2.4.3'
5
4
  NAME = 'asker'
6
5
  GEM = 'asker-tool'
7
6
  CONFIGFILE = 'asker.ini'
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.new_input(dirpath)
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.0
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-06 00:00:00.000000000 Z
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