asker-tool 2.7.1 → 2.8.0

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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/asker/ai/problem/customizer.rb +36 -0
  3. data/lib/asker/ai/problem/problem_ai.rb +9 -213
  4. data/lib/asker/ai/problem/stage_answers.rb +104 -0
  5. data/lib/asker/ai/problem/stage_base.rb +34 -0
  6. data/lib/asker/ai/problem/stage_steps.rb +121 -0
  7. data/lib/asker/application.rb +1 -0
  8. data/lib/asker/check_input/check_haml_data.rb +136 -0
  9. data/lib/asker/check_input.rb +15 -10
  10. data/lib/asker/cli.rb +2 -0
  11. data/lib/asker/data/concept.rb +3 -3
  12. data/lib/asker/data/problem.rb +10 -2
  13. data/lib/asker/data/project_data.rb +2 -1
  14. data/lib/asker/displayer/code_displayer.rb +2 -2
  15. data/lib/asker/displayer/concept_ai_displayer.rb +5 -3
  16. data/lib/asker/displayer/concept_displayer.rb +2 -2
  17. data/lib/asker/displayer/problem_displayer.rb +14 -7
  18. data/lib/asker/displayer/stats_displayer.rb +3 -3
  19. data/lib/asker/files/language/ca/templates.yaml +1 -0
  20. data/lib/asker/files/language/du/templates.yaml +1 -0
  21. data/lib/asker/files/language/en/templates.yaml +1 -0
  22. data/lib/asker/files/language/es/templates.yaml +1 -0
  23. data/lib/asker/files/language/fr/templates.yaml +1 -0
  24. data/lib/asker/formatter/concept_string_formatter.rb +0 -1
  25. data/lib/asker/loader/content_loader.rb +10 -8
  26. data/lib/asker/loader/embedded_file/loader.rb +103 -0
  27. data/lib/asker/loader/embedded_file/type.rb +51 -0
  28. data/lib/asker/loader/file_loader.rb +2 -1
  29. data/lib/asker/loader/problem_loader.rb +2 -0
  30. data/lib/asker/logger.rb +7 -3
  31. data/lib/asker/start.rb +2 -2
  32. data/lib/asker/version.rb +1 -1
  33. metadata +8 -3
  34. data/lib/asker/loader/embedded_file.rb +0 -133
@@ -1,133 +0,0 @@
1
- require "base64"
2
- require_relative "../logger"
3
-
4
- # Methods to load embedded files defined into asker input data file
5
- # Example:
6
- # * def line with :type = :image_url used to link external file as https://..."
7
- # * def line with :type = :file used to load local file as image.png or file.txt"
8
- module EmbeddedFile
9
- ##
10
- # @param value (String)
11
- # @param localdir (String) Input file base folder
12
- # @return Hash
13
- def self.load(value, localdir)
14
- return load_image(value, localdir) if is_image? value
15
- return load_audio(value, localdir) if is_audio? value
16
- return load_video(value, localdir) if is_video? value
17
-
18
- if is_url? value
19
- Logger.error "EmbebbedFile: Unknown URL type (#{value})"
20
- exit 1
21
- end
22
-
23
- filepath = File.join(localdir, value)
24
- unless File.exist?(filepath)
25
- Logger.error "EmbeddedFile: File does not exist (#{filepath})"
26
- exit 1
27
- end
28
-
29
- # Suposse that filename is TEXT file
30
- {text: "<pre>#{File.read(filepath)}</pre>", file: :none, type: :text}
31
- end
32
-
33
- def self.is_audio?(filename)
34
- extens = [".mp3", ".ogg", ".wav"]
35
- extens.each { |ext| return true if filename.downcase.end_with?(ext) }
36
- false
37
- end
38
-
39
- def self.is_image?(filename)
40
- extens = [".jpg", ".jpeg", ".png"]
41
- extens.each { |ext| return true if filename.downcase.end_with?(ext) }
42
- false
43
- end
44
-
45
- def self.is_video?(filename)
46
- extens = [".mp4", ".ogv"]
47
- extens.each { |ext| return true if filename.downcase.end_with?(ext) }
48
- false
49
- end
50
-
51
- def self.is_url?(value)
52
- return true if value.start_with?("https://", "http://")
53
-
54
- false
55
- end
56
-
57
- def self.load_audio(value, localdir)
58
- output = {text: :error, file: :none, type: :audio}
59
-
60
- if is_url? value
61
- output[:text] = "<audio src=\"#{value}\" controls></audio>"
62
- output[:file] = :none
63
- output[:type] = :url
64
- return output
65
- end
66
-
67
- filepath = File.join(localdir, value)
68
- unless File.exist?(filepath)
69
- Logger.error "EmbebbedFile: Audio file no exists (#{filepath})"
70
- exit 1
71
- end
72
- output[:text] = '<audio controls><source src="@@PLUGINFILE@@/' + File.basename(filepath) \
73
- + '">Your browser does not support the audio tag.</audio>'
74
- output[:file] = '<file name="' + File.basename(filepath) \
75
- + '" path="/" encoding="base64">' \
76
- + Base64.strict_encode64(File.open(filepath, "rb").read) \
77
- + "</file>"
78
- output[:type] = :audio
79
- output
80
- end
81
-
82
- def self.load_image(value, localdir)
83
- output = {text: :error, file: :none, type: :image}
84
-
85
- if is_url? value
86
- output[:text] = "<img src=\"#{value}\" alt=\"image\" width=\"400\" height=\"300\">"
87
- output[:file] = :none
88
- output[:type] = :url
89
- return output
90
- end
91
-
92
- filepath = File.join(localdir, value)
93
- unless File.exist?(filepath)
94
- Logger.error "EmbeddedFile: Unknown file (#{filepath})"
95
- exit 1
96
- end
97
- output[:text] = '<img src="@@PLUGINFILE@@/' + File.basename(filepath) \
98
- + '" alt="imagen" class="img-responsive atto_image_button_text-bottom">'
99
- output[:file] = '<file name="' + File.basename(filepath) \
100
- + '" path="/" encoding="base64">' \
101
- + Base64.strict_encode64(File.open(filepath, "rb").read) \
102
- + "</file>"
103
- output[:type] = :image
104
- output
105
- end
106
-
107
- def self.load_video(value, localdir)
108
- output = {text: :error, file: :none, type: :video}
109
- if is_url? value
110
- output[:text] = "<video controls width=\"400\" height=\"300\">" \
111
- + "<source src=\"#{value}\"/></video>"
112
- output[:file] = :none
113
- output[:type] = :url
114
- return output
115
- end
116
-
117
- filepath = File.join(localdir, value)
118
- unless File.exist?(filepath)
119
- Logger.error "Unknown file (#{filepath})"
120
- exit 1
121
- end
122
- output[:text] = '<video controls><source src="@@PLUGINFILE@@/' \
123
- + File.basename(filepath) \
124
- + '"/>Your browser does not support the video tag.</video>'
125
- output[:file] = '<file name="' \
126
- + File.basename(filepath) \
127
- + '" path="/" encoding="base64">' \
128
- + Base64.strict_encode64(File.open(filepath, "rb").read) \
129
- + "</file>"
130
- output[:type] = :video
131
- output
132
- end
133
- end