VOOZH about

URL: https://apidock.com/ruby/String/upcase!

⇱ String#upcase! - APIdock


method

upcase!

ruby latest stable - Class: String
upcase!(*args)
public

Upcases the contents of str, returning nil if no changes were made.

See String#downcase for meaning of and use with different encodings.

static VALUE
rb_str_upcase_bang(int argc, VALUE *argv, VALUE str)
{
 rb_encoding *enc;
 OnigCaseFoldType flags = ONIGENC_CASE_UPCASE;

 flags = check_case_options(argc, argv, flags);
 str_modify_keep_cr(str);
 enc = STR_ENC_GET(str);
 rb_str_check_dummy_enc(enc);
 if (((flags&ONIGENC_CASE_ASCII_ONLY) && (enc==rb_utf8_encoding() || rb_enc_mbmaxlen(enc)==1))
 || (!(flags&ONIGENC_CASE_FOLD_TURKISH_AZERI) && ENC_CODERANGE(str)==ENC_CODERANGE_7BIT)) {
 char *s = RSTRING_PTR(str), *send = RSTRING_END(str);

 while (s < send) {
 unsigned int c = *(unsigned char*)s;

 if (rb_enc_isascii(c, enc) && 'a' <= c && c <= 'z') {
 *s = 'A' + (c - 'a');
 flags |= ONIGENC_CASE_MODIFIED;
 }
 s++;
 }
 }
 else if (flags&ONIGENC_CASE_ASCII_ONLY)
 rb_str_ascii_casemap(str, &flags, enc);
 else
 str_shared_replace(str, rb_str_casemap(str, &flags, enc));

 if (ONIGENC_CASE_MODIFIED&flags) return str;
 return Qnil;
}

Related methods