anchor.diff:  
   %% Strips xml children that are entirely whitespace (space, tabs, newlines)
   strip_whitespace (List) when is_list(List) ->
  -    [ strip_whitespace(X) || X <- List, is_whitespace(X) ];
  +    [strip_whitespace(X) || X <- List, 'keeper?'(X)];
   strip_whitespace ({El,Attr,Children}) ->
       {El, Attr, strip_whitespace(Children)};
   strip_whitespace (Else) ->
       Else.
   
  -is_whitespace (X) when is_tuple(X); is_number(X) ->
  +'keeper?' (X) when is_tuple(X); is_number(X) ->
       true;
  -is_whitespace (X) ->
  -    nomatch == re:run(X, "^[ \n\t]*$", [unicode]). %"
  +'keeper?' (X) ->
  +    not lists:all(fun (C) -> C == $  orelse C == $\n orelse C == $\t end, X).
   
   %% rather basic xml to string converter, takes xml of the form
   %% {tag, [{listof, "attributes"}], ["list of children"]}
  
positive.code: %% anyway
  -spec strip_cos (list()) -> list().
  strip_cos (Index) ->
      io:format("WAT ~p", [[{App,X} || X = [_, App |_] <- Index, nomatch /= re:run(App, "^cos") ]]).
      [X || X = [_, App |_] <- Index, nomatch == re:run(App, "^cos") ].
  
  ensure_docsrc (Conf, AppDir) ->
      % List any doc/src/*.xml files that exist in the source files
  
negative.code:               end,
                lists:sort(fun sort_index/2, lists:map(F, FIndex))),
  
      Js = fmt("var index = [~s];",
               [string:join([[C || C <- I, C /= $\n, C /= $\r] || I <- Index], ",")]),
  
      ok = file:write_file([dest(Conf), "/erldocs_index.js"], Js).
  
  