⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esregexp.java

📁 RESIN 3.2 最新源码
💻 JAVA
字号:
/* * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the *   Free SoftwareFoundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.es;import com.caucho.util.IntMap;import java.util.Iterator;import java.util.regex.Pattern;public class ESRegexp extends ESObject {  static ESId GLOBAL = ESId.intern("global");  static ESId IGNORE_CASE = ESId.intern("ignoreCase");  static ESId LAST_INDEX = ESId.intern("lastIndex");  static ESId SOURCE = ESId.intern("source");  ESString pattern;  ESString flags;  Pattern _regexp;  boolean hasSetProps;  int lastIndex;  ESString lastString;  int lastStart;  ESRegexp(ESString pattern, ESString flags) throws ESException  {    super("RegExp", getPrototype());    this.pattern = pattern;    this.flags = flags;    lastString = ESString.NULL;    /* java.util.regex    try {      _regexp = Pattern.parse(pattern.toString(), flags.toString());    } catch (Exception e) {      throw new ESException("regexp: " + e.getMessage());    }    */  }  public ESRegexp(String pattern, String flags) throws ESException  {    super("RegExp", getPrototype());    this.pattern = new ESString(pattern);    this.flags = new ESString(flags);    lastString = ESString.NULL;    try {      _regexp = Pattern.compile(pattern); // , flags    } catch (Exception e) {      throw new ESException("regexp: " + e.getMessage());    }  }  protected ESRegexp() {}  private static ESBase getPrototype()  {    Global resin = Global.getGlobalProto();    if (resin == null)      return null;    else      return resin.getRegexpProto();  }  private void setProps()  {    if (hasSetProps)      return;    int flags = READ_ONLY|DONT_DELETE;    hasSetProps = true;    // java.util.regex    // put(GLOBAL, ESBoolean.create(_regexp.isGlobal())); // , flags);    // put(IGNORE_CASE, ESBoolean.create(_regexp.ignoreCase())); // , flags);    put(LAST_INDEX, ESNumber.create(lastIndex), DONT_DELETE);    put(SOURCE, pattern, flags);  }  int getLastIndex() throws Throwable  {    if (! hasSetProps)      return lastIndex;    else      return getProperty(LAST_INDEX).toInt32();  }  void setLastIndex(int index)  {    lastIndex = index;    hasSetProps = false;  }  public ESBase getProperty(ESString key) throws Throwable  {    if (! hasSetProps)      setProps();    return super.getProperty(key);  }  public void setProperty(ESString key, ESBase value) throws Throwable  {    if (! hasSetProps)      setProps();    super.setProperty(key, value);  }  public ESBase delete(ESString key) throws Throwable  {    if (! hasSetProps)      setProps();    return super.delete(key);  }   public Iterator keys() throws ESException  {    if (! hasSetProps)      setProps();    return super.keys();  }   public ESString toSource(IntMap map, boolean isLoopPass) throws Throwable  {    if (isLoopPass)      return null;    else      return toStr();  }  void compile(ESString pattern, ESString flags) throws ESException  {    if (! this.pattern.equals(pattern) || ! this.flags.equals(flags)) {      this.pattern = pattern;      this.flags = flags;      try {	// XXX: java.util.regex	// _regexp = Pattern.parse(pattern.toString(), flags.toString());      } catch (Exception e) {	throw new ESException("regexp: " + e);      }    }    lastIndex = 0;    hasSetProps = false;  }  boolean exec(ESString string, boolean useGlobal) throws Throwable  {    return false;    /* change to java.util.regex    lastString = string;    lastStart = getLastIndex();    if (! useGlobal) {      lastStart = 0;      return _regexp.match(string.toString());    }    else if (regexp.match(string.toString(), lastStart)) {      hasSetProps = false;      lastIndex = 0;      return false;    } else {      hasSetProps = false;      lastIndex = regexp.getEnd(0);      if (regexp.getBegin(0) == lastIndex) 	lastIndex++;      return true;    }    */  }  public Object toJavaObject()  {    // java.util.regex    // return regexp;    return null;  }  boolean exec(ESString string) throws Throwable  {    return false;    // java.util.regex    // return exec(string, regexp.isGlobal());  }  public ESBase call(Call call, int length) throws Throwable  {    call.setThis(this);    return NativeRegexp.exec(call, length);  }   protected ESObject dup() { return new ESRegexp(); }    protected void copy(Object newObj)   {     ESRegexp newRegexp = (ESRegexp) newObj;      super.copy(newObj);      newRegexp.pattern = pattern;     newRegexp.flags = flags;     newRegexp.lastString = lastString;      // XXX: bogus     try {       // java.util.regex       // newRegexp.regexp = new Regexp(pattern.toString(), flags.toString());     } catch (Exception e) {     }   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -