FindAll.cs
//
// This code is part of GrapeCity Documents for Word samples.
// Copyright (c) GrapeCity, Inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Linq;
using GrapeCity.Documents.Word;

namespace GcWordWeb.Samples
{
    // This sample shows how to find all occurrences of a string
    // in a DOCX document (see JsFrameworkExcerpt) using the
    // RangeBase.Find extension method provided by the
    // RangeBaseFindReplaceExtensions class.
    public class FindAll
    {
        public GcWordDocument CreateDocx()
        {
            // The string to find. Note that we use all lowercase,
            // as we specify the ignore case option in the find call:
            const string findPattern = "javascript framework";

            // Load the document:
            var doc = new GcWordDocument();
            doc.Load(Path.Combine("Resources", "WordDocs", "JsFrameworkExcerpt.docx"));

            // Find all occurrences of the search string, ignoring the case:
            var finds = doc.Body.Find(findPattern, new FindOptions(doc) { IgnoreCase = true });

            // Print the number of found occurrences at the top of the document:
            doc.Body.Paragraphs.Insert($"Found {finds.Count()} occurrences of '{findPattern}' in the document.\n\n", InsertLocation.Start);

            // Done:
            return doc;
        }
    }
}