[Jython-checkins] jython: Now properly expose PatternObject, doh

darjus.loktevic jython-checkins at python.org
Tue Jan 12 18:57:07 EST 2016


https://hg.python.org/jython/rev/f09a21ca8b82
changeset:   7872:f09a21ca8b82
user:        Darjus Loktevic <darjus at gmail.com>
date:        Wed Jan 13 10:57:00 2016 +1100
summary:
  Now properly expose PatternObject, doh

files:
  src/org/python/core/BuiltinDocs.java          |  36 +++++++
  src/org/python/modules/sre/PatternObject.java |  51 ++++++++-
  2 files changed, 78 insertions(+), 9 deletions(-)


diff --git a/src/org/python/core/BuiltinDocs.java b/src/org/python/core/BuiltinDocs.java
--- a/src/org/python/core/BuiltinDocs.java
+++ b/src/org/python/core/BuiltinDocs.java
@@ -4727,4 +4727,40 @@
     public final static String traceback_tb_next_doc = 
         "";
 
+    public final static String sre_pattern_doc =
+        "Compiled regular expression objects";
+
+    public final static String sre_pattern_match_doc =
+        "match(string[, pos[, endpos]]) --> match object or None.\n" +
+        "    Matches zero or more characters at the beginning of the string";
+
+    public final static String sre_pattern_findall_doc =
+        "findall(string[, pos[, endpos]]) --> list.\n" +
+        "   Return a list of all non-overlapping matches of pattern in string.";
+
+    public final static String sre_pattern_finditer_doc =
+        "finditer(string[, pos[, endpos]]) --> iterator.\n" +
+        "    Return an iterator over all non-overlapping matches for the \n" +
+        "    RE pattern in string. For each match, the iterator returns a\n" +
+        "    match object.";
+
+    public final static String sre_pattern_search_doc =
+        "search(string[, pos[, endpos]]) --> match object or None.\n" +
+        "    Scan through string looking for a match, and return a corresponding\n" +
+        "    match object instance. Return None if no position in the string matches.";
+
+    public final static String sre_pattern_split_doc =
+        "split(string[, maxsplit = 0])  --> list.\n" +
+        "    Split string by the occurrences of pattern.";
+
+    public final static String sre_pattern_sub_doc =
+        "sub(repl, string[, count = 0]) --> newstring\n" +
+        "    Return the string obtained by replacing the leftmost non-overlapping\n" +
+        "    occurrences of pattern in string by the replacement repl.";
+
+    public final static String sre_pattern_subn_doc =
+        "subn(repl, string[, count = 0]) --> (newstring, number of subs)\n" +
+        "    Return the tuple (new_string, number_of_subs_made) found by replacing\n" +
+        "    the leftmost non-overlapping occurrences of pattern with the\n" +
+        "    replacement repl.";
 }
diff --git a/src/org/python/modules/sre/PatternObject.java b/src/org/python/modules/sre/PatternObject.java
--- a/src/org/python/modules/sre/PatternObject.java
+++ b/src/org/python/modules/sre/PatternObject.java
@@ -18,10 +18,12 @@
 
 import java.util.*;
 import org.python.core.*;
+import org.python.expose.ExposedGet;
+import org.python.expose.ExposedMethod;
 import org.python.expose.ExposedType;
 
 
- at ExposedType(name = "SRE_Pattern")
+ at ExposedType(name = "SRE_Pattern", doc = BuiltinDocs.sre_pattern_doc)
 public class PatternObject extends PyObject implements Traverseproc {
     int[] code; /* link to the code string object */
     public PyString pattern; /* link to the pattern source (or None) */
@@ -45,7 +47,31 @@
         this.indexgroup = indexgroup;
     }
 
-    public MatchObject match(PyObject[] args, String[] kws) {
+    @ExposedGet(name = "pattern")
+    public PyString getPattern() {
+        if (pattern == null) {
+            return Py.EmptyString;
+        }
+        return pattern;
+    }
+
+    @ExposedGet(name = "flags")
+    public int getFlags() {
+        return flags;
+    }
+
+    @ExposedGet(name = "groups")
+    public int getGroups() {
+        return groups;
+    }
+
+    @ExposedGet(name = "groupindex")
+    public PyObject getGroupindex() {
+        return groupindex;
+    }
+
+    @ExposedMethod(doc = BuiltinDocs.sre_pattern_match_doc)
+    public PyObject match(PyObject[] args, String[] kws) {
         ArgParser ap = new ArgParser("match", args, kws,
                                      "string", "pos", "endpos");
         PyString string = extractPyString(ap, 0);
@@ -56,10 +82,12 @@
         state.ptr = state.start;
         int status = state.SRE_MATCH(code, 0, 1);
 
-        return _pattern_new_match(state, string, status);
+        MatchObject matchObject = _pattern_new_match(state, string, status);
+        return matchObject != null ? matchObject : Py.None;
     }
-    
-    public MatchObject search(PyObject[] args, String[] kws) {
+
+    @ExposedMethod(doc = BuiltinDocs.sre_pattern_search_doc)
+    public PyObject search(PyObject[] args, String[] kws) {
         ArgParser ap = new ArgParser("search", args, kws,
                                      "string", "pos", "endpos");
         PyString string = extractPyString(ap, 0);
@@ -70,10 +98,12 @@
 
         int status = state.SRE_SEARCH(code, 0);
 
-        return _pattern_new_match(state, string, status);
+        MatchObject matchObject = _pattern_new_match(state, string, status);
+        return matchObject != null ? matchObject : Py.None;
     }
 
 
+    @ExposedMethod(doc = BuiltinDocs.sre_pattern_sub_doc)
     public PyObject sub(PyObject[] args, String[] kws) {
         ArgParser ap = new ArgParser("sub", args, kws,
                                      "repl", "string", "count");
@@ -84,7 +114,7 @@
     }
 
 
-
+    @ExposedMethod(doc = BuiltinDocs.sre_pattern_subn_doc)
     public PyObject subn(PyObject[] args, String[] kws) {
         ArgParser ap = new ArgParser("subn", args, kws,
                                      "repl", "string", "count");
@@ -184,6 +214,7 @@
         return joiner.__getattr__("join").__call__(list);
     }
 
+    @ExposedMethod(doc = BuiltinDocs.sre_pattern_split_doc)
     public PyObject split(PyObject[] args, String[] kws) {
         ArgParser ap = new ArgParser("split", args, kws,
                                      "string", "maxsplit");
@@ -239,7 +270,7 @@
     }
 
 
-
+    @ExposedMethod(doc = BuiltinDocs.sre_pattern_findall_doc)
     public PyObject findall(PyObject[] args, String[] kws) {
         ArgParser ap = new ArgParser("findall", args, kws,
                                      "string", "pos", "endpos");
@@ -291,12 +322,14 @@
         return new PyList(list);
     }
 
+    @ExposedMethod(doc = BuiltinDocs.sre_pattern_finditer_doc)
     public PyObject finditer(PyObject[] args, String[] kws) {
         ScannerObject scanner = scanner(args, kws);
         PyObject search = scanner.__findattr__("search");
         return new PyCallIter(search, Py.None);
     }
-    
+
+    @ExposedMethod()
     public ScannerObject scanner(PyObject[] args, String[] kws) {
         ArgParser ap = new ArgParser("scanner", args, kws,
                                      "pattern", "pos", "endpos");

-- 
Repository URL: https://hg.python.org/jython


More information about the Jython-checkins mailing list