From 0513d02e23a5fbd7dff3dfe50d36fe570b2b478d Mon Sep 17 00:00:00 2001
From: David McClure <dave@xerotrope.org>
Date: Wed, 3 Sep 2014 00:12:56 -0700
Subject: [PATCH] FEATURE: Allow manual excerpt to be defined past the
 beginning of the post

There is still a limitation that the span excerpt must begin before the post_excerpt_max_length.
---
 lib/excerpt_parser.rb               |  2 ++
 spec/components/pretty_text_spec.rb | 12 +++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/excerpt_parser.rb b/lib/excerpt_parser.rb
index 03485ad812e..af38f8635db 100644
--- a/lib/excerpt_parser.rb
+++ b/lib/excerpt_parser.rb
@@ -63,6 +63,8 @@ class ExcerptParser < Nokogiri::XML::SAX::Document
 
       when "div", "span"
         if attributes.include?(["class", "excerpt"])
+          @excerpt = ""
+          @current_length = 0
           @start_excerpt = true
         end
         # Preserve spoilers
diff --git a/spec/components/pretty_text_spec.rb b/spec/components/pretty_text_spec.rb
index 4becd6eb60c..51ebd41ac43 100644
--- a/spec/components/pretty_text_spec.rb
+++ b/spec/components/pretty_text_spec.rb
@@ -190,12 +190,22 @@ describe PrettyText do
       PrettyText.excerpt(nil,100).should == ''
     end
 
-    it "handles span excerpt" do
+    it "handles span excerpt at the beginning of a post" do
       PrettyText.excerpt("<span class='excerpt'>hi</span> test",100).should == 'hi'
       post = Fabricate(:post, raw: "<span class='excerpt'>hi</span> test")
       post.excerpt.should == "hi"
     end
 
+    it "handles span excerpt that starts before the max length" do
+      text =  "123456789 123456789 12345679 123456789 123456789 " +
+              "as long as span starts before max length of the " +
+              "<span class='excerpt'>the specified excerpt</span>" +
+              "of the post  will be used"
+      PrettyText.excerpt(text, 100).should == 'the specified excerpt'
+      post = Fabricate(:post, raw: text)
+      post.excerpt.should == 'the specified excerpt'
+    end
+
   end
 
   describe "strip links" do