asker-tool 2.4.0 → 2.4.3

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