anchor.diff:  
   %%% the lexer first lexes the input
   %%% make_lines does 2 passes:
  -%%% * it chops the lexed strings into lines which it represents as a list of lists
  +%%% * it chops the lexed strings into lines which it represents as a
  +%%%   list of lists
   %%% * it then types the lines into the following:
   %%% * normal lines
   %%% * reference style links
  
positive.code:                                    htmlchars(Flat);
  make_str1([{_, Orig} | T], Acc) -> make_str1(T, [Orig | Acc]).
  
  htmlchars(List) -> htmlchars(List, []).
   
  htmlchars([], Acc) -> flatten(reverse(Acc));
  %% line ends are pushed to a space..
  htmlchars([?LF | T], Acc)      -> htmlchars(T, [" " | Acc]);
  htmlchars([?CR, ?LF | T], Acc) -> htmlchars(T, [" " | Acc]);
  %% escape stars and underscores
  htmlchars([$\\, $* | T], Acc)  -> htmlchars(T, [$* | Acc]);
  htmlchars([$\\, $_ | T], Acc)  -> htmlchars(T, [$_ | Acc]);
  
negative.code: 
  unit_test_() ->
      [
       % Quick start
       ?_assert(conv("3 > 4")            == "<p>3 &gt; 4</p>"),
       % Breaking up in to lines
       ?_assert(conv("blah\nblah")       == "<p>blah\nblah</p>"),
       ?_assert(conv("blah\r\nblah")     == "<p>blah\nblah</p>"),
       ?_assert(conv("blah\r\nblah  \n") == "<p>blah\nblah</p><br />"),
       % Setext headers
       ?_assert(conv("blahblah\n====")   == "<h1>blahblah</h1>"),
       ?_assert(conv("blahblah\n-----")  == "<h2>blahblah</h2>"),
       % ATX headers
       ?_assert(conv("# blahblah")       == "<h1>blahblah</h1>"),
       ?_assert(conv("## blahblah")      == "<h2>blahblah</h2>"),
       ?_assert(conv("### blahblah")     == "<h3>blahblah</h3>"),
  