anchor.diff:  default(target)    -> "Ember.TEMPLATES";
   default(compiler)  -> "Ember.Handlebars.compile";
   default(templates) -> [].
  +
  +ensure_list(Object) ->
  +    case is_binary(Object) of
  +        true ->
  +            binary_to_list(Object);
  +        false ->
  +            Object
  +    end.
   
   read(File) ->
       case file:read_file(File) of
  
positive.code: -ifdef(TEST).
  
  handlebars_test() ->
      ListName = "foo",
      ListBody = "<h1>bar</h1>",
      ListTarget = "Ember.TEMPLATES",
      ListCompiler = "Ember.Handlebars.compile",
      ListOutput = handlebars(ListName, ListBody, ListTarget, ListCompiler),
      ?assertEqual(<<"Ember.TEMPLATES['foo'] = Ember.Handlebars.compile('<h1>bar</h1>')">>, ListOutput),
      BinaryName = <<"foo">>,
      BinaryBody = <<"<h1>bar</h1>">>,
      BinaryTarget = <<"Ember.TEMPLATES">>,
      BinaryCompiler = <<"Ember.Handlebars.compile">>,
      BinaryOutput = handlebars(BinaryName, BinaryBody, BinaryTarget, BinaryCompiler),
      ?assertEqual(<<"Ember.TEMPLATES['foo'] = Ember.Handlebars.compile('<h1>bar</h1>')">>, BinaryOutput).
  
  -endif.
  
negative.code: %% @spec handlebars(list(), list(), list(), list()) -> binary()
  %% @doc Generate a handlebars compiler line.
  handlebars(Name, Body, Target, Compiler) ->
      Targeted = lists:flatten([Target, "['" ++ ensure_list(Name) ++ "']"]),
      Compiled = lists:flatten([Compiler, "('" ++ ensure_list(Body) ++ "');\n"]),
      list_to_binary(lists:flatten([Targeted, " = " ++ Compiled])).
  
  %% ===================================================================
  