Class PyShadowString
- All Implemented Interfaces:
Serializable
,CharSequence
,BufferProtocol
- Direct Known Subclasses:
PyShadowStringDerived
startswith
are concerned. This solves a problem that Jython users sometimes
experience with libraries that are sensitive to platform.
A library may test for a particular platform in order to adjust to local file name conventions or
to decide which operating system commands are available. In Jython, os.name
and
sys.platform
indicate that Java is the platform, which is necessary information in
some parts of the standard library, but other libraries assuming CPython then draw incorrect
conclusions.
With hindsight, a better choice could be made, where sys.platform
etc. indicated
Windows or Posix, and something else indicates the implementation. A change in Jython 2 would
cause more problems than it solved, but we expect Jython 3 to work that way. In the Python
Standard Library, the Jython project can make all necessary changes. It can't do anything about
third-party libraries. But it would be a big help if users could cause sys.platform
or os.name
to appear to have the OS-dependent value as far as those troublesome
libraries were concerned.
This is what this class achieves. os.name
and sys.platform
regular
strings for most purposes, but each has a "shadow" value that is used in contexts the user may
specify.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.python.core.PyObject
PyObject.ConversionException
-
Field Summary
FieldsFields inherited from class org.python.core.PyObject
gcMonitorGlobal
-
Constructor Summary
ConstructorsConstructorDescriptionEmpty string (not very useful but needed for technical reasons).PyShadowString
(String primary, String shadow) Construct an instance specifying primary and shadow values.PyShadowString
(PyObject primary, String shadow) Deprecated.use the constructor with strings instead.PyShadowString
(PyType subtype, PyObject primary, PyObject shadow) -
Method Summary
Modifier and TypeMethodDescriptionCompare thisPyShadowString
with anotherPyObject
for equality.__getslice__
(PyObject start, PyObject stop, PyObject step) __repr__()
Equivalent to the standard Python__repr__
method.void
Specify a context (class, method) in which the shadow string is allowed to match.Get the shadow value.Return a list of the tuples specifying the contexts in which the shadow value will be consulted during matching.final void
shadowstr_addtarget
(PyObject classname, PyObject methodname) final PyString
final PyObject
boolean
startswith
(PyObject prefix) Equivalent to the Pythonstr.startswith
method testing whether a string starts with a specified prefix.boolean
startswith
(PyObject prefix, PyObject start) Equivalent to the Pythonstr.startswith
method, testing whether a string starts with a specified prefix, where a sub-range is specified by[start:]
.boolean
startswith
(PyObject prefix, PyObject start, PyObject end) Equivalent to the Pythonstr.startswith
method, testing whether a string starts with a specified prefix, where a sub-range is specified by[start:end]
.Methods inherited from class org.python.core.PyString
__add__, __cmp__, __complex__, __contains__, __float__, __format__, __ge__, __getnewargs__, __gt__, __int__, __invert__, __le__, __len__, __long__, __lt__, __mod__, __mul__, __ne__, __neg__, __pos__, __rmul__, __str__, __tojava__, __unicode__, asDouble, asInt, asLong, asName, asString, asString, atof, atoi, atoi, atol, atol, capitalize, center, charAt, count, count, count, count, count, count, createInstance, decode, decode, decode, decode_UnicodeEscape, encode, encode, encode, encode_UnicodeEscape, endswith, endswith, endswith, expandtabs, expandtabs, find, find, find, find, find, find, fromInterned, getBuffer, getInt, getString, hashCode, index, index, index, index, index, index, internedString, isalnum, isalpha, isBasicPlane, isdecimal, isdigit, islower, isnumeric, isspace, istitle, isunicode, isupper, join, length, ljust, ljust, lower, lstrip, lstrip, lstrip, partition, replace, replace, rfind, rfind, rfind, rfind, rfind, rfind, rindex, rindex, rindex, rindex, rindex, rindex, rjust, rpartition, rsplit, rsplit, rsplit, rsplit, rsplit, rstrip, rstrip, rstrip, split, split, split, split, split, splitlines, splitlines, str___mod__, strip, strip, strip, subSequence, substring, swapcase, title, toBytes, toCodePoints, toString, translate, translate, translate, translate, upper, zfill
Methods inherited from class org.python.core.PySequence
__delitem__, __delslice__, __finditem__, __finditem__, __getitem__, __iter__, __nonzero__, __setitem__, __setitem__, __setslice__, isMappingType, isNumberType, isSequenceType
Methods inherited from class org.python.core.PyObject
__abs__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __coerce__, __coerce_ex__, __delattr__, __delattr__, __delete__, __delitem__, __delslice__, __dir__, __div__, __divmod__, __ensure_finalizer__, __findattr__, __findattr__, __findattr_ex__, __finditem__, __floordiv__, __get__, __getattr__, __getattr__, __getitem__, __getslice__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __ior__, __ipow__, __irshift__, __isub__, __iternext__, __itruediv__, __ixor__, __lshift__, __not__, __oct__, __or__, __pow__, __pow__, __radd__, __rand__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __rfloordiv__, __rlshift__, __rmod__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __setslice__, __sub__, __truediv__, __trunc__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _xor, asIndex, asIndex, asInt, asIterable, asLong, asName, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, getDict, getType, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType
Methods inherited from interface java.lang.CharSequence
chars, codePoints, isEmpty
-
Field Details
-
TYPE
-
-
Constructor Details
-
PyShadowString
public PyShadowString()Empty string (not very useful but needed for technical reasons). -
PyShadowString
Construct an instance specifying primary and shadow values. -
PyShadowString
Deprecated.use the constructor with strings instead.Construct an instance specifying primary and shadow values (bytes object expected for primary). This somewhat uncanonical constructor was removed in Jython 2.7.2. The deprecated version is kept for compatibility with JyNI 2.7-alpha5. -
PyShadowString
-
-
Method Details
-
getshadow
Get the shadow value. -
shadowstr_getshadow
-
addTarget
Specify a context (class, method) in which the shadow string is allowed to match.- Parameters:
className
- class name to match or null to match anything.methodName
- method name to match or null to match anything.
-
shadowstr_addtarget
-
getTargets
Return a list of the tuples specifying the contexts in which the shadow value will be consulted during matching. -
shadowstr_gettargets
-
__eq__
Compare thisPyShadowString
with anotherPyObject
for equality. APyShadowString
is equal to the other object if its primary value is equal to it, or if its shadow value is equal to the other object and the test is made in one of its target contexts. (TwoPyShadowString
are equal if the primary values are equal, the primary of one matches the shadow of the other in the shadow's context, or their shadows match and both are in context. -
__getslice__
- Overrides:
__getslice__
in classPySequence
-
startswith
Description copied from class:PyString
Equivalent to the Pythonstr.startswith
method testing whether a string starts with a specified prefix.prefix
can also be a tuple of prefixes to look for.- Overrides:
startswith
in classPyString
- Parameters:
prefix
- string to check for (or aPyTuple
of them).- Returns:
true
if this string slice starts with a specified prefix, otherwisefalse
.
-
startswith
Description copied from class:PyString
Equivalent to the Pythonstr.startswith
method, testing whether a string starts with a specified prefix, where a sub-range is specified by[start:]
.start
is interpreted as in slice notation, with null orPy.None
representing "missing".prefix
can also be a tuple of prefixes to look for.- Overrides:
startswith
in classPyString
- Parameters:
prefix
- string to check for (or aPyTuple
of them).start
- start of slice.- Returns:
true
if this string slice starts with a specified prefix, otherwisefalse
.
-
startswith
Description copied from class:PyString
Equivalent to the Pythonstr.startswith
method, testing whether a string starts with a specified prefix, where a sub-range is specified by[start:end]
. Argumentsstart
andend
are interpreted as in slice notation, with null orPy.None
representing "missing".prefix
can also be a tuple of prefixes to look for.- Overrides:
startswith
in classPyString
- Parameters:
prefix
- string to check for (or aPyTuple
of them).start
- start of slice.end
- end of slice.- Returns:
true
if this string slice starts with a specified prefix, otherwisefalse
.
-
__repr__
Description copied from class:PyObject
Equivalent to the standard Python__repr__
method. Each sub-class ofPyObject
is likely to re-define this method to provide for its own reproduction.
-