   end
 
   defp expr('\n' ++ t, line, buffer) do
-    expr t, line + 1, [?\n | buffer]
+    expr(t, line + 1, [?\n | buffer])
   end
 
   defp expr([h | t], line, buffer) do
-    expr t, line, [h | buffer]
+    expr(t, line, [h | buffer])
   end
 
   defp expr([], line, _buffer) do

defmodule EEx.Tokenizer do
  @moduledoc false

  @type content :: IO.chardata
  @type line :: non_neg_integer
  @type marker :: '=' | '/' | '|' | ''
  @type token :: {:text, content} |
                 {:expr | :start_expr | :middle_expr | :end_expr, line, marker, content}

  @doc """
  Tokenizes the given charlist or binary.

  # including the line break following it if there is one.
  defp trim_if_needed(rest, line, opts, buffer, acc) do
    original = {rest, line, buffer}

    if opts[:trim] do
      case {trim_left(buffer, acc), trim_right(rest, line)} do
        {{true, new_buffer}, {true, new_rest, new_line}} ->
          {new_rest, new_line, new_buffer}

        _ ->
          original
      end
