# File lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb, line 192
    def feed(aBuf)
      # Final letter analysis for logical-visual decision.
      # Look for evidence that the received buffer is either logical Hebrew or 
      # visual Hebrew.
      # The following cases are checked:
      # 1) A word longer than 1 letter, ending with a final letter. This is an 
      #    indication that the text is laid out "naturally" since the final letter 
      #    really appears at the end. +1 for logical score.
      # 2) A word longer than 1 letter, ending with a Non-Final letter. In normal
      #    Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi, should not end with
      #    the Non-Final form of that letter. Exceptions to this rule are mentioned
      #    above in isNonFinal(). This is an indication that the text is laid out
      #    backwards. +1 for visual score
      # 3) A word longer than 1 letter, starting with a final letter. Final letters 
      #    should not appear at the beginning of a word. This is an indication that 
      #    the text is laid out backwards. +1 for visual score.
      # 
      # The visual score and logical score are accumulated throughout the text and 
      # are finally checked against each other in GetCharSetName().
      # No checking for final letters in the middle of words is done since that case
      # is not an indication for either Logical or Visual text.
      # 
      # We automatically filter out all 7-bit characters (replace them with spaces)
      # so the word boundary detection works properly. [MAP]

      if get_state() == ENotMe
        # Both model probers say it's not them. No reason to continue.
        return ENotMe
      end

      aBuf = filter_high_bit_only(aBuf)

      for cur in aBuf.split(' ')
        if cur == ' '
          # We stand on a space - a word just ended
          if @_mBeforePrev != ' '
            # next-to-last char was not a space so self._mPrev is not a 1 letter word
            if is_final(@_mPrev)
              # case (1) [-2:not space][-1:final letter][cur:space]
              @_mFinalCharLogicalScore += 1
            elsif is_non_final(@_mPrev)
              # case (2) [-2:not space][-1:Non-Final letter][cur:space]
              @_mFinalCharVisualScore += 1
            end
          end
        else
          # Not standing on a space
          if (@_mBeforePrev == ' ') and (is_final(@_mPrev)) and (cur != ' ')
            # case (3) [-2:space][-1:final letter][cur:not space]
            @_mFinalCharVisualScore += 1
          end
        end
        @_mBeforePrev = @_mPrev
        @_mPrev = cur
      end

      # Forever detecting, till the end or until both model probers return eNotMe (handled above)
      return EDetecting
    end