extract_mentions_or_lists_with_indices

in rb/lib/twitter-text/extractor.rb [147:173]


      def extract_mentions_or_lists_with_indices(text) 
        return [] unless text =~ /[@@]/

        possible_entries = []
        text.to_s.scan(Twitter::TwitterText::Regex[:valid_mention_or_list]) do |before, at, screen_name, list_slug|
          match_data = $~
                        after = $'
          unless after =~ Twitter::TwitterText::Regex[:end_mention_match]
            start_position = match_data.char_begin(3) - 1
            end_position = match_data.char_end(list_slug.nil? ? 3 : 4)
            possible_entries << {
              :screen_name => screen_name,
              :list_slug => list_slug || "",
              :indices => [start_position, end_position]
            }
          end
        end

        if block_given?
          possible_entries.each do |mention|
            yield mention[:screen_name], mention[:list_slug], mention[:indices].first, mention[:indices].last
          end
        end

        possible_entries
      end