Show More
@@ -17,13 +17,12 b" _color_names = ['aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'bei" | |||||
17 | _color_re = re.compile(r'#[a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?$') |
|
17 | _color_re = re.compile(r'#[a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?$') | |
18 |
|
18 | |||
19 |
|
19 | |||
20 |
class Color(traitlets. |
|
20 | class Color(traitlets.Unicode): | |
21 | """A string holding a valid HTML color such as 'blue', '#060482', '#A80'""" |
|
21 | """A string holding a valid HTML color such as 'blue', '#060482', '#A80'""" | |
22 |
|
22 | |||
23 | info_text = 'a valid HTML color' |
|
23 | info_text = 'a valid HTML color' | |
24 |
|
24 | |||
25 | def validate(self, obj, value): |
|
25 | def validate(self, obj, value): | |
26 | value = self._coerce_str(obj, value) |
|
|||
27 | if value.lower() in _color_names or _color_re.match(value): |
|
26 | if value.lower() in _color_names or _color_re.match(value): | |
28 | return value |
|
27 | return value | |
29 | self.error(obj, value) |
|
28 | self.error(obj, value) |
@@ -1288,14 +1288,19 b' class CUnicode(Unicode):' | |||||
1288 | self.error(obj, value) |
|
1288 | self.error(obj, value) | |
1289 |
|
1289 | |||
1290 |
|
1290 | |||
1291 |
class |
|
1291 | class ObjectName(TraitType): | |
|
1292 | """A string holding a valid object name in this version of Python. | |||
|
1293 | ||||
|
1294 | This does not check that the name exists in any scope.""" | |||
|
1295 | info_text = "a valid object identifier in Python" | |||
1292 |
|
1296 | |||
1293 | if py3compat.PY3: |
|
1297 | if py3compat.PY3: | |
1294 | # Python 3: |
|
1298 | # Python 3: | |
1295 |
|
|
1299 | coerce_str = staticmethod(lambda _,s: s) | |
|
1300 | ||||
1296 | else: |
|
1301 | else: | |
1297 | # Python 2: |
|
1302 | # Python 2: | |
1298 |
def |
|
1303 | def coerce_str(self, obj, value): | |
1299 | "In Python 2, coerce ascii-only unicode to str" |
|
1304 | "In Python 2, coerce ascii-only unicode to str" | |
1300 | if isinstance(value, unicode): |
|
1305 | if isinstance(value, unicode): | |
1301 | try: |
|
1306 | try: | |
@@ -1304,27 +1309,17 b' class _CoercedString(TraitType):' | |||||
1304 | self.error(obj, value) |
|
1309 | self.error(obj, value) | |
1305 | return value |
|
1310 | return value | |
1306 |
|
1311 | |||
1307 |
|
||||
1308 | class ObjectName(_CoercedString): |
|
|||
1309 | """A string holding a valid object name in this version of Python. |
|
|||
1310 |
|
||||
1311 | This does not check that the name exists in any scope.""" |
|
|||
1312 |
|
||||
1313 | info_text = "a valid object identifier in Python" |
|
|||
1314 |
|
||||
1315 | def validate(self, obj, value): |
|
1312 | def validate(self, obj, value): | |
1316 |
value = self. |
|
1313 | value = self.coerce_str(obj, value) | |
1317 |
|
1314 | |||
1318 | if isinstance(value, string_types) and py3compat.isidentifier(value): |
|
1315 | if isinstance(value, string_types) and py3compat.isidentifier(value): | |
1319 | return value |
|
1316 | return value | |
1320 | self.error(obj, value) |
|
1317 | self.error(obj, value) | |
1321 |
|
1318 | |||
1322 |
|
||||
1323 | class DottedObjectName(ObjectName): |
|
1319 | class DottedObjectName(ObjectName): | |
1324 | """A string holding a valid dotted object name in Python, such as A.b3._c""" |
|
1320 | """A string holding a valid dotted object name in Python, such as A.b3._c""" | |
1325 |
|
||||
1326 | def validate(self, obj, value): |
|
1321 | def validate(self, obj, value): | |
1327 |
value = self. |
|
1322 | value = self.coerce_str(obj, value) | |
1328 |
|
1323 | |||
1329 | if isinstance(value, string_types) and py3compat.isidentifier(value, dotted=True): |
|
1324 | if isinstance(value, string_types) and py3compat.isidentifier(value, dotted=True): | |
1330 | return value |
|
1325 | return value |
General Comments 0
You need to be logged in to leave comments.
Login now