ERL_NIF_TERM to_lower(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ErlNifBinary in, out; int32_t ulen; UErrorCode status = U_ZERO_ERROR; char locale[LOCALE_LEN]; if (argc != 2) return enif_make_badarg(env); if (!(enif_get_atom(env, argv[0], locale, LOCALE_LEN, ERL_NIF_LATIN1) && enif_inspect_binary(env, argv[1], &in))) { return enif_make_badarg(env); } ulen = TO_ULEN(in.size); do_case(in, out, ulen, u_strToLower, (char*) locale, status); if (status == U_BUFFER_OVERFLOW_ERROR) { do_case(in, out, ulen, u_strToUpper, (char*) locale, status); } CHECK(env, status); return enif_make_binary(env, &out); }
static el_status_t case_cap_word(void) { return do_case(TOcapitalize); }
static el_status_t case_up_word(void) { return do_case(TOupper); }
static el_status_t case_down_word(void) { return do_case(TOlower); }