anchor.diff:  %% @author Marc Worrell <marc@worrell.nl>
  -%% @copyright 2009 Marc Worrell
  +%% @copyright 2009-2010 Marc Worrell
   %% @date 2009-04-26
   %% @doc String related functions
  +%% @todo Make this UTF-8 safe
   
   %% @todo Check valid chars for filenames, allow chinese, japanese, etc?
   %% CJK Unified Ideographs Extension A: Range: 3400-4DBF
  
positive.code: 
  	trim_right(<<C, Rest/binary>>, WS, Acc) ->
  		case C of
  			W when W=:=10; W=:=13; W=:=9; W=:=32 -> trim_right(Rest, <<WS/binary, C>>, Acc);
  			_ -> trim_right(Rest, <<>>, <<Acc/binary, WS/binary, C>>)
  		end;
  	trim_right(<<>>, _WS, Acc) ->
  		Acc.
  
  
  %% @doc Check if the variable is a one dimensional list, probably a string
  is_string([]) -> 
  
negative.code: trim(L) when is_list(L) ->
  	binary_to_list(trim(iolist_to_binary(L))).
  
  %% @doc Remove all occurences of a character at the start and end of a string.
  trim(B, Char) when is_binary(B) ->
  	trim_right(trim_left(B, Char), Char);
  trim(L, Char) when is_list(L) ->
  	binary_to_list(trim(iolist_to_binary(L), Char)).
  
  
  %% @doc Remove whitespace at the start the string
  trim_left(<<C, Rest/binary>> = Bin) ->
  	case C of
  		W when W =< 32 -> trim_left(Rest);
  		_ -> Bin
  	end;
  trim_left(<<>>) ->
  	<<>>;
  trim_left(L) ->
  	binary_to_list(trim_left(iolist_to_binary(L))).
  
  %% @doc Remove all occurences of a char at the start of a string
  trim_left(<<C, Rest/binary>> = Bin, Char) ->
  	case C of
  		Char -> trim_left(Rest, Char);
  		_ -> Bin
  	end;
  trim_left(<<>>, _Char) ->
  	<<>>;
  trim_left(L, Char) ->
  	binary_to_list(trim_left(iolist_to_binary(L), Char)).
  
  	
  %% @doc Remove whitespace at the end of the string
  trim_right(B) when is_binary(B) ->
  