Решение на Пета задача от Александър Маринов

Обратно към всички решения

Към профила на Александър Маринов

Резултати

  • 0 точки от тестове
  • 0 бонус точки
  • 0 точки общо
  • 2 успешни тест(а)
  • 55 неуспешни тест(а)

Код

class CodeTags
attr_reader :html_source, :tags_count, :tag_hash
def initialize(html_source)
@html_source = html_source
@tags_count = 0
@tag_hash = {}
end
def place_code_tags
@html_source.gsub!(/^[\s]{4}.*\r\n/) { |match|
match = '<pre><code>' + match[4..-1] + '</code></pre>'
}
@html_source.gsub!("</code></pre><pre><code>", "")
collapse_code_tags
end
def collapse_code_tags
@html_source.gsub!(/<pre><code>.*\r\n<\/code><\/pre>/m) { |tag|
@tag_count += 1
collapse_hash_id = "$code_tag_" + tag_count.to_s
@tag_hash[collapse_hash_id] = tag.dup
tag = collapse_hash_id
}
end
end
# class LinkTags
# attr_reader :html_source, :tag_count, :tag_hash
# def initialize(html_source)
# @html_source = html_source
# @tags_count = 0
# @tag_hash = {}
# end
# def place_code_tags
# @html_source.gsub!(/\[[[:print:]]+\](\([a-z]{3,}:\/\/[a-z\.]+\.[a-z]{2,}\/?\))/)
# { |match|
# link_splitted = match.split(/[\[\]]/)
# match = "<a href=\"" + link_splitted[2].gsub(/[\(\)]/, "") +
# "\">" + link_splitted[1] + "</a>"
# }
# end
# def collapse_code_tags
# @html_source.gsub!(/<a href=\".+<\/a>/m) { |tag|
# @tag_count += 1
# collapse_hash_id = "$link_tag_" + tag_count.to_s
# @tag_hash[collapse_hash_id] = tag.dup
# tag = collapse_hash_id
# }
# end
# end
class Formatter
attr_reader :plain_text, :html_source
def initialize(plain_text)
@plain_text = plain_text
@html_source = plain_text
end
def to_html
@html_source
end
def inspect
@plain_text
end
end

Лог от изпълнението

FFF.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.F

Failures:

  1) Formatter paragraphs renders simple paragraphs
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Simple text!</p>"
            got: "Simple text!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:6:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  2) Formatter paragraphs renders multiple paragraphs
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>First line.</p>\n\n<p>Second line.</p>\n\n<p>Third line.</p>"
            got: "First line.\n\nSecond line.\n\nThird line.\n"
       
       (compared using ==)
       
       Diff:
       
       
       @@ -1,6 +1,6 @@
       -<p>First line.</p>
       +First line.
        
       -<p>Second line.</p>
       +Second line.
        
       -<p>Third line.</p>
       +Third line.
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:25:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  3) Formatter paragraphs renders multiline paragraps
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>First line.\nSecond line.\nThird line.</p>\n\n<p>Last line, of course.</p>"
            got: "First line.\nSecond line.\nThird line.\n\nLast line, of course.\n"
       
       (compared using ==)
       
       Diff:
       
       
       @@ -1,6 +1,6 @@
       -<p>First line.
       +First line.
        Second line.
       -Third line.</p>
       +Third line.
        
       -<p>Last line, of course.</p>
       +Last line, of course.
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:45:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  4) Formatter paragraphs breaks paragraphs with block-level elements
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>First line.</p>\n<h1>Header...</h1>\n<p>Third line.</p>\n\n<p>Separate line</p>"
            got: "First line.\n# Header...\nThird line.\n\nSeparate line\n"
       
       (compared using ==)
       
       Diff:
       
       @@ -1,6 +1,6 @@
       -<p>First line.</p>
       -<h1>Header...</h1>
       -<p>Third line.</p>
       +First line.
       +# Header...
       +Third line.
        
       -<p>Separate line</p>
       +Separate line
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:69:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  5) Formatter paragraphs escapes special entities
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Cats &amp; Cash</p>\n\n<p>Cool, &lt;right&gt;?</p>"
            got: "Cats & Cash\n\nCool, <right>?\n"
       
       (compared using ==)
       
       Diff:
       
       @@ -1,4 +1,4 @@
       -<p>Cats &amp; Cash</p>
       +Cats & Cash
        
       -<p>Cool, &lt;right&gt;?</p>
       +Cool, <right>?
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:85:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  6) Formatter headers renders properly with the #, ##, ### and #### syntax
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h1>This one is an H1</h1>"
            got: "# This one is an H1"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:96:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  7) Formatter headers renders tricky ones
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h3>This one is an H3 ###</h3>"
            got: "### This one is an H3 ###"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:106:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  8) Formatter headers skips the malformed ones
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>#No whitespace!</p>"
            got: "#No whitespace!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:114:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  9) Formatter headers escapes special entities
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h2>Cash &amp; &quot;Carry me away&quot;...</h2>"
            got: "## Cash & \"Carry me away\"..."
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:118:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  10) Formatter code blocks renders simple blocks
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>This one is a simple code block</code></pre>"
            got: "    This one is a simple code block"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:124:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  11) Formatter code blocks renders multiline blocks with empty lines
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>require 'gravity'\n\n# I'm flying! Just like in Python!</code></pre>"
            got: "    require 'gravity'\n    \n    # I'm flying! Just like in Python!\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,4 +1,4 @@
       -<pre><code>require 'gravity'
       -
       -# I'm flying! Just like in Python!</code></pre>
       +    require 'gravity'
       +    
       +    # I'm flying! Just like in Python!
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:140:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  12) Formatter code blocks renders multiple ones
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>First code-block</code></pre>\n\n<pre><code>Second block of code</code></pre>"
            got: "    First code-block\n\n    Second block of code\n"
       
       (compared using ==)
       
       Diff:
       
       @@ -1,4 +1,4 @@
       -<pre><code>First code-block</code></pre>
       +    First code-block
        
       -<pre><code>Second block of code</code></pre>
       +    Second block of code
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:156:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  13) Formatter code blocks escapes special entities
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>quote = &quot;Simple &amp; efficient&quot;;</code></pre>"
            got: "    quote = \"Simple & efficient\";"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:160:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  14) Formatter code blocks renders properly a longer example with tabs and Unicode
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>// \u041F\u0440\u0438\u043C\u0435\u0440 \u0437\u0430 \u0431\u043B\u043E\u043A \u0441 \u043A\u043E\u0434.\n// \u0412 \u043D\u0435\u0433\u043E \u0432\u0441\u0435\u043A\u0438 \u0440\u0435\u0434, \u0434\u043E\u0440\u0438 \u043F\u0440\u0430\u0437\u043D\u0438\u0442\u0435, \u0435 \u043F\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0430\u043D \u043E\u0442 \u0442\u043E\u0447\u043D\u043E \u0447\u0435\u0442\u0438\u0440\u0438 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u0430.\ninclude &lt;stdio.h&gt;\n\nint main(int, char**) {\n\t// Whitespace \u0441\u043B\u0435\u0434 \u0447\u0435\u0442\u0438\u0440\u0438\u0442\u0435 \u0437\u0430\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u0438 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u0430 \u0432 \u043D\u0430\u0447\u0430\u043B\u043E\u0442\u043E, \u0441\u0435 \u0437\u0430\u043F\u0430\u0437\u0432\u0430 \u0432\u0438\u043D\u0430\u0433\u0438.\n\treturn 42;\n}</code></pre>"
            got: "    // \u041F\u0440\u0438\u043C\u0435\u0440 \u0437\u0430 \u0431\u043B\u043E\u043A \u0441 \u043A\u043E\u0434.\n    // \u0412 \u043D\u0435\u0433\u043E \u0432\u0441\u0435\u043A\u0438 \u0440\u0435\u0434, \u0434\u043E\u0440\u0438 \u043F\u0440\u0430\u0437\u043D\u0438\u0442\u0435, \u0435 \u043F\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0430\u043D \u043E\u0442 \u0442\u043E\u0447\u043D\u043E \u0447\u0435\u0442\u0438\u0440\u0438 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u0430.\n    include <stdio.h>\n    \n    int main(int, char**) {\n    \t// Whitespace \u0441\u043B\u0435\u0434 \u0447\u0435\u0442\u0438\u0440\u0438\u0442\u0435 \u0437\u0430\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u0438 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u0430 \u0432 \u043D\u0430\u0447\u0430\u043B\u043E\u0442\u043E, \u0441\u0435 \u0437\u0430\u043F\u0430\u0437\u0432\u0430 \u0432\u0438\u043D\u0430\u0433\u0438.\n    \treturn 42;\n    }\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,9 +1,9 @@
       -<pre><code>// Пример за блок с код.
       -// В него всеки ред, дори празните, е предшестван от точно четири интервала.
       -include &lt;stdio.h&gt;
       -
       -int main(int, char**) {
       -	// Whitespace след четирите задължителни интервала в началото, се запазва винаги.
       -	return 42;
       -}</code></pre>
       +    // Пример за блок с код.
       +    // В него всеки ред, дори празните, е предшестван от точно четири интервала.
       +    include <stdio.h>
       +    
       +    int main(int, char**) {
       +    	// Whitespace след четирите задължителни интервала в началото, се запазва винаги.
       +    	return 42;
       +    }
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:186:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  15) Formatter code blocks renders properly with mixed content
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h1>This is a header</h1>\n\n<p>Some parahraphs here</p>\n\n<pre><code>Some clean code\nWhich is also beautiful\nAnd maybe also compiles!</code></pre>\n\n<p>More paragraphs there?</p>"
            got: "# This is a header\n\nSome parahraphs here\n\n    Some clean code\n    Which is also beautiful\n    And maybe also compiles!\n\nMore paragraphs there?\n"
       
       (compared using ==)
       
       Diff:
       
       
       
       @@ -1,10 +1,10 @@
       -<h1>This is a header</h1>
       +# This is a header
        
       -<p>Some parahraphs here</p>
       +Some parahraphs here
        
       -<pre><code>Some clean code
       -Which is also beautiful
       -And maybe also compiles!</code></pre>
       +    Some clean code
       +    Which is also beautiful
       +    And maybe also compiles!
        
       -<p>More paragraphs there?</p>
       +More paragraphs there?
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:214:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  16) Formatter blockquotes renders simple ones
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<blockquote><p>Simple quote</p></blockquote>"
            got: "> Simple quote"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:220:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  17) Formatter blockquotes renders multiline ones
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<blockquote><p>First line.\nSecond line.\nThird line.</p></blockquote>"
            got: "> First line.\n> Second line.\n> Third line.\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,4 +1,4 @@
       -<blockquote><p>First line.
       -Second line.
       -Third line.</p></blockquote>
       +> First line.
       +> Second line.
       +> Third line.
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:236:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  18) Formatter blockquotes renders multiple ones
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<blockquote><p>First quote.</p></blockquote>\n\n<blockquote><p>Second quote.</p></blockquote>"
            got: "> First quote.\n\n> Second quote.\n"
       
       (compared using ==)
       
       Diff:
       
       @@ -1,4 +1,4 @@
       -<blockquote><p>First quote.</p></blockquote>
       +> First quote.
        
       -<blockquote><p>Second quote.</p></blockquote>
       +> Second quote.
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:252:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  19) Formatter blockquotes renders multiline ones with multiple paragraphs
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<blockquote><p>First quote.</p>\n\n<p>Second quote.</p></blockquote>"
            got: "> First quote.\n> \n> Second quote.\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,4 +1,4 @@
       -<blockquote><p>First quote.</p>
       -
       -<p>Second quote.</p></blockquote>
       +> First quote.
       +> 
       +> Second quote.
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:268:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  20) Formatter blockquotes escapes special entities
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<blockquote><p>Cuttin &amp; Pastin, w/o Quotin (&quot;)</p></blockquote>"
            got: "> Cuttin & Pastin, w/o Quotin (\")"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:272:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  21) Formatter links renders simple links
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p><a href=\"http://fmi.ruby.bg/\">Programming in Ruby</a></p>"
            got: "[Programming in Ruby](http://fmi.ruby.bg/)"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:278:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  22) Formatter links renders properly Unicode ones
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>\u0412\u044A\u043F\u0440\u043E\u0441? <a href=\"http://google.com/\">\u0418\u043C\u0430 Google</a> \u0437\u0430 \u0442\u0430\u0437\u0438 \u0446\u0435\u043B.</p>"
            got: "\u0412\u044A\u043F\u0440\u043E\u0441? [\u0418\u043C\u0430 Google](http://google.com/) \u0437\u0430 \u0442\u0430\u0437\u0438 \u0446\u0435\u043B."
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:282:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  23) Formatter links allows multiple links on a single line
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>We have <a href=\"some-url\">a first</a> and <a href=\"another-url\">Second</a>.</p>"
            got: "We have [a first](some-url) and [Second](another-url)."
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:286:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  24) Formatter links does not render multiline or broken links
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>This one is [clearly] (broken)!</p>"
            got: "This one is [clearly] (broken)!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:295:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  25) Formatter links does not render them in code blocks
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>This one [is a link](in-a-code-block) - keep as-is.</code></pre>"
            got: "    This one [is a link](in-a-code-block) - keep as-is."
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:299:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  26) Formatter links escapes special entities in the link description
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Also testing <a href=\"here\">special &amp; &quot;entities&quot; &lt;b&gt;</a>.</p>"
            got: "Also testing [special & \"entities\" <b>](here)."
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:304:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  27) Formatter links escapes special entities in the link URL
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Or <a href=\"special &amp; &quot;entities&quot; &lt;b&gt;\">what if</a> are in the URL, eh?</p>"
            got: "Or [what if](special & \"entities\" <b>) are in the URL, eh?"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:309:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  28) Formatter lists renders simple unordered lists
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<ul>\n  <li>\u0415\u0434\u043D\u043E.</li>\n  <li>\u0414\u0440\u0443\u0433\u043E.</li>\n  <li>\u0422\u0440\u0435\u0442\u043E...</li>\n</ul>"
            got: "* \u0415\u0434\u043D\u043E.\n* \u0414\u0440\u0443\u0433\u043E.\n* \u0422\u0440\u0435\u0442\u043E...\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,6 +1,4 @@
       -<ul>
       -  <li>Едно.</li>
       -  <li>Друго.</li>
       -  <li>Трето...</li>
       -</ul>
       +* Едно.
       +* Друго.
       +* Трето...
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:330:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  29) Formatter lists renders simple ordered lists
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<ol>\n  <li>\u041F\u044A\u0440\u0432\u043E.</li>\n  <li>\u0412\u0442\u043E\u0440\u043E.</li>\n  <li>\u0422\u0440\u0435\u0442\u043E...</li>\n</ol>"
            got: "1. \u041F\u044A\u0440\u0432\u043E.\n2. \u0412\u0442\u043E\u0440\u043E.\n3. \u0422\u0440\u0435\u0442\u043E...\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,6 +1,4 @@
       -<ol>
       -  <li>Първо.</li>
       -  <li>Второ.</li>
       -  <li>Трето...</li>
       -</ol>
       +1. Първо.
       +2. Второ.
       +3. Трето...
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:348:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  30) Formatter lists renders lists with a single item
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<ul>\n  <li>Single item.</li>\n</ul>"
            got: "* Single item.\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,4 +1,2 @@
       -<ul>
       -  <li>Single item.</li>
       -</ul>
       +* Single item.
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:362:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  31) Formatter lists does not choke on malformed lists
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>1) \u041F\u044A\u0440\u0432\u043E.\n2 \u0412\u0442\u043E\u0440\u043E.\n3.\u0422\u0440\u0435\u0442\u043E</p>\n<ol>\n  <li>\u0427\u0435\u0442\u0432\u044A\u0440\u0442\u043E</li>\n</ol>"
            got: "1) \u041F\u044A\u0440\u0432\u043E.\n2 \u0412\u0442\u043E\u0440\u043E.\n3.\u0422\u0440\u0435\u0442\u043E\n4. \u0427\u0435\u0442\u0432\u044A\u0440\u0442\u043E\n"
       
       (compared using ==)
       
       Diff:
       
       @@ -1,7 +1,5 @@
       -<p>1) Първо.
       +1) Първо.
        2 Второ.
       -3.Трето</p>
       -<ol>
       -  <li>Четвърто</li>
       -</ol>
       +3.Трето
       +4. Четвърто
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:394:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  32) Formatter lists escapes special entities in the list elements
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<ul>\n  <li>The &amp;&amp; and || are logical operators</li>\n  <li>The `&quot;` symbol</li>\n</ul>"
            got: "* The && and || are logical operators\n* The `\"` symbol\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,5 +1,3 @@
       -<ul>
       -  <li>The &amp;&amp; and || are logical operators</li>
       -  <li>The `&quot;` symbol</li>
       -</ul>
       +* The && and || are logical operators
       +* The `"` symbol
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:410:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  33) Formatter lists allows links in list elements
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<ul>\n  <li>A <a href=\" here \">simple link</a> or there?</li>\n</ul>"
            got: "* A [simple link]( here ) or there?\n"
       
       (compared using ==)
       
       Diff:
       @@ -1,4 +1,2 @@
       -<ul>
       -  <li>A <a href=" here ">simple link</a> or there?</li>
       -</ul>
       +* A [simple link]( here ) or there?
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:424:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  34) Formatter bold and italic text rendering works in paragraphs
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p><em>Simplest</em> case</p>"
            got: "_Simplest_ case"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:434:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  35) Formatter bold and italic text rendering allows multiple ones per line
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Some <em>more words here</em> <em>to be</em> <strong>emphasized</strong>, okay?</p>"
            got: "Some _more words here_ _to be_ **emphasized**, okay?"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:438:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  36) Formatter bold and italic text rendering works in headers
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h1><em>Simplest</em> case</h1>"
            got: "# _Simplest_ case"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:447:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  37) Formatter bold and italic text rendering works in blockquotes
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<blockquote><p><em>Simplest</em> case</p></blockquote>"
            got: "> _Simplest_ case"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:455:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  38) Formatter bold and italic text rendering does not render in code blocks
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>Some _more words_ _to be_ **emphasized**?</code></pre>"
            got: "    Some _more words_ _to be_ **emphasized**?"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:459:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  39) Formatter bold and italic text rendering works in links
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Some <a href=\"okay\"><em>more words here</em> <em>to be</em> <strong>emphasized</strong></a>?</p>"
            got: "Some [_more words here_ _to be_ **emphasized**](okay)?"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:464:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  40) Formatter bold and italic text rendering works in list elements
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<ul>\n  <li>Some <em>more words</em> <em>to be</em> <strong>emphasized</strong></li>\n</ul>"
            got: "* Some _more words_ _to be_ **emphasized**"
       
       (compared using ==)
       
       Diff:
       @@ -1,4 +1,2 @@
       -<ul>
       -  <li>Some <em>more words</em> <em>to be</em> <strong>emphasized</strong></li>
       -</ul>
       +* Some _more words_ _to be_ **emphasized**
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:476:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  41) Formatter bold and italic text rendering works in links in list elements
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<ul>\n  <li>Some <a href=\"okay\"><em>more words</em> <em>to be</em> <strong>emphasized</strong></a>!</li>\n</ul>"
            got: "* Some [_more words_ _to be_ **emphasized**](okay)!"
       
       (compared using ==)
       
       Diff:
       @@ -1,4 +1,2 @@
       -<ul>
       -  <li>Some <a href="okay"><em>more words</em> <em>to be</em> <strong>emphasized</strong></a>!</li>
       -</ul>
       +* Some [_more words_ _to be_ **emphasized**](okay)!
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:487:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  42) Formatter bold and italic text rendering does not brake HTML entities inside it
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Some <em>more &amp; words</em> <em>to be</em> <strong>&quot;emphasized&quot;</strong>!</p>"
            got: "Some _more & words_ _to be_ **\"emphasized\"**!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:491:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  43) Formatter bold and italic text rendering does not allow parial overlapping
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Some <em>more words **to be</em> emphasized**!</p>"
            got: "Some _more words **to be_ emphasized**!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:496:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  44) Formatter bold and italic text rendering allows simple nesting
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Some <em>more words <strong>to be</strong> emphasized</em>!</p>"
            got: "Some _more words **to be** emphasized_!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:501:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  45) Formatter special entities escapes them in paragraphs
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>&quot;Black &amp; Decker&quot;!</p>"
            got: "\"Black & Decker\"!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:512:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  46) Formatter special entities escapes them in headers
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h2>&quot;Black &amp; Decker&quot;!</h2>"
            got: "## \"Black & Decker\"!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:518:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  47) Formatter special entities escapes them in code blocks
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>brand = &quot;Black &amp; Decker&quot;!</code></pre>"
            got: "    brand = \"Black & Decker\"!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:524:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  48) Formatter special entities escapes them in blockquotes
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<blockquote><p>&quot;Black &amp; Decker&quot;!</p></blockquote>"
            got: "> \"Black & Decker\"!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:530:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  49) Formatter special entities escapes them in deeply-nested elements
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h2><em>&quot;Black &amp; Decker&quot;</em>!</h2>"
            got: "## _\"Black & Decker\"_!"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:536:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  50) Formatter whitespace removes excess leading and trailing whitespace
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>Some txt</p>"
            got: "\n\nSome txt"
       
       (compared using ==)
       
       Diff:
       @@ -1,2 +1,4 @@
       -<p>Some txt</p>
       +
       +
       +Some txt
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:547:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  51) Formatter whitespace ignores leading and trailing whitespace of lines whenever possible
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<p>A line here</p>"
            got: "   A line here   "
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:555:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  52) Formatter whitespace does not touch trailing whitespace in code blocks
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<pre><code>Simple code blk  </code></pre>"
            got: "    Simple code blk  "
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:665:in `block in expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `each'
     # /tmp/d20111129-16859-brr073/spec.rb:664:in `expect_transformations'
     # /tmp/d20111129-16859-brr073/spec.rb:563:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  53) Formatter public interface implements #to_html
     Failure/Error: Formatter.new('simple').to_html.should eq '<p>simple</p>'
       
       expected: "<p>simple</p>"
            got: "simple"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:570:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  54) Formatter public interface implements #to_s
     Failure/Error: Formatter.new('Plain').to_s.should eq '<p>Plain</p>'
       
       expected: "<p>Plain</p>"
            got: "#<Formatter:0x9a11950>"
       
       (compared using ==)
     # /tmp/d20111129-16859-brr073/spec.rb:575:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  55) Formatter mixed, complex input renders properly
     Failure/Error: Formatter.new(plain).to_html.should eq formatted.strip
       
       expected: "<h1>\u0426\u044F\u043B\u043E\u0441\u0442\u0435\u043D \u043F\u0440\u0438\u043C\u0435\u0440</h1>\n<p>\u0422\u0443\u043A \u0449\u0435 \u0434\u0435\u043C\u043E\u043D\u0441\u0442\u0440\u0438\u0440\u0430\u043C\u0435 \u043D\u0430\u043A\u0440\u0430\u0442\u043A\u043E \u0432\u044A\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438\u0442\u0435 \u043D\u0430 \u043D\u0430\u0448\u0438\u044F \u043F\u0440\u043E\u0441\u0442 Markdown-\u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u0443\u0432\u0430\u0442\u0435\u043B.</p>\n\n<h2><em>\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F</em> \u043D\u0430 <a href=\"http://daringfireball.net/projects/markdown/syntax#philosophy\">Markdown</a></h2>\n\n<p>\u041A\u0440\u0430\u0442\u044A\u043A \u0446\u0438\u0442\u0430\u0442 \u043E\u0442\u043D\u043E\u0441\u043D\u043E \u0444\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F\u0442\u0430 \u043D\u0430 Markdown:</p>\n<blockquote><p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>\n\n<p>Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it\u2019s been marked up with tags or formatting instructions.</p></blockquote>\n<p>\u041F\u043E\u0432\u0435\u0447\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043C\u043E\u0436\u0435 \u0434\u0430 \u043D\u0430\u043C\u0435\u0440\u0438\u0442\u0435 \u043D\u0430 <a href=\"http://daringfireball.net/projects/markdown\">\u0441\u0430\u0439\u0442\u0430 \u043D\u0430 <strong>Markdown</strong></a>.</p>\n\n<h2>\u041F\u0440\u0435\u0434\u0438\u043C\u0441\u0442\u0432\u0430</h2>\n\n<p>\u0421\u044A\u0437\u0434\u0430\u0432\u0430\u043D\u0435\u0442\u043E \u043D\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435 \u0432\u044A\u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0430 Markdown \u0438\u043C\u0430 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u0434\u0438\u043C\u0441\u0442\u0432\u0430.</p>\n\n<p>\u0415\u0442\u043E \u043D\u044F\u043A\u043E\u0438 \u043E\u0442 \u0442\u044F\u0445:</p>\n<ul>\n  <li>\u041B\u0435\u0441\u043D\u043E \u0447\u0435\u0442\u0438\u043C \u0432 <em>\u0441\u0443\u0440\u043E\u0432</em> \u0432\u0438\u0434</li>\n  <li>\u0411\u0435\u0437 &quot;\u0441\u043A\u0440\u0438\u0442\u0438&quot; \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u0430\u0449\u0438 \u0442\u0430\u0433\u043E\u0432\u0435 \u2014 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u0430\u043D\u0435\u0442\u043E \u0432\u0438 \u043D\u0438\u043A\u043E\u0433\u0430 \u043D\u0435 \u0441\u0435 \u0447\u0443\u043F\u0438</li>\n  <li>\u0421\u043B\u0435\u0434 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043C\u043E\u0436\u0435 \u0434\u0430 \u0438\u0437\u0433\u043B\u0435\u0436\u0434\u0430 \u043C\u043D\u043E\u0433\u043E \u0434\u043E\u0431\u0440\u0435</li>\n</ul>\n\n<h2>\u041F\u043E\u0434\u0434\u0440\u044A\u0436\u043A\u0430 \u0432 <em>Ruby</em></h2>\n\n<p>\u0412 <strong>Ruby</strong> \u0438\u043C\u0430 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E Gem-\u043E\u0432\u0435, \u043A\u043E\u0438\u0442\u043E \u043C\u043E\u0433\u0430\u0442 \u0434\u0430 \u0432\u0438 \u043F\u043E\u043C\u043E\u0433\u043D\u0430\u0442 \u0437\u0430 \u0434\u0430 \u043F\u0440\u0435\u0445\u0432\u044A\u0440\u043B\u044F\u0442\u0435 Markdown-\u0441\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435 \u0432 HTML-\u0444\u043E\u0440\u043C\u0430\u0442.\n\u041A\u043E\u0434\u044A\u0442, \u043A\u043E\u0439\u0442\u043E \u0432\u0438\u0435 \u0441\u044A\u0437\u0434\u0430\u0432\u0430\u0442\u0435, \u0441\u044A\u0449\u043E \u043C\u043E\u0436\u0435 \u0434\u0430 \u0432\u044A\u0440\u0448\u0438 \u0442\u043E\u0432\u0430 \u0434\u043E \u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430 \u0441\u0442\u0435\u043F\u0435\u043D.</p>\n\n<p>\u041F\u0440\u0438\u043C\u0435\u0440 \u0437\u0430 \u0443\u043F\u043E\u0442\u0440\u0435\u0431\u0430 \u043D\u0430 \u0432\u0430\u0448\u0438\u044F \u043A\u043E\u0434:</p>\n\n<pre><code># \u041C\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0441\u0442\u043E\nformatter = Formatter.new &quot;## My Markdown&quot;\nputs formatter.to_html</code></pre>"
            got: "# \u0426\u044F\u043B\u043E\u0441\u0442\u0435\u043D \u043F\u0440\u0438\u043C\u0435\u0440\n\u0422\u0443\u043A \u0449\u0435 \u0434\u0435\u043C\u043E\u043D\u0441\u0442\u0440\u0438\u0440\u0430\u043C\u0435 \u043D\u0430\u043A\u0440\u0430\u0442\u043A\u043E \u0432\u044A\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438\u0442\u0435 \u043D\u0430 \u043D\u0430\u0448\u0438\u044F \u043F\u0440\u043E\u0441\u0442 Markdown-\u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u0443\u0432\u0430\u0442\u0435\u043B.\n\n## _\u0424\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F_ \u043D\u0430 [Markdown](http://daringfireball.net/projects/markdown/syntax#philosophy)\n\n\u041A\u0440\u0430\u0442\u044A\u043A \u0446\u0438\u0442\u0430\u0442 \u043E\u0442\u043D\u043E\u0441\u043D\u043E \u0444\u0438\u043B\u043E\u0441\u043E\u0444\u0438\u044F\u0442\u0430 \u043D\u0430 Markdown:\n> Markdown is intended to be as easy-to-read and easy-to-write as is feasible.\n> \n> Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it\u2019s been marked up with tags or formatting instructions.\n\u041F\u043E\u0432\u0435\u0447\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043C\u043E\u0436\u0435 \u0434\u0430 \u043D\u0430\u043C\u0435\u0440\u0438\u0442\u0435 \u043D\u0430 [\u0441\u0430\u0439\u0442\u0430 \u043D\u0430 **Markdown**](http://daringfireball.net/projects/markdown).\n\n## \u041F\u0440\u0435\u0434\u0438\u043C\u0441\u0442\u0432\u0430\n\n\u0421\u044A\u0437\u0434\u0430\u0432\u0430\u043D\u0435\u0442\u043E \u043D\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435 \u0432\u044A\u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0430 Markdown \u0438\u043C\u0430 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u0434\u0438\u043C\u0441\u0442\u0432\u0430.\n\n\u0415\u0442\u043E \u043D\u044F\u043A\u043E\u0438 \u043E\u0442 \u0442\u044F\u0445:\n* \u041B\u0435\u0441\u043D\u043E \u0447\u0435\u0442\u0438\u043C \u0432 _\u0441\u0443\u0440\u043E\u0432_ \u0432\u0438\u0434\n* \u0411\u0435\u0437 \"\u0441\u043A\u0440\u0438\u0442\u0438\" \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u0430\u0449\u0438 \u0442\u0430\u0433\u043E\u0432\u0435 \u2014 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u0430\u043D\u0435\u0442\u043E \u0432\u0438 \u043D\u0438\u043A\u043E\u0433\u0430 \u043D\u0435 \u0441\u0435 \u0447\u0443\u043F\u0438\n* \u0421\u043B\u0435\u0434 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043C\u043E\u0436\u0435 \u0434\u0430 \u0438\u0437\u0433\u043B\u0435\u0436\u0434\u0430 \u043C\u043D\u043E\u0433\u043E \u0434\u043E\u0431\u0440\u0435\n\n## \u041F\u043E\u0434\u0434\u0440\u044A\u0436\u043A\u0430 \u0432 _Ruby_\n\n\u0412 **Ruby** \u0438\u043C\u0430 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E Gem-\u043E\u0432\u0435, \u043A\u043E\u0438\u0442\u043E \u043C\u043E\u0433\u0430\u0442 \u0434\u0430 \u0432\u0438 \u043F\u043E\u043C\u043E\u0433\u043D\u0430\u0442 \u0437\u0430 \u0434\u0430 \u043F\u0440\u0435\u0445\u0432\u044A\u0440\u043B\u044F\u0442\u0435 Markdown-\u0441\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435 \u0432 HTML-\u0444\u043E\u0440\u043C\u0430\u0442.\n\u041A\u043E\u0434\u044A\u0442, \u043A\u043E\u0439\u0442\u043E \u0432\u0438\u0435 \u0441\u044A\u0437\u0434\u0430\u0432\u0430\u0442\u0435, \u0441\u044A\u0449\u043E \u043C\u043E\u0436\u0435 \u0434\u0430 \u0432\u044A\u0440\u0448\u0438 \u0442\u043E\u0432\u0430 \u0434\u043E \u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430 \u0441\u0442\u0435\u043F\u0435\u043D.\n\n\u041F\u0440\u0438\u043C\u0435\u0440 \u0437\u0430 \u0443\u043F\u043E\u0442\u0440\u0435\u0431\u0430 \u043D\u0430 \u0432\u0430\u0448\u0438\u044F \u043A\u043E\u0434:\n\n    # \u041C\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0441\u0442\u043E\n    formatter = Formatter.new \"## My Markdown\"\n    puts formatter.to_html\n"
       
       (compared using ==)
       
       Diff:
       
       
       
       
       
       
       
       
       
       @@ -1,33 +1,31 @@
       -<h1>Цялостен пример</h1>
       -<p>Тук ще демонстрираме накратко възможностите на нашия прост Markdown-преобразувател.</p>
       +# Цялостен пример
       +Тук ще демонстрираме накратко възможностите на нашия прост Markdown-преобразувател.
        
       -<h2><em>Философия</em> на <a href="http://daringfireball.net/projects/markdown/syntax#philosophy">Markdown</a></h2>
       +## _Философия_ на [Markdown](http://daringfireball.net/projects/markdown/syntax#philosophy)
        
       -<p>Кратък цитат относно философията на Markdown:</p>
       -<blockquote><p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
       +Кратък цитат относно философията на Markdown:
       +> Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
       +> 
       +> Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.
       +Повече информация може да намерите на [сайта на **Markdown**](http://daringfireball.net/projects/markdown).
        
       -<p>Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.</p></blockquote>
       -<p>Повече информация може да намерите на <a href="http://daringfireball.net/projects/markdown">сайта на <strong>Markdown</strong></a>.</p>
       +## Предимства
        
       -<h2>Предимства</h2>
       +Създаването на съдържание във формата Markdown има множество предимства.
        
       -<p>Създаването на съдържание във формата Markdown има множество предимства.</p>
       +Ето някои от тях:
       +* Лесно четим в _суров_ вид
       +* Без "скрити" форматиращи тагове — форматирането ви никога не се чупи
       +* След обработка може да изглежда много добре
        
       -<p>Ето някои от тях:</p>
       -<ul>
       -  <li>Лесно четим в <em>суров</em> вид</li>
       -  <li>Без &quot;скрити&quot; форматиращи тагове — форматирането ви никога не се чупи</li>
       -  <li>След обработка може да изглежда много добре</li>
       -</ul>
       +## Поддръжка в _Ruby_
        
       -<h2>Поддръжка в <em>Ruby</em></h2>
       +В **Ruby** има множество Gem-ове, които могат да ви помогнат за да прехвърляте Markdown-съдържание в HTML-формат.
       +Кодът, който вие създавате, също може да върши това до известна степен.
        
       -<p>В <strong>Ruby</strong> има множество Gem-ове, които могат да ви помогнат за да прехвърляте Markdown-съдържание в HTML-формат.
       -Кодът, който вие създавате, също може да върши това до известна степен.</p>
       +Пример за употреба на вашия код:
        
       -<p>Пример за употреба на вашия код:</p>
       -
       -<pre><code># Много просто
       -formatter = Formatter.new &quot;## My Markdown&quot;
       -puts formatter.to_html</code></pre>
       +    # Много просто
       +    formatter = Formatter.new "## My Markdown"
       +    puts formatter.to_html
     # /tmp/d20111129-16859-brr073/spec.rb:660:in `expect_transformation'
     # /tmp/d20111129-16859-brr073/spec.rb:655:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.61716 seconds
57 examples, 55 failures

Failed examples:

rspec /tmp/d20111129-16859-brr073/spec.rb:5 # Formatter paragraphs renders simple paragraphs
rspec /tmp/d20111129-16859-brr073/spec.rb:9 # Formatter paragraphs renders multiple paragraphs
rspec /tmp/d20111129-16859-brr073/spec.rb:28 # Formatter paragraphs renders multiline paragraps
rspec /tmp/d20111129-16859-brr073/spec.rb:52 # Formatter paragraphs breaks paragraphs with block-level elements
rspec /tmp/d20111129-16859-brr073/spec.rb:72 # Formatter paragraphs escapes special entities
rspec /tmp/d20111129-16859-brr073/spec.rb:90 # Formatter headers renders properly with the #, ##, ### and #### syntax
rspec /tmp/d20111129-16859-brr073/spec.rb:99 # Formatter headers renders tricky ones
rspec /tmp/d20111129-16859-brr073/spec.rb:109 # Formatter headers skips the malformed ones
rspec /tmp/d20111129-16859-brr073/spec.rb:117 # Formatter headers escapes special entities
rspec /tmp/d20111129-16859-brr073/spec.rb:123 # Formatter code blocks renders simple blocks
rspec /tmp/d20111129-16859-brr073/spec.rb:127 # Formatter code blocks renders multiline blocks with empty lines
rspec /tmp/d20111129-16859-brr073/spec.rb:143 # Formatter code blocks renders multiple ones
rspec /tmp/d20111129-16859-brr073/spec.rb:159 # Formatter code blocks escapes special entities
rspec /tmp/d20111129-16859-brr073/spec.rb:163 # Formatter code blocks renders properly a longer example with tabs and Unicode
rspec /tmp/d20111129-16859-brr073/spec.rb:189 # Formatter code blocks renders properly with mixed content
rspec /tmp/d20111129-16859-brr073/spec.rb:219 # Formatter blockquotes renders simple ones
rspec /tmp/d20111129-16859-brr073/spec.rb:223 # Formatter blockquotes renders multiline ones
rspec /tmp/d20111129-16859-brr073/spec.rb:239 # Formatter blockquotes renders multiple ones
rspec /tmp/d20111129-16859-brr073/spec.rb:255 # Formatter blockquotes renders multiline ones with multiple paragraphs
rspec /tmp/d20111129-16859-brr073/spec.rb:271 # Formatter blockquotes escapes special entities
rspec /tmp/d20111129-16859-brr073/spec.rb:277 # Formatter links renders simple links
rspec /tmp/d20111129-16859-brr073/spec.rb:281 # Formatter links renders properly Unicode ones
rspec /tmp/d20111129-16859-brr073/spec.rb:285 # Formatter links allows multiple links on a single line
rspec /tmp/d20111129-16859-brr073/spec.rb:290 # Formatter links does not render multiline or broken links
rspec /tmp/d20111129-16859-brr073/spec.rb:298 # Formatter links does not render them in code blocks
rspec /tmp/d20111129-16859-brr073/spec.rb:303 # Formatter links escapes special entities in the link description
rspec /tmp/d20111129-16859-brr073/spec.rb:308 # Formatter links escapes special entities in the link URL
rspec /tmp/d20111129-16859-brr073/spec.rb:315 # Formatter lists renders simple unordered lists
rspec /tmp/d20111129-16859-brr073/spec.rb:333 # Formatter lists renders simple ordered lists
rspec /tmp/d20111129-16859-brr073/spec.rb:351 # Formatter lists renders lists with a single item
rspec /tmp/d20111129-16859-brr073/spec.rb:377 # Formatter lists does not choke on malformed lists
rspec /tmp/d20111129-16859-brr073/spec.rb:397 # Formatter lists escapes special entities in the list elements
rspec /tmp/d20111129-16859-brr073/spec.rb:413 # Formatter lists allows links in list elements
rspec /tmp/d20111129-16859-brr073/spec.rb:429 # Formatter bold and italic text rendering works in paragraphs
rspec /tmp/d20111129-16859-brr073/spec.rb:437 # Formatter bold and italic text rendering allows multiple ones per line
rspec /tmp/d20111129-16859-brr073/spec.rb:442 # Formatter bold and italic text rendering works in headers
rspec /tmp/d20111129-16859-brr073/spec.rb:450 # Formatter bold and italic text rendering works in blockquotes
rspec /tmp/d20111129-16859-brr073/spec.rb:458 # Formatter bold and italic text rendering does not render in code blocks
rspec /tmp/d20111129-16859-brr073/spec.rb:463 # Formatter bold and italic text rendering works in links
rspec /tmp/d20111129-16859-brr073/spec.rb:468 # Formatter bold and italic text rendering works in list elements
rspec /tmp/d20111129-16859-brr073/spec.rb:479 # Formatter bold and italic text rendering works in links in list elements
rspec /tmp/d20111129-16859-brr073/spec.rb:490 # Formatter bold and italic text rendering does not brake HTML entities inside it
rspec /tmp/d20111129-16859-brr073/spec.rb:495 # Formatter bold and italic text rendering does not allow parial overlapping
rspec /tmp/d20111129-16859-brr073/spec.rb:500 # Formatter bold and italic text rendering allows simple nesting
rspec /tmp/d20111129-16859-brr073/spec.rb:509 # Formatter special entities escapes them in paragraphs
rspec /tmp/d20111129-16859-brr073/spec.rb:515 # Formatter special entities escapes them in headers
rspec /tmp/d20111129-16859-brr073/spec.rb:521 # Formatter special entities escapes them in code blocks
rspec /tmp/d20111129-16859-brr073/spec.rb:527 # Formatter special entities escapes them in blockquotes
rspec /tmp/d20111129-16859-brr073/spec.rb:533 # Formatter special entities escapes them in deeply-nested elements
rspec /tmp/d20111129-16859-brr073/spec.rb:541 # Formatter whitespace removes excess leading and trailing whitespace
rspec /tmp/d20111129-16859-brr073/spec.rb:550 # Formatter whitespace ignores leading and trailing whitespace of lines whenever possible
rspec /tmp/d20111129-16859-brr073/spec.rb:558 # Formatter whitespace does not touch trailing whitespace in code blocks
rspec /tmp/d20111129-16859-brr073/spec.rb:568 # Formatter public interface implements #to_html
rspec /tmp/d20111129-16859-brr073/spec.rb:573 # Formatter public interface implements #to_s
rspec /tmp/d20111129-16859-brr073/spec.rb:586 # Formatter mixed, complex input renders properly

История (1 версия и 0 коментара)

Александър обнови решението на 23.11.2011 22:48 (преди почти 13 години)

+class CodeTags
+ attr_reader :html_source, :tags_count, :tag_hash
+
+ def initialize(html_source)
+ @html_source = html_source
+ @tags_count = 0
+ @tag_hash = {}
+ end
+
+ def place_code_tags
+ @html_source.gsub!(/^[\s]{4}.*\r\n/) { |match|
+ match = '<pre><code>' + match[4..-1] + '</code></pre>'
+ }
+ @html_source.gsub!("</code></pre><pre><code>", "")
+ collapse_code_tags
+ end
+
+ def collapse_code_tags
+ @html_source.gsub!(/<pre><code>.*\r\n<\/code><\/pre>/m) { |tag|
+ @tag_count += 1
+ collapse_hash_id = "$code_tag_" + tag_count.to_s
+ @tag_hash[collapse_hash_id] = tag.dup
+ tag = collapse_hash_id
+ }
+ end
+
+end
+
+# class LinkTags
+ # attr_reader :html_source, :tag_count, :tag_hash
+
+ # def initialize(html_source)
+ # @html_source = html_source
+ # @tags_count = 0
+ # @tag_hash = {}
+ # end
+
+ # def place_code_tags
+ # @html_source.gsub!(/\[[[:print:]]+\](\([a-z]{3,}:\/\/[a-z\.]+\.[a-z]{2,}\/?\))/)
+ # { |match|
+ # link_splitted = match.split(/[\[\]]/)
+ # match = "<a href=\"" + link_splitted[2].gsub(/[\(\)]/, "") +
+ # "\">" + link_splitted[1] + "</a>"
+ # }
+ # end
+
+ # def collapse_code_tags
+ # @html_source.gsub!(/<a href=\".+<\/a>/m) { |tag|
+ # @tag_count += 1
+ # collapse_hash_id = "$link_tag_" + tag_count.to_s
+ # @tag_hash[collapse_hash_id] = tag.dup
+ # tag = collapse_hash_id
+ # }
+ # end
+
+# end
+class Formatter
+
+ attr_reader :plain_text, :html_source
+
+ def initialize(plain_text)
+ @plain_text = plain_text
+ @html_source = plain_text
+ end
+
+ def to_html
+ @html_source
+ end
+
+ def inspect
+ @plain_text
+ end
+
+end