anchor.diff:       ?_assert(conv("+ blah")           == "<ul><li>blah</li></ul>"),
        ?_assert(conv("+blah")            == "<p>+blah</p>"),
        ?_assert(conv("* blah")           == "<ul><li>blah</li></ul>"),
  -     ?_assert(conv("*blah")            == "<p><em>blah</em></p>"),
  +     ?_assert(conv("*blah")            == "<p>*blah</p>"),
        ?_assert(conv("- blah")           == "<ul><li>blah</li></ul>"),
        ?_assert(conv("-blah")            == "<p>-blah</p>"),
        ?_assert(conv("- a\n+ b\n- c")    == "<ul><li>a\n</li><li>b\n</li><li>c</li></ul>"),   
  
positive.code: %% if it is a list we need to discard the initial white space...
  make_list_str([{{ws, _}, _} | T] = List) ->
      case is_double_indent(List) of
          false     -> make_str(T);
          {true, R} -> "<pre><code>" ++ make_str(R) ++ "</code></pre>"
      end.
  
  %% All ref processing can ignore the original values 'cos those
  
negative.code: %% this clause forces a <BR /> line before a blockquote...
  ml1([{{ws, _}, _},
       {{ws, _}, _},
       {{lf, _}, _} = LF,
       {{md, gt}, _} = BQ,
       {{ws, _}, _} | T], A1, A2)      -> ml1(T, [], [[BQ], [{br, "<br />"}],
                                                      ml2(LF, A1) | A2]);
  %% this is a normal blockquote
  ml1([{{lf, _}, _} = LF,
       {{md, gt}, _} = BQ,
       {{ws, _}, _} | T], A1, A2) -> ml1(T, [], [[BQ], ml2(LF, A1) | A2]);
  %% this clause forces a <BR /> line...
  ml1([{{ws, _}, _},
       {{ws, _}, _},
       {{lf, _}, _} = H | []], A1, A2) -> ml1([], [], [[{br, "<br />"}],
                                                       ml2(H, A1) | A2]);
  %% this clause generates a blockquote...
  ml1([{{lf, _}, _} = H | T], A1, A2)  -> ml1(T, [], [ml2(H, A1) | A2]);
  ml1([H | T], A1, A2)                       -> ml1(T, [H | A1], A2).
  
  ml2(H, List) -> reverse([H | List]).
  