Replace exception used for flow control with idiomatic throw/catch.

This commit is contained in:
Josh Susser and Avdi Grimm 2013-05-16 01:19:34 -04:00 committed by Avdi Grimm
parent f27eb10872
commit c793684d4c

View file

@ -235,8 +235,6 @@ module PrettyText
class ExcerptParser < Nokogiri::XML::SAX::Document class ExcerptParser < Nokogiri::XML::SAX::Document
class DoneException < StandardError; end
attr_reader :excerpt attr_reader :excerpt
def initialize(length,options) def initialize(length,options)
@ -249,10 +247,8 @@ module PrettyText
def self.get_excerpt(html, length, options) def self.get_excerpt(html, length, options)
me = self.new(length,options) me = self.new(length,options)
parser = Nokogiri::HTML::SAX::Parser.new(me) parser = Nokogiri::HTML::SAX::Parser.new(me)
begin catch(:done) do
parser.parse(html) unless html.nil? parser.parse(html) unless html.nil?
rescue DoneException
# we are done
end end
me.excerpt me.excerpt
end end
@ -303,7 +299,7 @@ module PrettyText
@excerpt << encode.call(string[0..length]) if truncate @excerpt << encode.call(string[0..length]) if truncate
@excerpt << "&hellip;" @excerpt << "&hellip;"
@excerpt << "</a>" if @in_a @excerpt << "</a>" if @in_a
raise DoneException.new throw :done
end end
@excerpt << encode.call(string) @excerpt << encode.call(string)
@current_length += string.length if count_it @current_length += string.length if count_it