Module: QuestionGiftFormatter
- Defined in:
- lib/asker/formatter/question_gift_formatter.rb
Overview
Transform Questions into Gift format
Class Method Summary collapse
-
.sanitize(input = '') ⇒ Object
Sanitize gift text.
-
.to_s(question) ⇒ Object
Convert question object into gift formatted string.
Class Method Details
.sanitize(input = '') ⇒ Object
Sanitize gift text
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/asker/formatter/question_gift_formatter.rb', line 65 def self.sanitize(input = '') output = input.dup output.gsub!('#', '\#') output.gsub!("\n", " ") output.gsub!(':', '\:') output.gsub!('=', '\=') output.gsub!("\{", "\\{") output.gsub!("\}", "\\}") output end |
.to_s(question) ⇒ Object
Convert question object into gift formatted string
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/asker/formatter/question_gift_formatter.rb', line 9 def self.to_s(question) s = '' return s unless question.encode == :none # Return question using gift format cond = question.comment.nil? || question.comment.empty? s = "// #{question.comment}\n" unless cond s << "::#{question.name}::[html]#{sanitize(question.text)}\n" case question.type when :choice s += "{\n" a = [" =#{sanitize(question.good)}\n"] penalties = ['', '%-50%', '%-33.33333%', '%-25%', '%-20%'] penalty = penalties[question.bads.size] question.bads.each { |i| a << (" ~#{penalty}" + sanitize(i) + "\n") } a.shuffle! if question.shuffle? a.each do |i| text = i text = i[0, 220] + '...(ERROR: text too long)' if text.size > 255 s << text end s += " #####{sanitize(question.feedback.to_s)}\n" if question.feedback s += "}\n\n" when :boolean s << "{#{question.good}#####{sanitize(question.feedback.to_s)}}\n\n" when :match s << "{\n" a = [] question.matching.each do |i, j| i = i[0, 220] + '...(ERROR: text too long)' if i.size > 255 j = j[0, 220] + '...(ERROR: text too long)' if j.size > 255 a << " =#{sanitize(i)} -> #{sanitize(j)}\n" end a.shuffle! if question.shuffle? a.each { |i| s << i } s << "}\n\n" when :short s << "{\n" question.shorts.uniq! question.shorts.each do |i| text = i text = i[0, 220] + '...(ERROR: too long)' if text.size > 255 s << " =%100%#{text}#\n" end s << " #####{sanitize(question.feedback.to_s)}\n" if question.feedback s << "}\n\n" end s end |