asker-tool 2.3.2 → 2.4.0

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: eb6e1e4948869d81d5583b6355bdb242c1897bb2baa69bbb1f03f66cd9e63b3f
4
- data.tar.gz: baf45eb5659c7524680389a3f42731421d39453a36259a048fd6b2dda86b692b
3
+ metadata.gz: 1881a2e04cd676c6eb0a07deeaef15666b8f880b138a4418248d1e80ef3b60e4
4
+ data.tar.gz: e2dd9ddeee2eb2b83ee245c6cdbd6f0991d108c6bcd1bfac4a70e16f0f45af30
5
5
  SHA512:
6
- metadata.gz: 00cceabe5b82f6832723fcfdbe7dce48a17132d83098ea3e52915429ee9ac0b86372dfd0543da2846ad981be9cf11f6fee105c1b2294467215a5cabcb121818a
7
- data.tar.gz: a96b6a08ce66e00be13dfc6eab638e6325d488d671f943befbf7010ecb25aa098c3ae24b87cff6a260c65a5d257ef832bf5ec634d75c91e785b14c2e5f34df11
6
+ metadata.gz: 79bce51d1fc4ed05c08787dc0f5f5828bbf06ba3ba233323d2e4e573d9ada3594106c709fc5199d0ad5cfec23b8fa79a4cc140dbf6f3a48f6bb70bdbb3920139
7
+ data.tar.gz: 8b550ee119b2e7c3a6e2239c5bdfca809e84b2f96f393cef7273c04e788b6f4bc7d096431913b3e407cbfaa7110bb74d8a7387343da3c307a57b9476810668b8
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
 
3
2
  require_relative 'stage_d'
4
3
  require_relative 'stage_b'
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'set'
4
2
 
5
3
  require_relative 'base_stage'
@@ -31,8 +29,6 @@ class StageB < BaseStage
31
29
 
32
30
  questions
33
31
  end
34
- # rubocop:enable Metrics/AbcSize
35
- # rubocop:enable Metrics/MethodLength
36
32
 
37
33
  ##
38
34
  # Process table data to generate match questions
@@ -61,19 +57,43 @@ class StageB < BaseStage
61
57
  q.matching << [e[1][:data][index1], e[1][:data][index2]]
62
58
  q.matching << [e[2][:data][index1], e[2][:data][index2]]
63
59
  q.matching << [e[3][:data][index1], e[3][:data][index2]]
64
- # Add an extra line
60
+ questions << q
61
+
65
62
  if list2.count.positive?
63
+ # Add an extra line
64
+ e.shuffle!
65
+ q = Question.new(:match)
66
+ q.name = "#{name}-#{num}-b1match4x5-#{p_table.name}"
67
+ q.tags << 'match'
68
+ q.tags << 'random'
69
+ q.text = random_image_for(name) \
70
+ + lang.text_for(:b1, name, p_table.fields[index1].capitalize, p_table.fields[index2].capitalize)
71
+ q.matching << [e[0][:data][index1], e[0][:data][index2]]
72
+ q.matching << [e[1][:data][index1], e[1][:data][index2]]
73
+ q.matching << [e[2][:data][index1], e[2][:data][index2]]
74
+ q.matching << [e[3][:data][index1], e[3][:data][index2]]
66
75
  q.matching << ['', list2[0][:data][index2]]
76
+ questions << q
67
77
  else
68
- q.tags << 'misspell'
78
+ e.shuffle!
79
+ q = Question.new(:match)
80
+ q.name = "#{name}-#{num}-b1match4x5_1misspelled-#{p_table.name}"
81
+ q.tags << 'match'
82
+ q.tags << 'random'
83
+ q.text = random_image_for(name) \
84
+ + lang.text_for(:b1, name, p_table.fields[index1].capitalize, p_table.fields[index2].capitalize)
85
+ q.matching << [e[0][:data][index1], e[0][:data][index2]]
86
+ q.matching << [e[1][:data][index1], e[1][:data][index2]]
87
+ q.matching << [e[2][:data][index1], e[2][:data][index2]]
88
+ q.matching << [e[3][:data][index1], e[3][:data][index2]]
69
89
  q.matching << ['', lang.do_mistake_to(e[0][:data][index2])]
90
+ questions << q
70
91
  end
71
- questions << q
72
92
 
73
93
  # Question type <b1match>: match 3 items from table-A and 1 item with error
74
94
  e.shuffle!
75
95
  q = Question.new(:match)
76
- q.name = "#{name}-#{num}-b1match3x1misspelled-#{p_table.name}"
96
+ q.name = "#{name}-#{num}-b1match4x4_1misspelled-#{p_table.name}"
77
97
  q.tags << 'match'
78
98
  q.tags << 'random'
79
99
  q.text = random_image_for(name) \
@@ -82,14 +102,40 @@ class StageB < BaseStage
82
102
  q.matching << [e[1][:data][index1], e[1][:data][index2]]
83
103
  q.matching << [e[2][:data][index1], e[2][:data][index2]]
84
104
  q.matching << [lang.do_mistake_to(e[3][:data][index1]), lang.text_for(:misspelling)]
85
- # Add an extra line
105
+ questions << q
106
+
86
107
  if list2.count.positive?
108
+ # Add an extra line error
109
+ e.shuffle!
110
+ q = Question.new(:match)
111
+ q.name = "#{name}-#{num}-b1match4x5_1misspelled_1error-#{p_table.name}"
112
+ q.tags << 'match'
113
+ q.tags << 'random'
114
+ q.text = random_image_for(name) \
115
+ + lang.text_for(:b1, name, p_table.fields[index1].capitalize, p_table.fields[index2].capitalize)
116
+ q.matching << [e[0][:data][index1], e[0][:data][index2]]
117
+ q.matching << [e[1][:data][index1], e[1][:data][index2]]
118
+ q.matching << [e[2][:data][index1], e[2][:data][index2]]
119
+ q.matching << [lang.do_mistake_to(e[3][:data][index1]), lang.text_for(:misspelling)]
87
120
  q.matching << ['', list2[0][:data][index2]]
121
+ questions << q
88
122
  else
89
- q.tags << 'misspell'
123
+ # Add an extra line misspelled
124
+ e.shuffle!
125
+ q = Question.new(:match)
126
+ q.name = "#{name}-#{num}-b1match4x5_2misspelled-#{p_table.name}"
127
+ q.tags << 'match'
128
+ q.tags << 'random'
129
+ q.tags << 'misspelled'
130
+ q.text = random_image_for(name) \
131
+ + lang.text_for(:b1, name, p_table.fields[index1].capitalize, p_table.fields[index2].capitalize)
132
+ q.matching << [e[0][:data][index1], e[0][:data][index2]]
133
+ q.matching << [e[1][:data][index1], e[1][:data][index2]]
134
+ q.matching << [e[2][:data][index1], e[2][:data][index2]]
135
+ q.matching << [lang.do_mistake_to(e[3][:data][index1]), lang.text_for(:misspelling)]
90
136
  q.matching << ['', lang.do_mistake_to(e[0][:data][index2])]
137
+ questions << q
91
138
  end
92
- questions << q
93
139
  end
94
140
  end
95
141
 
@@ -103,7 +149,19 @@ class StageB < BaseStage
103
149
  # Question 3 items from table-A, and 1 item from table-B
104
150
  if s.count > 3
105
151
  q = Question.new(:match)
106
- q.name = "#{name}-#{num}-b1match3x1-#{p_table.name}"
152
+ q.name = "#{name}-#{num}-b1match4x4_1error-#{p_table.name}"
153
+ q.tags << 'match'
154
+ q.tags << 'random'
155
+ q.text = random_image_for(name) \
156
+ + lang.text_for(:b1, name, p_table.fields[index1].capitalize, p_table.fields[index2].capitalize)
157
+ q.matching << [list1[0][:data][index1], list1[0][:data][index2]]
158
+ q.matching << [list1[1][:data][index1], list1[1][:data][index2]]
159
+ q.matching << [list1[2][:data][index1], list1[2][:data][index2]]
160
+ q.matching << [list2[0][:data][index1], lang.text_for(:error)]
161
+ questions << q
162
+
163
+ q = Question.new(:match)
164
+ q.name = "#{name}-#{num}-b1match4x5_1error_1misspelled-#{p_table.name}"
107
165
  q.tags << 'match'
108
166
  q.tags << 'random'
109
167
  q.text = random_image_for(name) \
@@ -119,10 +177,4 @@ class StageB < BaseStage
119
177
 
120
178
  questions
121
179
  end
122
- # rubocop:enable Metrics/AbcSize
123
- # rubocop:enable Metrics/MethodLength
124
- # rubocop:enable Metrics/CyclomaticComplexity
125
- # rubocop:enable Style/ConditionalAssignment
126
- # rubocop:enable Metrics/BlockLength
127
- # rubocop:enable Metrics/PerceivedComplexity
128
180
  end
@@ -28,10 +28,11 @@ default = en
28
28
 
29
29
  ; List of code languages to be loaded
30
30
  ; Accept yes|no
31
+ ca = yes
32
+ du = yes
31
33
  en = yes
32
34
  es = yes
33
35
  fr = yes
34
- du = yes
35
36
  javascript = yes
36
37
  math = no
37
38
  python = yes
@@ -53,7 +54,7 @@ fractions = 0, -50, -33.33, -25, -20
53
54
  ; List of values d,b,f,i,s,t
54
55
  stages = d,b,f,i,s,t
55
56
 
56
- ; Questions category
57
+ ; Questions category. Default value: (empty)
57
58
  category =
58
59
 
59
60
  ; Exclude questions with this texts into their names.
@@ -0,0 +1,103 @@
1
+ ---
2
+ - '[*]'
3
+ - a
4
+ - al
5
+ - a
6
+ - "l'"
7
+ - davant
8
+ - de
9
+ - sota
10
+ - cada
11
+ - com
12
+ - com
13
+ - amb
14
+ - contra
15
+ - quan
16
+ - quant
17
+ - quin
18
+ - quina
19
+ - de
20
+ - des
21
+ - i
22
+ - a
23
+ - entre
24
+ - ell
25
+ - el
26
+ - ella
27
+ - ells
28
+ - es
29
+ - és
30
+ - aquest
31
+ - aquesta
32
+ - això
33
+ - aquests
34
+ - aquestes
35
+ - aquest
36
+ - això
37
+ - aquesta
38
+ - aquests
39
+ - aquestes
40
+ - cap
41
+ - fins
42
+ - la
43
+ - les
44
+ - ho
45
+ - els
46
+ - li
47
+ - els
48
+ - mes
49
+ - més
50
+ - mi
51
+ - em
52
+ - molt
53
+ - molts
54
+ - molt
55
+ - no
56
+ - ens
57
+ - nosaltres
58
+ - o
59
+ - per
60
+ - però
61
+ - per
62
+ - perquè
63
+ - perqué
64
+ - que
65
+ - qué
66
+ - qui
67
+ - si
68
+ - sense
69
+ - sobre
70
+ - tota
71
+ - totes
72
+ - tot
73
+ - tots
74
+ - darrera
75
+ - darrere
76
+ - tu
77
+ - tú
78
+ - es
79
+ - seyu
80
+ - les
81
+ - seves
82
+ - seus
83
+ - seu
84
+ - seva
85
+ - seus
86
+ - seves
87
+ - meu
88
+ - meva
89
+ - meus
90
+ - meves
91
+ - o
92
+ - un
93
+ - un
94
+ - uns
95
+ - una
96
+ - unes
97
+ - vosaltres
98
+ - vostre
99
+ - vostres
100
+ - nostre
101
+ - nostres
102
+ - i
103
+ - jo
@@ -0,0 +1,98 @@
1
+ ---
2
+ :a: 'à,á,e,o,ha'
3
+ :"a ": 'as '
4
+ :"as ": 'a ,os '
5
+ :á: 'a,à,é,há'
6
+ :à: 'a,á,e,ha'
7
+ :al: 'ar,la,el'
8
+ :ar: 'al'
9
+ :b: 'v'
10
+ :c: 's,k,ç'
11
+ :ca: 'ka,ça,ssa'
12
+ :ce: 'se,que,sse'
13
+ :ci: 'si,qui,ssi'
14
+ :co: 'ko,ço'
15
+ :cu: 'ku,qu,çu'
16
+ :ç: 'z,ss,s'
17
+ :e: 'é,è'
18
+ :" e": 'he'
19
+ :é: 'e,è'
20
+ :è: 'e,é'
21
+ :" é": 'hé'
22
+ :"el ": 'er ,ell '
23
+ :"er ": 'el '
24
+ :g: 'j'
25
+ :h: ' '
26
+ :ha: 'a'
27
+ :he: 'e'
28
+ :hi: 'i'
29
+ :ho: 'o'
30
+ :hu: 'u'
31
+ :i: 'í,ì'
32
+ :í: 'i,ì'
33
+ :ì: 'i,í'
34
+ :j: 'g'
35
+ :k: 'q,c'
36
+ :l: 'r'
37
+ :lla: 'ya'
38
+ :lle: 'ye'
39
+ :lli: 'yi'
40
+ :llo: 'yo'
41
+ :llu: 'yu'
42
+ :n: 'm,ny'
43
+ :ny: 'n'
44
+ :m: 'n'
45
+ :mb: 'nb'
46
+ :nb: 'mb'
47
+ :mp: 'np'
48
+ :np: 'mp'
49
+ :o: 'ó,e,ò'
50
+ :"o ": 'os '
51
+ :ó: 'o,ò'
52
+ :ò: 'o,ó'
53
+ :ol: 'or'
54
+ :or: 'ol'
55
+ :os : 'o ,ó ,as '
56
+ :oha: 'oa'
57
+ :p: 'q,o'
58
+ :que: 'ke,què, '
59
+ :qui: 'ki'
60
+ :s: 'z,a,ss,ç'
61
+ :sa: 'za,ssa'
62
+ :se: 'ce,ze,sse'
63
+ :si: 'ci,zi,ssi'
64
+ :so: 'zo,sso'
65
+ :su: 'zu,ssu'
66
+ :st: 'ts'
67
+ :ss: 'z,s,ç'
68
+ :t: 'f,p'
69
+ :u: 'ú,ù'
70
+ :ú: 'u,ù'
71
+ :ù: 'u,ú'
72
+ :ul: 'ur'
73
+ :ur: 'ul'
74
+ :v: 'b,w'
75
+ :w: 'v, gu'
76
+ :wa: 'gua'
77
+ :we: 'gue'
78
+ :wi: 'gui'
79
+ :wo: 'guo'
80
+ :x: 'ks,k,s'
81
+ :y: 'i,v'
82
+ :" y ": ' i '
83
+ :ya: 'lla'
84
+ :ye: 'lle'
85
+ :yi: 'lli'
86
+ :yo: 'llo'
87
+ :yu: 'llu'
88
+ :lla: 'l·la'
89
+ :lle: 'l·le'
90
+ :lli: 'l·li'
91
+ :llo: 'l·lo'
92
+ :llu: 'l·lu'
93
+ :z: 's,ss,ç'
94
+ :za: 'sa,ssa'
95
+ :ze: 'se,sse'
96
+ :zi: 'si,ssi'
97
+ :zo: 'so,sso'
98
+ :zu: 'su,ssu'
@@ -0,0 +1,29 @@
1
+ ---
2
+ :none: 'Ninguna és correcta'
3
+ :error: 'Error'
4
+ :misspelling: 'Error ortográfic'
5
+ :true: 'Cert'
6
+ :false: 'Fals'
7
+ :d1: 'Definició: <i><%=text1%></i><br/>Elige la opción que mejor se corresponda con la definición anterior.<br/>'
8
+ :d2: 'Definició de <b><%=text1%></b>:<br/> <i><%=text2%></i><br/>'
9
+ :d3: 'Definició de <b><%=text1%></b>:<br/> <i><%=text2%></i><br/></br><p>Nota: Cada símbol ? representa una lletra, i * a una o diverses paraules.</p>'
10
+ :d4: 'Definició de <b><%=text1%></b>:<br/> <i><%=text2%></i><br/><br/>(Coloca cada paula a la seva posició correcta dins el text)'
11
+ :b1: 'En relació al concepte <b><%=text1%></b>, asocia cada "<%=text2%>" amb el seu "<%=text3%>".<br/>'
12
+ :f1: 'Els seguents elements son "<%=text2%>" del concepte <b><%=text1%></b>:<ul><li><%=text3%></li></ul>'
13
+ :f2: "Els seguents elements son \"<%=text2%>\".<br/>Selecciona l'opció que no pertanyi al concepte <b><%=text1%></b>."
14
+ :f3: 'Els seguents elements son "<%=text2%>" del concepte <b><%=text1%></b>:<br><p><%=text3%></p>(Coloca cada paraula a la seva posició correcta dins el text)'
15
+ :i1: "<%=text1%><br/>Escull l'opció que millor es correspongui amb la imatge anterior.<br/>"
16
+ :i2: '<%=text1%><br/>La imatge/text anterior correspo a <b><%=text2%></b>.'
17
+ :i3: "<%=text1%><br/>Escriu l'opció <%=text2%>, que millor correspongui amb la imatge anterior.<br/>"
18
+ :i4: '<%=text1%><br/>Definició: <i><%=text2%></i><br/><br/>(Coloca cada palabra en su posición correcta dentro del texto)'
19
+ :s1: 'En relació al concepte <b><%=text1%></b>, ordena cada/les/els "<%=text2%>" per tal que es compleixi el criteri "<%=text3%>".<br/>'
20
+ :t1table: "Concepte <b><%=text1%></b><br/><%=text2%>: [*]<br/><%=text3%>: \"<%=text4%>\"<br/>Escull l'opció correcta.<br/>"
21
+ :t2table: "Concepte <b><%=text1%></b><br/><%=text2%>: [*]<br/><%=text3%>: \"<%=text4%>\"<br/>Escull l'opció correcta.<br/>"
22
+ :t3table: "Concepte <b><%=text1%></b><br/><%=text2%>: \"<%=text3%>\"<br/><%=text4%>: [*]<br/>Escull l'opció correcta.<br/>"
23
+ :t4table: "Concepte <b><%=text1%></b><br/><%=text2%>: \"<%=text3%>\"<br/><%=text4%>: [*]<br/>Escull l'opció correcta.<br/>"
24
+ :t5table: "Concepte <b><%=text1%></b><br/>L'associació següent és correcta:<br/><ul><li><%=text2%>: \"<%=text3%>\"</li><li><%=text4%>: \"<%=text5%>\"</li></ul>"
25
+ :t6table: "Concepte <b><%=text1%></b><br/>L'associació següent és correcta:<br/><ul><li><%=text2%>: \"<%=text3%>\"</li><li><%=text4%>: \"<%=text5%>\"</li></ul>"
26
+ :t7table: "Concepte <b><%=text1%></b><br/>L'associació següent és correcta:<br/><ul><li><%=text2%>: \"<%=text3%>\"</li><li><%=text4%>: \"<%=text5%>\"</li></ul>"
27
+ :t8table: 'Concepte <b><%=text1%></b><br/>Completa la següent associació:<br/><ul><li><%=text2%>: "<%=text3%>"</li><li><%=text4%>: [*]</li></ul>Escriu una paraula.<br/>'
28
+ :t9table: 'Concepte <b><%=text1%></b><br/>Completa la següent associació:<br/><ul><li><%=text2%>: "<%=text3%>"</li><li><%=text4%>: <%=text5%></li></ul>Escriu <%=text6%> paraules.<br/>'
29
+ :code1: '<pre><%=text1%></pre><br/><p>Escriu el número de línia hi ha el primer error. Escriu 0 si no hi ha cap error.</p>'
@@ -1,11 +1,9 @@
1
- # frozen_string_literal: true
2
1
 
3
2
  require 'erb'
4
3
  require 'yaml'
5
4
  require_relative 'text_actions'
6
5
  require_relative '../logger'
7
6
 
8
- # Lang#lang
9
7
  class Lang
10
8
  include TextActions
11
9
 
@@ -32,7 +30,6 @@ class Lang
32
30
  @mistakes = load_yaml_file(filepath)
33
31
  end
34
32
 
35
- # rubocop:disable Security/YAMLLoad
36
33
  def load_yaml_file(filepath)
37
34
  begin
38
35
  content = YAML.load(File.new(filepath))
@@ -44,5 +41,4 @@ class Lang
44
41
  end
45
42
  content
46
43
  end
47
- # rubocop:enable Security/YAMLLoad
48
44
  end
data/lib/asker/version.rb CHANGED
@@ -1,8 +1,7 @@
1
1
 
2
- # Global parameters
3
2
  module Version
4
- MAJOR_NUMBER = '2.3'
5
- VERSION = "#{MAJOR_NUMBER}.2"
3
+ MAJOR_NUMBER = '2.4'
4
+ VERSION = "#{MAJOR_NUMBER}.0"
6
5
  NAME = 'asker'
7
6
  GEM = 'asker-tool'
8
7
  CONFIGFILE = 'asker.ini'
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.3.2
4
+ version: 2.4.0
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-03-17 00:00:00.000000000 Z
11
+ date: 2022-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml
@@ -108,48 +108,6 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.20'
111
- - !ruby/object:Gem::Dependency
112
- name: minitest
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '5.11'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '5.11'
125
- - !ruby/object:Gem::Dependency
126
- name: pry-byebug
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.9'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.9'
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.74'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.74'
153
111
  description: ASKER helps trainers to create a huge amount of questions, from a definitions
154
112
  input file.
155
113
  email: teuton.software@protonmail.com
@@ -212,6 +170,9 @@ files:
212
170
  - lib/asker/files/asker.ini
213
171
  - lib/asker/files/example-code.haml
214
172
  - lib/asker/files/example-concept.haml
173
+ - lib/asker/files/language/ca/connectors.yaml
174
+ - lib/asker/files/language/ca/mistakes.yaml
175
+ - lib/asker/files/language/ca/templates.yaml
215
176
  - lib/asker/files/language/du/connectors.yaml
216
177
  - lib/asker/files/language/du/mistakes.yaml
217
178
  - lib/asker/files/language/du/templates.yaml