[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