asker-tool 2.5.4 → 2.5.5
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/README.md +25 -11
- data/lib/asker/ai/code/javascript_code_ai.rb +4 -4
- data/lib/asker/ai/code/problem_code_ai.rb +2 -2
- data/lib/asker/ai/code/python_code_ai.rb +3 -3
- data/lib/asker/ai/code/ruby_code_ai.rb +7 -10
- data/lib/asker/ai/code/sql_code_ai.rb +0 -1
- data/lib/asker/application.rb +4 -6
- data/lib/asker/data/world.rb +2 -11
- data/lib/asker/displayer/code_displayer.rb +2 -9
- data/lib/asker/displayer/concept_ai_displayer.rb +1 -1
- data/lib/asker/displayer/concept_displayer.rb +1 -4
- data/lib/asker/exporter/code_gift_exporter.rb +1 -3
- data/lib/asker/exporter/concept_doc_exporter.rb +0 -1
- data/lib/asker/exporter/data_gift_exporter.rb +0 -1
- data/lib/asker/exporter/data_moodle_exporter.rb +0 -1
- data/lib/asker/lang/text_actions.rb +42 -14
- data/lib/asker/loader/haml_loader.rb +4 -6
- data/lib/asker/logger.rb +7 -12
- data/lib/asker/version.rb +1 -1
- data/lib/asker.rb +2 -38
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 832b26de49f5819f39da3e149c4360caa77e91b0cf1418b4225a35c81a9e197d
|
|
4
|
+
data.tar.gz: 8d6ba5c39fde26b38819e4c330f4ad6070811335e04839721fae4a35536c6581
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: df48a9dabc8ebb8614a67986d29c9d2110fdd8cfb6d793b7e10ab0a87120c0a78b00e44acff79a8d1b02edfa5d50823625e4e44c916e249f0c8e5f1eca42cb58
|
|
7
|
+
data.tar.gz: 184c5afbb7563d7cc96d9077b01339c2099b28479d616fc60c53afa29db68edde9de1c5aea6c42d2c56016e5fbd3ac95993b299d01413976abe2e9915695c858
|
data/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
# ASKER
|
|
2
|
+
|
|
1
3
|
[](https://badge.fury.io/rb/asker-tool)
|
|
2
4
|

|
|
3
5
|
|
|
4
|
-
# ASKER
|
|
5
|
-
|
|
6
6
|
Generate a lot of questions from an _input_ text file with on your own _definitions_. In a way, this _input file_ is a concept map.
|
|
7
7
|
|
|
8
8
|

|
|
@@ -14,21 +14,35 @@ ASKER helps trainers to create a huge amount of questions, from a definitions (_
|
|
|
14
14
|
|
|
15
15
|
## Installation
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
First install Ruby and then:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
gem install asker-tool
|
|
21
|
+
```
|
|
19
22
|
|
|
20
|
-
> REMEMBER:
|
|
23
|
+
> REMEMBER: Update Asker with `gem update asker-tool`
|
|
21
24
|
|
|
22
25
|
## Usage
|
|
23
26
|
|
|
24
|
-
1. **Create input file** with your
|
|
25
|
-
2. **Run `asker PATH/TO/INPUT`**.
|
|
26
|
-
|
|
27
|
-
asker docs/examples/bands/acdc.haml
|
|
27
|
+
1. **Create input file** with your contents (_conceptual map_). [Here are some examples](./docs/examples).
|
|
28
|
+
2. **Run `asker PATH/TO/INPUT`**. Let's see an example creating questions from ACDC input example file:
|
|
29
|
+
|
|
28
30
|
```
|
|
29
|
-
|
|
31
|
+
❯ asker docs/examples/bands/acdc.haml
|
|
32
|
+
|
|
33
|
+
+--------------------+-----------+---------+---------+---+---+----+---+---+----+
|
|
34
|
+
| Concept | Questions | Entries | xFactor | d | b | f | i | s | t |
|
|
35
|
+
+--------------------+-----------+---------+---------+---+---+----+---+---+----+
|
|
36
|
+
| AC/DC | 45 | 18 | 2.5 | 7 | 0 | 15 | 0 | 3 | 20 |
|
|
37
|
+
| Excluded questions | 0 | - | - | 0 | 0 | 0 | 0 | 0 | 0 |
|
|
38
|
+
+--------------------+-----------+---------+---------+---+---+----+---+---+----+
|
|
39
|
+
| 1 concept/s | 45 | 18 | 2.5 | 7 | 0 | 15 | 0 | 3 | 20 |
|
|
40
|
+
+--------------------+-----------+---------+---------+---+---+----+---+---+----+
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
3. **Output files** are saved into the `output` folder.
|
|
30
44
|
|
|
31
|
-
> More input examples at [
|
|
45
|
+
> More input examples at [asker-input repository](https://github.com/dvarrui/asker-inputs).
|
|
32
46
|
|
|
33
47
|
## Documentation
|
|
34
48
|
|
|
@@ -5,14 +5,14 @@ require_relative 'base_code_ai'
|
|
|
5
5
|
|
|
6
6
|
class JavascriptCodeAI < BaseCodeAI
|
|
7
7
|
def initialize(code)
|
|
8
|
-
@lang = LangFactory.instance.get(
|
|
8
|
+
@lang = LangFactory.instance.get("javascript")
|
|
9
9
|
super code
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def make_comment_error
|
|
13
13
|
questions = []
|
|
14
|
-
error_lines = []
|
|
15
|
-
@lines.each_with_index do |line,index|
|
|
14
|
+
# error_lines = []
|
|
15
|
+
@lines.each_with_index do |line, index|
|
|
16
16
|
if line.strip.start_with?('//')
|
|
17
17
|
lines = clone_array @lines
|
|
18
18
|
lines[index].sub!('//','').strip!
|
|
@@ -117,7 +117,7 @@ class JavascriptCodeAI < BaseCodeAI
|
|
|
117
117
|
|
|
118
118
|
def make_variable_error
|
|
119
119
|
questions = []
|
|
120
|
-
error_lines = []
|
|
120
|
+
# error_lines = []
|
|
121
121
|
@lines.each_with_index do |line, index|
|
|
122
122
|
# Search Variable assignment
|
|
123
123
|
m = /var\s*(\w*);\s*\w*/.match(line)
|
|
@@ -17,7 +17,7 @@ class ProblemCodeAI < BaseCodeAI
|
|
|
17
17
|
# Make errors about comments
|
|
18
18
|
def make_comment_error
|
|
19
19
|
questions = []
|
|
20
|
-
error_lines = []
|
|
20
|
+
# error_lines = []
|
|
21
21
|
@lines.each_with_index do |line,index|
|
|
22
22
|
if line.strip.start_with?('#')
|
|
23
23
|
lines = clone_array @lines
|
|
@@ -129,7 +129,7 @@ class ProblemCodeAI < BaseCodeAI
|
|
|
129
129
|
# Make questions with variable errors
|
|
130
130
|
def make_variable_error
|
|
131
131
|
questions = []
|
|
132
|
-
error_lines = []
|
|
132
|
+
# error_lines = []
|
|
133
133
|
@lines.each_with_index do |line, index|
|
|
134
134
|
# Search Variable assignment
|
|
135
135
|
m = /\s*(\w*)\s*\=\w*/.match(line)
|
|
@@ -11,8 +11,8 @@ class PythonCodeAI < BaseCodeAI
|
|
|
11
11
|
|
|
12
12
|
def make_comment_error
|
|
13
13
|
questions = []
|
|
14
|
-
error_lines = []
|
|
15
|
-
@lines.each_with_index do |line,index|
|
|
14
|
+
# error_lines = []
|
|
15
|
+
@lines.each_with_index do |line, index|
|
|
16
16
|
if line.strip.start_with?('#')
|
|
17
17
|
lines = clone_array @lines
|
|
18
18
|
lines[index].sub!('#','').strip!
|
|
@@ -117,7 +117,7 @@ class PythonCodeAI < BaseCodeAI
|
|
|
117
117
|
|
|
118
118
|
def make_variable_error
|
|
119
119
|
questions = []
|
|
120
|
-
error_lines = []
|
|
120
|
+
# error_lines = []
|
|
121
121
|
@lines.each_with_index do |line, index|
|
|
122
122
|
# Search Variable assignment
|
|
123
123
|
m = /\s*(\w*)\s*\=\w*/.match(line)
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
+
require_relative "../../lang/lang_factory"
|
|
2
|
+
require_relative "../../ai/question"
|
|
3
|
+
require_relative "base_code_ai"
|
|
1
4
|
|
|
2
|
-
require_relative '../../lang/lang_factory'
|
|
3
|
-
require_relative '../../ai/question'
|
|
4
|
-
require_relative 'base_code_ai'
|
|
5
|
-
|
|
6
|
-
##
|
|
7
|
-
# Class for RubyCodeAI objects
|
|
8
5
|
class RubyCodeAI < BaseCodeAI
|
|
9
6
|
def initialize(code)
|
|
10
7
|
@reduce = 1
|
|
11
8
|
@reduce = 4 if code.lines.size > 25
|
|
12
|
-
@lang = LangFactory.instance.get(
|
|
9
|
+
@lang = LangFactory.instance.get("ruby")
|
|
13
10
|
super code
|
|
14
11
|
end
|
|
15
12
|
|
|
@@ -17,8 +14,8 @@ class RubyCodeAI < BaseCodeAI
|
|
|
17
14
|
# Make errors about comments
|
|
18
15
|
def make_comment_error
|
|
19
16
|
questions = []
|
|
20
|
-
error_lines = []
|
|
21
|
-
@lines.each_with_index do |line,index|
|
|
17
|
+
# error_lines = []
|
|
18
|
+
@lines.each_with_index do |line, index|
|
|
22
19
|
if line.strip.start_with?('#')
|
|
23
20
|
lines = clone_array @lines
|
|
24
21
|
lines[index].sub!('#','').strip!
|
|
@@ -129,7 +126,7 @@ class RubyCodeAI < BaseCodeAI
|
|
|
129
126
|
# Make questions with variable errors
|
|
130
127
|
def make_variable_error
|
|
131
128
|
questions = []
|
|
132
|
-
error_lines = []
|
|
129
|
+
# error_lines = []
|
|
133
130
|
@lines.each_with_index do |line, index|
|
|
134
131
|
# Search Variable assignment
|
|
135
132
|
m = /\s*(\w*)\s*\=\w*/.match(line)
|
data/lib/asker/application.rb
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
|
|
5
|
-
require 'rainbow'
|
|
6
|
-
require_relative 'version'
|
|
1
|
+
require "singleton"
|
|
2
|
+
require "inifile"
|
|
3
|
+
require "rainbow"
|
|
4
|
+
require_relative "version"
|
|
7
5
|
|
|
8
6
|
# Global parameters
|
|
9
7
|
class Application
|
data/lib/asker/data/world.rb
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require_relative '../loader/image_url_loader'
|
|
4
4
|
|
|
5
5
|
class World
|
|
6
|
+
# TODO: change how World class works ?
|
|
6
7
|
attr_reader :concepts, :filenames, :contexts, :image_urls
|
|
7
8
|
|
|
8
9
|
def initialize(concepts, internet = true)
|
|
@@ -27,7 +28,6 @@ class World
|
|
|
27
28
|
|
|
28
29
|
private
|
|
29
30
|
|
|
30
|
-
# rubocop:disable Metrics/MethodLength
|
|
31
31
|
def get_lists_from(input)
|
|
32
32
|
concepts = {}
|
|
33
33
|
filenames = []
|
|
@@ -43,12 +43,7 @@ class World
|
|
|
43
43
|
contexts.uniq!
|
|
44
44
|
[concepts, filenames, contexts]
|
|
45
45
|
end
|
|
46
|
-
# rubocop:enable Metrics/MethodLength
|
|
47
46
|
|
|
48
|
-
# rubocop:disable Metrics/MethodLength
|
|
49
|
-
# rubocop:disable Metrics/AbcSize
|
|
50
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
|
51
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
|
52
47
|
def find_url_images_from_internet(internet)
|
|
53
48
|
return {} unless internet
|
|
54
49
|
|
|
@@ -61,11 +56,7 @@ class World
|
|
|
61
56
|
searchs.each do |search|
|
|
62
57
|
threads << Thread.new { urls[search] = ImageUrlLoader.load(search) }
|
|
63
58
|
end
|
|
64
|
-
threads.each(&:join)
|
|
59
|
+
threads.each(&:join)
|
|
65
60
|
urls
|
|
66
61
|
end
|
|
67
|
-
# rubocop:enable Metrics/MethodLength
|
|
68
|
-
# rubocop:enable Metrics/AbcSize
|
|
69
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
|
70
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
|
71
62
|
end
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
require "terminal-table"
|
|
2
|
+
require_relative "../logger"
|
|
2
3
|
|
|
3
|
-
require 'terminal-table'
|
|
4
|
-
require_relative '../logger'
|
|
5
|
-
|
|
6
|
-
# Export Code into Screen
|
|
7
4
|
module CodeDisplayer
|
|
8
5
|
##
|
|
9
6
|
# Show all "code" data on screen
|
|
10
7
|
# @param codes (Array) List of "code" data
|
|
11
|
-
# rubocop:disable Metrics/AbcSize
|
|
12
|
-
# rubocop:disable Metrics/MethodLength
|
|
13
8
|
def self.show(codes)
|
|
14
9
|
return if codes.nil? || codes.size.zero?
|
|
15
10
|
|
|
@@ -47,6 +42,4 @@ module CodeDisplayer
|
|
|
47
42
|
Logger.verboseln "\n[INFO] Showing CODE statistics"
|
|
48
43
|
Logger.verboseln my_screen_table.to_s
|
|
49
44
|
end
|
|
50
|
-
# rubocop:enable Metrics/AbcSize
|
|
51
|
-
# rubocop:enable Metrics/MethodLength
|
|
52
45
|
end
|
|
@@ -74,7 +74,7 @@ class ConceptAIDisplayer
|
|
|
74
74
|
|
|
75
75
|
# Create table TAIL
|
|
76
76
|
screen_table.add_separator
|
|
77
|
-
screen_table.add_row [Rainbow("
|
|
77
|
+
screen_table.add_row [Rainbow("#{total[:c]} concept/s").bright,
|
|
78
78
|
Rainbow(total[:q].to_s).bright,
|
|
79
79
|
Rainbow(total[:e].to_s).bright,
|
|
80
80
|
Rainbow((total[:q].to_f / total[:e]).round(2)).bright,
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
require_relative '../application'
|
|
4
2
|
require_relative '../formatter/concept_string_formatter'
|
|
5
|
-
require_relative
|
|
3
|
+
require_relative "../logger"
|
|
6
4
|
|
|
7
|
-
# Show Concept Data on screen
|
|
8
5
|
module ConceptDisplayer
|
|
9
6
|
##
|
|
10
7
|
# Show concepts on screen
|
|
@@ -14,7 +14,6 @@ module ConceptDocExporter
|
|
|
14
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
|
-
file.write("Author : David Vargas Ruiz\n")
|
|
18
17
|
file.write('=' * 50 + "\n")
|
|
19
18
|
|
|
20
19
|
concepts.each do |concept|
|
|
@@ -18,7 +18,6 @@ module DataGiftExporter
|
|
|
18
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
|
-
file.write("// Author : David Vargas Ruiz\n")
|
|
22
21
|
file.write('// ' + ('=' * 50) + "\n\n")
|
|
23
22
|
category = Application.instance.config['questions']['category']
|
|
24
23
|
file.write("$CATEGORY: $course$/#{category}\n") unless category.nil?
|
|
@@ -15,7 +15,6 @@ module DataMoodleExporter
|
|
|
15
15
|
file.write(" (version #{Asker::VERSION})\n")
|
|
16
16
|
file.write(" File : #{project.get(:moodlename)}\n")
|
|
17
17
|
file.write(" Time : #{Time.new}\n")
|
|
18
|
-
file.write(" Author : David Vargas Ruiz\n")
|
|
19
18
|
file.write("#{('=' * 50)}\n-->\n\n")
|
|
20
19
|
|
|
21
20
|
data[:concepts_ai].each do |concept_ai|
|
|
@@ -6,13 +6,13 @@ module TextActions
|
|
|
6
6
|
##
|
|
7
7
|
# Return text indicated by lang code...
|
|
8
8
|
def text_for(option, *input)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
@_text1 = input[0] # FIXME: done to avoid linter complaints.
|
|
10
|
+
@_text2 = input[1]
|
|
11
|
+
@_text3 = input[2]
|
|
12
|
+
@_text4 = input[3]
|
|
13
|
+
@_text5 = input[4]
|
|
14
|
+
@_text6 = input[5]
|
|
15
|
+
@_text7 = input[6]
|
|
16
16
|
|
|
17
17
|
# Check if exists option before use it
|
|
18
18
|
raise "[ERROR] Unkown template #{option}" if @templates[option].nil?
|
|
@@ -21,6 +21,34 @@ module TextActions
|
|
|
21
21
|
renderer.result(binding)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
def text1
|
|
25
|
+
@_text1
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def text2
|
|
29
|
+
@_text2
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def text3
|
|
33
|
+
@_text3
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def text4
|
|
37
|
+
@_text4
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def text5
|
|
41
|
+
@_text5
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def text6
|
|
45
|
+
@_text6
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def text7
|
|
49
|
+
@_text7
|
|
50
|
+
end
|
|
51
|
+
|
|
24
52
|
##
|
|
25
53
|
# Convert input text into output text struct
|
|
26
54
|
# @param input (String) Input text
|
|
@@ -38,14 +66,14 @@ module TextActions
|
|
|
38
66
|
# if <word> is a conector and <pFilter>==true Then Choose this <word>
|
|
39
67
|
# if <word> isn't a conector and <pFilter>==true and <word>.length>1 Then Choose this <word>
|
|
40
68
|
if (flag and filter) || (!flag and !filter and word.length > 1)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
69
|
+
output_words << {:word => word, :row => rowindex, :col => colindex }
|
|
70
|
+
row << (output_words.size-1)
|
|
71
|
+
else
|
|
72
|
+
row << word
|
|
45
73
|
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
74
|
+
end
|
|
75
|
+
row << '.'
|
|
76
|
+
output_lines << row
|
|
49
77
|
end
|
|
50
78
|
|
|
51
79
|
indexes = []
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
require 'haml'
|
|
4
2
|
|
|
5
|
-
# HAML file loader
|
|
6
3
|
module HamlLoader
|
|
7
4
|
def self.load(filename)
|
|
8
5
|
template = File.read(filename)
|
|
9
6
|
begin
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
# INFO <haml 5.1> 20221223
|
|
8
|
+
# haml_engine = Haml::Engine.new(template)
|
|
9
|
+
# return haml_engine.render
|
|
10
|
+
return Haml::Template.new { template }.render
|
|
12
11
|
rescue StandardError => e
|
|
13
12
|
puts "[ERROR] HamlLoader: Can't load <#{filename}> file!"
|
|
14
13
|
puts " => #{e}"
|
|
15
14
|
exit 0
|
|
16
15
|
end
|
|
17
16
|
end
|
|
18
|
-
|
|
19
17
|
end
|
data/lib/asker/logger.rb
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
require "singleton"
|
|
2
|
+
require_relative "version"
|
|
2
3
|
|
|
3
|
-
require 'singleton'
|
|
4
|
-
require_relative 'version'
|
|
5
|
-
|
|
6
|
-
# Display and log project messages
|
|
7
4
|
class Logger
|
|
8
5
|
include Singleton
|
|
9
|
-
@attr_verbose =
|
|
6
|
+
@attr_verbose = "yes"
|
|
10
7
|
|
|
11
8
|
def set_verbose(value)
|
|
12
9
|
@attr_verbose = value
|
|
13
10
|
end
|
|
14
11
|
|
|
15
12
|
def self.verbose(msg)
|
|
16
|
-
print msg if @attr_verbose ==
|
|
13
|
+
print msg if @attr_verbose == "yes"
|
|
17
14
|
@logfile&.write(msg)
|
|
18
15
|
end
|
|
19
16
|
|
|
@@ -28,16 +25,14 @@ class Logger
|
|
|
28
25
|
def logln(msg)
|
|
29
26
|
verboseln(msg)
|
|
30
27
|
end
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def self.create(logpath, logname)
|
|
28
|
+
|
|
29
|
+
def self.create(logpath)
|
|
34
30
|
@logfile = File.open(logpath, 'w')
|
|
35
31
|
@logfile.write('=' * 50 + "\n")
|
|
36
32
|
@logfile.write("Created by : #{Asker::NAME}")
|
|
37
33
|
@logfile.write(" (version #{Asker::VERSION})\n")
|
|
38
|
-
@logfile.write("File : #{
|
|
34
|
+
@logfile.write("File : #{File.basename(logpath)}\n")
|
|
39
35
|
@logfile.write("Time : #{Time.new}\n")
|
|
40
|
-
@logfile.write("Author : David Vargas Ruiz\n")
|
|
41
36
|
@logfile.write('=' * 50 + "\n\n")
|
|
42
37
|
end
|
|
43
38
|
|
data/lib/asker/version.rb
CHANGED
data/lib/asker.rb
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
1
|
require 'rainbow'
|
|
4
2
|
require 'colorize'
|
|
5
3
|
|
|
@@ -13,8 +11,8 @@ require_relative 'asker/logger'
|
|
|
13
11
|
|
|
14
12
|
require_relative 'asker/loader/project_loader'
|
|
15
13
|
require_relative 'asker/loader/input_loader'
|
|
16
|
-
class Asker
|
|
17
14
|
|
|
15
|
+
class Asker
|
|
18
16
|
def self.init
|
|
19
17
|
Skeleton.create_configuration
|
|
20
18
|
end
|
|
@@ -54,9 +52,7 @@ class Asker
|
|
|
54
52
|
end
|
|
55
53
|
|
|
56
54
|
private_class_method def self.init_logger(project_data)
|
|
57
|
-
|
|
58
|
-
Logger.create(project_data.get(:logpath),
|
|
59
|
-
project_data.get(:logname))
|
|
55
|
+
Logger.create(project_data.get(:logpath))
|
|
60
56
|
Logger.instance.set_verbose(Application.instance.config['verbose'])
|
|
61
57
|
Logger.verboseln '[INFO] Project open'
|
|
62
58
|
Logger.verboseln ' ├── inputdirs = ' + Rainbow(project_data.get(:inputdirs)).bright
|
|
@@ -64,38 +60,6 @@ class Asker
|
|
|
64
60
|
end
|
|
65
61
|
|
|
66
62
|
private_class_method def self.create_output(project, data)
|
|
67
|
-
Logger.verboseln "\n[INFO] Creating output files"
|
|
68
|
-
m = ' ├── Gift questions file => '
|
|
69
|
-
m += if Application.instance.config['output']['gift'] == 'yes'
|
|
70
|
-
Rainbow(project.get(:outputpath)).bright
|
|
71
|
-
else
|
|
72
|
-
"#{project.get(:outputpath)} (No)"
|
|
73
|
-
end
|
|
74
|
-
Logger.verboseln m
|
|
75
|
-
|
|
76
|
-
m = ' ├── Lesson file => '
|
|
77
|
-
m += if Application.instance.config['output']['doc'] == 'yes'
|
|
78
|
-
Rainbow(project.get(:lessonpath)).bright
|
|
79
|
-
else
|
|
80
|
-
"#{project.get(:lessonpath)} (No)"
|
|
81
|
-
end
|
|
82
|
-
Logger.verboseln m
|
|
83
|
-
|
|
84
|
-
m = ' ├── YAML questions file => '
|
|
85
|
-
m += if Application.instance.config['output']['yaml'] == 'yes'
|
|
86
|
-
Rainbow(project.get(:yamlpath)).bright
|
|
87
|
-
else
|
|
88
|
-
"#{project.get(:yamlpath)} (No)"
|
|
89
|
-
end
|
|
90
|
-
Logger.verboseln m
|
|
91
|
-
|
|
92
|
-
m = ' └── Moodle XML file => '
|
|
93
|
-
m += if Application.instance.config['output']['moodle'] == 'yes'
|
|
94
|
-
Rainbow(project.get(:moodlepath)).bright
|
|
95
|
-
else
|
|
96
|
-
"#{project.get(:moodlepath)} (No)"
|
|
97
|
-
end
|
|
98
|
-
Logger.verboseln m
|
|
99
63
|
OutputFileExporter.export(data, project)
|
|
100
64
|
StatsDisplayer.show(data)
|
|
101
65
|
Logger.close
|
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.5.
|
|
4
|
+
version: 2.5.5
|
|
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-12-
|
|
11
|
+
date: 2022-12-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: haml
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '6.1'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '6.1'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: inifile
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,14 +86,14 @@ dependencies:
|
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
89
|
+
version: '3.0'
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
96
|
+
version: '3.0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: thor
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -241,7 +241,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
241
241
|
requirements:
|
|
242
242
|
- - ">="
|
|
243
243
|
- !ruby/object:Gem::Version
|
|
244
|
-
version: 3.0
|
|
244
|
+
version: '3.0'
|
|
245
245
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
246
246
|
requirements:
|
|
247
247
|
- - ">="
|