| # Change Log | # Change Log | ||||
| ## (In Development) | |||||
| * Make the ispunct ctype compatibility implementation conformant. | |||||
| ## 10.0.0 - 2017-06-25 | ## 10.0.0 - 2017-06-25 | ||||
| * Add `iswblank` and `iswxdigit` compatibility. | * Add `iswblank` and `iswxdigit` compatibility. |
| /* ctype-style APIs. | /* ctype-style APIs. | ||||
| * | * | ||||
| * Copyright (C) 2012-2017 Reece H. Dunn | |||||
| * Copyright (C) 2012-2018 Reece H. Dunn | |||||
| * | * | ||||
| * This file is part of ucd-tools. | * This file is part of ucd-tools. | ||||
| * | * | ||||
| int ucd_ispunct(codepoint_t c) | int ucd_ispunct(codepoint_t c) | ||||
| { | { | ||||
| switch (ucd_lookup_category(c)) | |||||
| { | |||||
| case UCD_CATEGORY_Pc: | |||||
| case UCD_CATEGORY_Pd: | |||||
| case UCD_CATEGORY_Pe: | |||||
| case UCD_CATEGORY_Pf: | |||||
| case UCD_CATEGORY_Pi: | |||||
| case UCD_CATEGORY_Po: | |||||
| case UCD_CATEGORY_Ps: | |||||
| return 1; | |||||
| default: | |||||
| return 0; | |||||
| } | |||||
| return ucd_isgraph(c) && !ucd_isalnum(c); | |||||
| } | } | ||||
| int ucd_isspace(codepoint_t c) | int ucd_isspace(codepoint_t c) |
| return 0 | return 0 | ||||
| def ispunct(data): | def ispunct(data): | ||||
| if data.get('GeneralCategory', 'Cn')[0] in 'P': | |||||
| return 1 | |||||
| else: | |||||
| return 0 | |||||
| return 1 if isgraph(data) and not isalnum(data) else 0 | |||||
| def isprint(data): | def isprint(data): | ||||
| if data.get('GeneralCategory', 'Cn')[0] in 'LMNPSZ': # not in 'CI' | if data.get('GeneralCategory', 'Cn')[0] in 'LMNPSZ': # not in 'CI' |