Sha256: a53e252432e0d2db0ddbc938cd343710e81b38f5375da887ad5db85ac9168b27
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
#include <stdio.h> #include <ruby.h> #include <ruby/encoding.h> #include <ruby/re.h> #include <ruby/version.h> #define STR_ENC_GET(str) rb_enc_from_index(ENCODING_GET(str)) #ifndef RUBY_API_VERSION_CODE # define ruby_version_before_2_2() 1 #else # define ruby_version_before_2_2() (RUBY_API_VERSION_CODE < 20200) #endif static VALUE rb_str_blank_as(VALUE str) { rb_encoding *enc; char *s, *e; enc = STR_ENC_GET(str); s = RSTRING_PTR(str); if (!s || RSTRING_LEN(str) == 0) return Qtrue; e = RSTRING_END(str); while (s < e) { int n; unsigned int cc = rb_enc_codepoint_len(s, e, &n, enc); switch (cc) { case 9: case 0xa: case 0xb: case 0xc: case 0xd: case 0x20: case 0x85: case 0xa0: case 0x1680: case 0x2000: case 0x2001: case 0x2002: case 0x2003: case 0x2004: case 0x2005: case 0x2006: case 0x2007: case 0x2008: case 0x2009: case 0x200a: case 0x2028: case 0x2029: case 0x202f: case 0x205f: case 0x3000: #if ruby_version_before_2_2() case 0x180e: #endif /* found */ break; default: return Qfalse; } s += n; } return Qtrue; } static VALUE rb_str_blank(VALUE str) { rb_encoding *enc; char *s, *e; enc = STR_ENC_GET(str); s = RSTRING_PTR(str); if (!s || RSTRING_LEN(str) == 0) return Qtrue; e = RSTRING_END(str); while (s < e) { int n; unsigned int cc = rb_enc_codepoint_len(s, e, &n, enc); if (!rb_isspace(cc) && cc != 0) return Qfalse; s += n; } return Qtrue; } void Init_fast_blank( void ) { rb_define_method(rb_cString, "blank?", rb_str_blank, 0); rb_define_method(rb_cString, "blank_as?", rb_str_blank_as, 0); }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fast_blank-1.0.1 | ext/fast_blank/fast_blank.c |