//
// This software is now distributed according to
// the Lesser Gnu Public License.  Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
//    -- Happy Computing!
//
package com.stevesoft.pat;

import java.util.*;

/** The '^' or the '\A' Pattern, matches the start of a string. */
class Start extends Pattern
{
  boolean retIsStart;

  Start(boolean b)
  {
    retIsStart = b;
  }

  public int matchInternal(int pos, Pthings pt)
  {
    if (retIsStart && pt.mFlag && pos > 0 && pt.src.charAt(pos - 1) == '\n')
    {
      return nextMatch(pos, pt);
    }
    if (pos == 0)
    {
      return nextMatch(pos, pt);
    }
    return -1;
  }

  public String toString()
  {
    if (retIsStart)
    {
      return "^" + nextString();
    }
    else
    {
      return "\\A" + nextString();
    }
  }

  public patInt maxChars()
  {
    return new patInt(0);
  }

  Pattern clone1(Hashtable h)
  {
    return new Start(retIsStart);
  }
};
