asker-tool 2.1.3 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -17
  3. data/lib/asker.rb +40 -83
  4. data/lib/asker/application.rb +1 -1
  5. data/lib/asker/checker.rb +42 -25
  6. data/lib/asker/cli.rb +1 -1
  7. data/lib/asker/data/world.rb +2 -0
  8. data/lib/asker/{exporter/code_screen_exporter.rb → displayer/code_displayer.rb} +6 -6
  9. data/lib/asker/{exporter/concept_ai_screen_exporter.rb → displayer/concept_ai_displayer.rb} +27 -29
  10. data/lib/asker/displayer/concept_displayer.rb +27 -0
  11. data/lib/asker/displayer/stats_displayer.rb +13 -0
  12. data/lib/asker/exporter/code_gift_exporter.rb +10 -11
  13. data/lib/asker/exporter/concept_ai_gift_exporter.rb +9 -9
  14. data/lib/asker/exporter/concept_ai_yaml_exporter.rb +2 -4
  15. data/lib/asker/exporter/concept_doc_exporter.rb +9 -15
  16. data/lib/asker/exporter/output_file_exporter.rb +18 -0
  17. data/lib/asker/files/example-concept.haml +25 -8
  18. data/lib/asker/formatter/concept_string_formatter.rb +9 -8
  19. data/lib/asker/lang/lang.rb +3 -4
  20. data/lib/asker/lang/locales/du/templates.yaml +50 -0
  21. data/lib/asker/lang/locales/en/connectors.yaml +44 -0
  22. data/lib/asker/lang/locales/en/mistakes.yaml +37 -0
  23. data/lib/asker/lang/locales/en/templates.yaml +29 -0
  24. data/lib/asker/lang/locales/es/connectors.yaml +92 -0
  25. data/lib/asker/lang/locales/es/mistakes.yaml +82 -0
  26. data/lib/asker/lang/locales/es/templates.yaml +29 -0
  27. data/lib/asker/lang/locales/fr/connectors.yaml +92 -0
  28. data/lib/asker/lang/locales/fr/mistakes.yaml +82 -0
  29. data/lib/asker/lang/locales/fr/templates.yaml +29 -0
  30. data/lib/asker/lang/locales/javascript/connectors.yaml +11 -0
  31. data/lib/asker/lang/locales/javascript/mistakes.yaml +30 -0
  32. data/lib/asker/lang/locales/javascript/templates.yaml +3 -0
  33. data/lib/asker/lang/locales/math/connectors.yaml +2 -0
  34. data/lib/asker/lang/locales/math/mistakes.yaml +2 -0
  35. data/lib/asker/lang/locales/math/templates.yaml +1 -0
  36. data/lib/asker/lang/locales/python/connectors.yaml +11 -0
  37. data/lib/asker/lang/locales/python/mistakes.yaml +26 -0
  38. data/lib/asker/lang/locales/python/templates.yaml +3 -0
  39. data/lib/asker/lang/locales/ruby/connectors.yaml +11 -0
  40. data/lib/asker/lang/locales/ruby/mistakes.yaml +33 -0
  41. data/lib/asker/lang/locales/ruby/templates.yaml +3 -0
  42. data/lib/asker/lang/locales/sql/connectors.yaml +6 -0
  43. data/lib/asker/lang/locales/sql/mistakes.yaml +11 -0
  44. data/lib/asker/lang/locales/sql/templates.yaml +2 -0
  45. data/lib/asker/loader/input_loader.rb +22 -5
  46. data/lib/asker/loader/project_loader.rb +25 -24
  47. data/lib/asker/logger.rb +1 -2
  48. data/lib/asker/project.rb +5 -3
  49. data/lib/asker/skeleton.rb +25 -24
  50. metadata +47 -63
  51. data/docs/changelog/v2.1.md +0 -99
  52. data/docs/commands.md +0 -12
  53. data/docs/contributions.md +0 -18
  54. data/docs/history.md +0 -40
  55. data/docs/idea.md +0 -44
  56. data/docs/inputs/README.md +0 -39
  57. data/docs/inputs/code.md +0 -69
  58. data/docs/inputs/concepts.md +0 -142
  59. data/docs/inputs/jedi.md +0 -68
  60. data/docs/inputs/tables.md +0 -112
  61. data/docs/inputs/templates.md +0 -87
  62. data/docs/install/README.md +0 -38
  63. data/docs/install/manual.md +0 -26
  64. data/docs/install/scripts.md +0 -38
  65. data/docs/revise/asker-file.md +0 -41
  66. data/docs/revise/buenas-practicas/01-convocatoria.md +0 -30
  67. data/docs/revise/buenas-practicas/02-formulario.md +0 -35
  68. data/docs/revise/buenas-practicas/03-descripcion.md +0 -63
  69. data/docs/revise/buenas-practicas/04-resultados.md +0 -17
  70. data/docs/revise/buenas-practicas/05-reproducir.md +0 -10
  71. data/docs/revise/ejemplos/01/README.md +0 -27
  72. data/docs/revise/ejemplos/02/README.md +0 -31
  73. data/docs/revise/ejemplos/03/README.md +0 -31
  74. data/docs/revise/ejemplos/04/README.md +0 -37
  75. data/docs/revise/ejemplos/05/README.md +0 -25
  76. data/docs/revise/ejemplos/06/README.md +0 -43
  77. data/docs/revise/ejemplos/README.md +0 -11
  78. data/docs/revise/projects.md +0 -74
  79. data/lib/asker/exporter/concept_screen_exporter.rb +0 -25
  80. data/lib/asker/exporter/main.rb +0 -9
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'terminal-table'
4
+ require_relative '../logger'
4
5
 
5
6
  # Export Code into Screen
6
- module CodeScreenExporter
7
- def self.export_all(codes)
8
- project = Project.instance
9
- return if project.show_mode == :none || codes.nil? || codes.size.zero?
7
+ module CodeDisplayer
8
+ def self.show(codes)
9
+ return if codes.nil? || codes.size.zero?
10
10
 
11
11
  total_c = total_q = total_e = 0
12
12
  my_screen_table = Terminal::Table.new do |st|
@@ -39,7 +39,7 @@ module CodeScreenExporter
39
39
  Rainbow((total_q / total_e.to_f).round(2)).bright]
40
40
  return unless total_c.positive?
41
41
 
42
- project.verboseln "\n[INFO] Showing CODE statistics"
43
- project.verboseln my_screen_table.to_s
42
+ Logger.verboseln "\n[INFO] Showing CODE statistics"
43
+ Logger.verboseln my_screen_table.to_s
44
44
  end
45
45
  end
@@ -1,28 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'terminal-table'
4
+ require_relative '../logger'
4
5
 
5
- # Show ConceptAI info on screen
6
- class ConceptAIScreenExporter
7
- def self.export_all(concepts_ai)
8
- @concepts_ai = concepts_ai
9
- project = Project.instance
10
- return if project.show_mode == :none
11
-
6
+ # Display ConceptAI stat on screen
7
+ class ConceptAIDisplayer
8
+ ##
9
+ # Display ConceptAI stat on screen
10
+ # @param concepts_ai (Array)
11
+ def self.show(concepts_ai)
12
12
  # Create table HEAD
13
13
  screen_table = Terminal::Table.new do |st|
14
14
  st << ['Concept','Questions','Entries','xFactor',
15
15
  'd','b','f','i','s','t']
16
16
  st << :separator
17
17
  end
18
-
19
18
  # Create table BODY
20
19
  total = {}
21
20
  total[:q] = total[:e] = total[:c] = 0
22
21
  total[:sd] = total[:sb] = total[:sf] = 0
23
22
  total[:si] = total[:ss] = total[:st] = 0
24
23
 
25
- @concepts_ai.each do |concept_ai|
24
+ concepts_ai.each do |concept_ai|
26
25
  if concept_ai.process?
27
26
  e = concept_ai.texts.size
28
27
  concept_ai.tables.each { |t| e += t.fields.size * t.rows.size }
@@ -51,7 +50,7 @@ class ConceptAIScreenExporter
51
50
  return if total[:c] == 0 # No concepts to be process?
52
51
 
53
52
  # Add row with excluded questions
54
- export_excluded_questions(screen_table, @concepts_ai)
53
+ export_excluded_questions(screen_table, concepts_ai)
55
54
 
56
55
  # Create table TAIL
57
56
  screen_table.add_separator
@@ -62,10 +61,10 @@ class ConceptAIScreenExporter
62
61
  total[:sd], total[:sb], total[:sf],
63
62
  total[:si], total[:ss], total[:st]]
64
63
  export_notes
65
- project.verbose screen_table.to_s + "\n"
64
+ Logger.verbose "#{screen_table}\n"
66
65
  end
67
66
 
68
- def self.export_excluded_questions(screen_table, concepts_ai)
67
+ private_class_method def self.export_excluded_questions(screen_table, concepts_ai)
69
68
  # Create table BODY
70
69
  total = {}
71
70
  total[:q] = total[:c] = 0
@@ -94,22 +93,21 @@ class ConceptAIScreenExporter
94
93
  total[:ss], total[:st]]
95
94
  end
96
95
 
97
- def self.export_notes
98
- p = Project.instance
99
- p.verbose "\n[INFO] Showing CONCEPT statistics\n"
100
- p.verbose ' * Exclude questions: ' +
101
- Application.instance.config['questions']['exclude'].to_s
102
- p.verbose ' * Annotations:'
103
- p.verbose ' ├── (d) Definitions <= Concept.def'
104
- p.verbose ' ├── (b) Table Matching <= ' \
105
- 'Concept.table.rows.columns'
106
- p.verbose ' ├── (f) Tables 1 Field <= Concept.table.fields.size==1'
107
- p.verbose ' ├── (i) Images URL <= ' \
108
- "Concept.def{:type => 'image_url'}"
109
- p.verbose ' ├── (s) Sequences <= ' \
110
- "Concept.table{:sequence => '...'}"
111
- p.verbose ' └── (t) Table Rows&Cols <= ' \
112
- 'Concept.table.rows.columns'
113
- p.verbose "\n"
96
+ private_class_method def self.export_notes
97
+ Logger.verbose "\n[INFO] Showing CONCEPT statistics\n"
98
+ Logger.verbose ' * Exclude questions: ' +
99
+ Application.instance.config['questions']['exclude'].to_s
100
+ Logger.verbose ' * Annotations:'
101
+ Logger.verbose ' ├── (d) Definitions <= Concept.def'
102
+ Logger.verbose ' ├── (b) Table Matching <= ' \
103
+ 'Concept.table.rows.columns'
104
+ Logger.verbose ' ├── (f) Tables 1 Field <= Concept.table.fields.size==1'
105
+ Logger.verbose ' ├── (i) Images URL <= ' \
106
+ "Concept.def{:type => 'image_url'}"
107
+ Logger.verbose ' ├── (s) Sequences <= ' \
108
+ "Concept.table{:sequence => '...'}"
109
+ Logger.verbose ' └── (t) Table Rows&Cols <= ' \
110
+ 'Concept.table.rows.columns'
111
+ Logger.verbose "\n"
114
112
  end
115
113
  end
@@ -0,0 +1,27 @@
1
+
2
+ require_relative '../formatter/concept_string_formatter'
3
+ require_relative '../logger'
4
+
5
+ # Show Concept Data on screen
6
+ module ConceptDisplayer
7
+ ##
8
+ # Show concepts on screen
9
+ # @param concepts (Array)
10
+ # @param show_mode (Symbol)
11
+ def self.show(concepts, show_mode = :default)
12
+ return if show_mode == :none
13
+ msg = "\n[INFO] Showing concept data (#{Rainbow(show_mode).bright})"
14
+ Logger.verbose msg
15
+ case show_mode
16
+ when :resume
17
+ s = "* Concepts (#{concepts.count}): "
18
+ concepts.each { |c| s += c.name + ', ' }
19
+ Logger.verbose s
20
+ when :default
21
+ # Only show Concepts with process attr true
22
+ concepts.each do |c|
23
+ Logger.verbose ConceptStringFormatter.to_s(c) if c.process?
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'concept_ai_displayer'
2
+ require_relative 'code_displayer'
3
+
4
+ # Display Stats on screen.
5
+ module StatsDisplayer
6
+ def self.show(data, show_mode)
7
+ return if show_mode == :none
8
+
9
+ # show_final_results
10
+ ConceptAIDisplayer.show(data[:concepts_ai])
11
+ CodeDisplayer.show(data[:codes])
12
+ end
13
+ end
@@ -1,31 +1,30 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../project'
4
3
  require_relative '../formatter/question_gift_formatter'
5
4
 
6
- # UNDER DEVELOPMENT
7
5
  # Use to export questions from Code to gift format
8
6
  module CodeGiftExporter
9
- def self.export_all(codes)
10
- codes.each do |code|
11
- code.make_questions
12
- export code
13
- end
7
+ ##
8
+ # Export an Array of codes to gift format file
9
+ # @param codes (Array)
10
+ def self.export_all(codes, file)
11
+ codes.each { |code| export(code, file) }
14
12
  end
15
13
 
16
- def self.export(code)
14
+ ##
15
+ # Export 1 code to gift format file
16
+ # @param code (Code)
17
+ def self.export(code, file)
17
18
  return false unless code.process?
18
19
 
19
- file = Project.instance.outputfile
20
20
  file.write head(code)
21
-
22
21
  code.questions.each do |question|
23
22
  file.write QuestionGiftFormatter.to_s(question)
24
23
  end
25
24
  true
26
25
  end
27
26
 
28
- def self.head(code)
27
+ private_class_method def self.head(code)
29
28
  s = "\n"
30
29
  s += '// ' + '=' * 50 + "\n"
31
30
  s += "// Code #{code.type}: #{code.filename} (#{code.questions.size})\n"
@@ -3,20 +3,20 @@
3
3
  require_relative '../project'
4
4
  require_relative '../formatter/question_gift_formatter'
5
5
 
6
- # Use to export data from ConceptIA to gift format
6
+ # Export ConceptIA data to gift to outputfile
7
7
  module ConceptAIGiftExporter
8
- def self.export_all(concepts_ai)
9
- concepts_ai.each { |concept_ai| export(concept_ai) }
8
+ ##
9
+ # Export list of ConceptAI into outpufile
10
+ def self.export_all(concepts_ai, project)
11
+ concepts_ai.each { |concept_ai| export(concept_ai, project) }
10
12
  end
11
-
12
- def self.export(concept_ai)
13
+
14
+ def self.export(concept_ai, project)
13
15
  return unless concept_ai.process?
14
16
 
15
- file = Project.instance.outputfile
17
+ file = project.get(:outputfile)
16
18
  file.write head(concept_ai.name)
17
-
18
- stages = Project.instance.stages
19
- stages.each_key do |stage|
19
+ project.stages.each_key do |stage|
20
20
  concept_ai.questions[stage].each do |question|
21
21
  file.write(QuestionGiftFormatter.to_s(question))
22
22
  end
@@ -1,21 +1,19 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'yaml'
4
- require_relative '../project'
5
4
  require_relative '../formatter/question_hash_formatter'
6
5
 
7
6
  # Use to export data from ConceptIA to YAML format
8
7
  module ConceptAIYAMLExporter
9
- def self.export_all(concepts_ai)
8
+ def self.export_all(concepts_ai, project)
10
9
  questions = []
11
10
  concepts_ai.each do |concept_ai|
12
11
  questions += get_questions_from concept_ai
13
12
  end
14
- project = Project.instance
15
13
  params = { lang: project.get(:lang) ,
16
14
  projectname: project.get(:projectname) }
17
15
  output = { params: params, questions: questions }
18
- project.yamlfile.write(output.to_yaml)
16
+ project.get(:yamlfile).write(output.to_yaml)
19
17
  end
20
18
 
21
19
  def self.get_questions_from(concept_ai)
@@ -1,21 +1,15 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require_relative '../project'
4
3
  require_relative '../formatter/concept_doc_formatter'
5
4
 
6
- class ConceptDocExporter
7
-
8
- def initialize(concepts)
9
- @concepts = concepts
10
- end
11
-
12
- def export
13
- file = Project.instance.lessonfile
14
- @concepts.each do |concept|
15
- if concept.process
16
- file.write(ConceptDocFormatter.to_s(concept))
17
- end
5
+ ##
6
+ # Export Concept to Doc file
7
+ module ConceptDocExporter
8
+ ##
9
+ # Export arrya of concepts to doc
10
+ def self.export_all(concepts, file)
11
+ concepts.each do |concept|
12
+ file.write(ConceptDocFormatter.to_s(concept)) if concept.process
18
13
  end
19
14
  end
20
-
21
15
  end
@@ -0,0 +1,18 @@
1
+ require_relative 'concept_ai_gift_exporter'
2
+ require_relative 'code_gift_exporter'
3
+ require_relative 'concept_ai_yaml_exporter'
4
+ require_relative 'concept_doc_exporter'
5
+
6
+ # Export Output data:
7
+ # * Gift (ConceptAI, Code)
8
+ # * YAML
9
+ # * Doc (txt)
10
+ module OutputFileExporter
11
+ def self.export(data, project)
12
+ ConceptAIGiftExporter.export_all(data[:concepts_ai], project)
13
+ # UNDER DEVELOPMENT
14
+ CodeGiftExporter.export_all(data[:codes], project.get(:outputfile))
15
+ ConceptAIYAMLExporter.export_all(data[:concepts_ai], project)
16
+ ConceptDocExporter.export_all(data[:concepts], project.get(:lessonfile))
17
+ end
18
+ end
@@ -1,13 +1,30 @@
1
- %map{ :lang => 'en', :context => 'list,of,words,to,define,context', :version => '1'}
1
+ %map{ :lang => 'en', :context => 'music, band', :version => '1'}
2
2
 
3
3
  %concept
4
- %names Example1
5
- %tags list,of,words,to,define,this,concept
6
- %def Definition 1 of Example1
4
+ %names AC/DC, ACDC
5
+ %tags single, seat, leg, backrest
6
+ %tags rock, band, australia
7
+ %def Australian rock band formed by Scottish-born brothers Malcolm and Angus Young
8
+ %table{ :fields => 'members'}
9
+ %row Bon Scott
10
+ %row Angus Young
11
+ %row Malcolm Young
12
+ %row Phil Rudd
13
+ %row Cliff Williams
7
14
  %table{ :fields => 'attribute, value'}
8
15
  %row
9
- %col attr1
10
- %col value1
16
+ %col Genres
17
+ %col Hard rock blues rock rock and roll
11
18
  %row
12
- %col attr2
13
- %col value2
19
+ %col Years active
20
+ %col 1973-present
21
+ %row
22
+ %col Formed in
23
+ %col Sydney
24
+ %table{ :fields => 'Albums', :sequence => 'Albums sorted by date'}
25
+ %row Albums High Voltage
26
+ %row Powerage
27
+ %row Highway to Hell
28
+ %row Back in Black
29
+ %row Ballbreaker
30
+ %row Rock or Bust
@@ -11,14 +11,14 @@ module ConceptStringFormatter
11
11
  # @return String
12
12
  def self.to_s(concept)
13
13
  tt = Terminal::Table.new
14
- rows = get_tt_rows(concept)
15
- rows.each { |row| tt.add_row row }
14
+ get_tt_rows(concept).each { |row| tt.add_row row }
16
15
  "#{tt}\n"
17
16
  end
18
17
 
19
18
  # rubocop:disable Metrics/AbcSize
20
19
  # rubocop:disable Metrics/MethodLength
21
- def self.get_tt_rows(concept)
20
+ # rubocop:disable Layout/LineLength
21
+ private_class_method def self.get_tt_rows(concept)
22
22
  rows = []
23
23
  rows << [Rainbow(concept.id.to_s).bright,
24
24
  Rainbow(concept.name(:screen)).white.bg(:blue).bright +
@@ -31,14 +31,15 @@ module ConceptStringFormatter
31
31
  rows << [Rainbow('Referenced by').blue,
32
32
  concept.referenced_by.join(', ')[0...70].to_s]
33
33
  rows << format_texts(concept)
34
- rows << [Rainbow('.def(images)').blue, concept.images.size.to_s]
35
- rows << format_tables(concept)
34
+ rows << [Rainbow('.def(images)').blue, concept.images.size.to_s] unless concept.images.size.zero?
35
+ rows << format_tables(concept) unless concept.tables.count.zero?
36
36
  rows << format_neighbors(concept)
37
37
  end
38
38
  # rubocop:enable Metrics/AbcSize
39
39
  # rubocop:enable Metrics/MethodLength
40
+ # rubocop:enable Layout/LineLength
40
41
 
41
- def self.format_texts(concept)
42
+ private_class_method def self.format_texts(concept)
42
43
  list = []
43
44
  concept.texts.each do |i|
44
45
  if i.size < 60
@@ -50,14 +51,14 @@ module ConceptStringFormatter
50
51
  [Rainbow('.def(text)').blue, list.join("\n")]
51
52
  end
52
53
 
53
- def self.format_tables(concept)
54
+ private_class_method def self.format_tables(concept)
54
55
  return [] if concept.tables.count.zero?
55
56
 
56
57
  list = concept.tables.map(&:to_s)
57
58
  [Rainbow('.tables').color(:blue), list.join("\n")]
58
59
  end
59
60
 
60
- def self.format_neighbors(concept)
61
+ private_class_method def self.format_neighbors(concept)
61
62
  list = concept.neighbors[0..4].map do |i|
62
63
  i[:concept].name(:screen) + '(' + i[:value].to_s[0..4] + ')'
63
64
  end
@@ -3,6 +3,7 @@
3
3
  require 'erb'
4
4
  require 'yaml'
5
5
  require_relative 'text_actions'
6
+ require_relative '../logger'
6
7
 
7
8
  # Lang#lang
8
9
  class Lang
@@ -27,9 +28,8 @@ class Lang
27
28
  begin
28
29
  @templates = YAML.load(File.new(filename))
29
30
  rescue StandardError => e
30
- p = Project.instance
31
- p.vervose "[ERROR] lang.initialize(): Reading YAML file <#{filename}>"
32
- p.vervose "[ADVISE] Revise apostrophe into string without \\ char\n"
31
+ Logger.verboseln "[ERROR] lang.initialize(): Reading YAML file <#{filename}>"
32
+ Logger.verboseln "[ADVISE] Revise apostrophe into string without \\ char\n"
33
33
  raise e
34
34
  end
35
35
  filename = File.join(dirbase, 'locales', @code, 'connectors.yaml')
@@ -38,5 +38,4 @@ class Lang
38
38
  filename = File.join(dirbase, 'locales', @code, 'mistakes.yaml')
39
39
  @mistakes = YAML.load(File.new(filename))
40
40
  end
41
-
42
41
  end
@@ -0,0 +1,50 @@
1
+ ---
2
+ :none: keine Antwort ist richtig
3
+ :error: Fehler
4
+ :misspelling: Rechtschreibfehler
5
+ :true: richtig
6
+ :false: falsch
7
+ :d1: 'Bedeutung \: <i><%=text1%></i><br/> Wählen Sie die dazu passende Option aus, die am besten zu der vorstehenden Bedeutung passt.<br/>'
8
+ :d2: 'Bedeutung des Begriffs <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/>'
9
+ :d3: 'Bedeutung des Begriffs <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/></br><p> Bemerkung: Ein Fragezeichnen stellt einen Buchstaben dar, und ein Sternchen steht für ein Wort oder mehrere Wörter.</p>'
10
+ :d4: 'Bedeutung des Begriffs <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/><br/>(Setzen Sie die Wörter in die Lücken ein)'
11
+
12
+ :b1: 'En relación al concepto <b><%=text1%></b>, asocia cada "<%=text2%>" con su "<%=text3%>".<br/>'
13
+ :f1: 'Los siguientes elementos son "<%=text2%>" del concepto <b><%=text1%></b>\:<ul><li><%=text3%></li></ul>'
14
+ :f2: 'Los siguientes elementos son "<%=text2%>".<br/>Selecciona la opción que no pertenezca al concepto <b><%=text1%></b>.'
15
+ :f3: 'Los siguientes elementos son "<%=text2%>" del concepto <b><%=text1%></b>\:<br><p><%=text3%></p>(Coloca cada palabra en su posición correcta dentro del texto)'
16
+ :i1: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Elige la opción que mejor se corresponda con la imagen anterior.<br/>'
17
+ :i2: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>La imagen anterior corresponde a <b><%=text2%></b>.'
18
+ :i3: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Escribe la opción <%=text2%>, que mejor corresponda con la imagen anterior.<br/>'
19
+ :i4: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Definición\: <i><%=text2%></i><br/><br/>(Coloca cada palabra en su posición correcta dentro del texto)'
20
+ :s1: 'En relación al concepto <b><%=text1%></b>, ordena cada "<%=text2%>" de modo que se cumpla el criterio "<%=text3%>".<br/>'
21
+ :t1table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Elige la opción correcta.<br/>'
22
+ :t2table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Elige la opción correcta.<br/>'
23
+ :t3table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Elige la opción correcta.<br/>'
24
+ :t4table: 'Concepto <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Elige la opción correcta.<br/>'
25
+ :t5table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
26
+ :t6table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
27
+ :t7table: 'Concepto <b><%=text1%></b><br/>La asociación siguiente es correcta\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
28
+ :t8table: 'Concepto <b><%=text1%></b><br/>Completa la siguiente asociación\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: [*]</li></ul>Escribir una palabra.<br/>'
29
+ :t9table: 'Concepto <b><%=text1%></b><br/>Completa la siguiente asociación\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: <%=text5%></li></ul>Escribir <%=text6%> palabras.<br/>'
30
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
31
+
32
+ B1: In Bezug auf den Begriff (+++++), verbinden Sie die passenden Begriffe.
33
+ F1: Die folgenden Elemente sind (+++++) des Begriffs (++++)
34
+ F2: Die folgenden Elemente sind (+++++) Wählen Sie die Antwortmöglichkeit aus, die nicht zum Begriff (++++) passt
35
+ F3: Die folgenden Elemente sind (+++++) des Begriffs (++++) (Setzen Sie die Wörter in die Lücken ein)
36
+ I1: Wählen Sie die Antwortmöglichkeit, die am besten zu dem gezeigten Bild passt.
37
+ I2: Das gezeigte Bild gehört zu (++++)
38
+ I3: Setzen Sie die Antwort ein (+++), die am besten zu dem gezeigten Bild passt.
39
+ I4: Bedeutung (Setzen Sie die Wörter in die Lücken ein)
40
+ S1: Beziehen Sie sich auf den Begriff (+++++) und ordnen Sie die richtigen Lösungen zu.
41
+ T1: Begriff / Wählen Sie die richtige Lösung aus.
42
+ T2: Begriff / Wählen Sie die richtige Lösung aus.
43
+ T3: Begriff / Wählen Sie die richtige Lösung aus.
44
+ T4: Begriff / Wählen Sie die richtige Lösung aus.
45
+ T5: Begriff / Die Lösung ist richtig
46
+ T6: Begriff / Die Lösung ist richtig
47
+ T7: Begriff / Die Lösung ist richtig
48
+ T8: Begriff / Vervollständigen Sie / Schreiben Sie einen Begriff
49
+ T9: Begriff / Verbinden Sie / Schreiben Sie fogende Begriffe
50
+ Code1: Nennen Sie die Nummer der Zeile, in der sich der erste Fehler befindet / Wenn es keinen Fehler gibt, setzen Sie 0 ein.