Class: ICU::CharsetDetector
- Inherits:
-
Object
- Object
- ICU::CharsetDetector
- Defined in:
- lib/icu/charset_detector.rb,
ext/icu/icu_charset_detector.c
Instance Method Summary collapse
-
#detect(str) ⇒ Object
no input text has been provided.
- #detect_all(str) ⇒ Object
- #detectable_charsets ⇒ Object
- #initialize(*args) ⇒ Object constructor
- #input_filter ⇒ Object (also: #input_filter_enabled?)
- #input_filter=(flag) ⇒ Object
Constructor Details
#initialize(*args) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'ext/icu/icu_charset_detector.c', line 66
VALUE detector_initialize(int argc, VALUE* argv, VALUE self)
{
GET_DETECTOR(this);
this->rb_instance = self;
this->service = NULL;
UErrorCode status = U_ZERO_ERROR;
this->service = ucsdet_open(&status);
if (U_FAILURE(status)) {
icu_rb_raise_icu_error(status);
}
this->dummy_str = ALLOC_N(char, 1);
this->dummy_str[0] = '\0';
return self;
}
|
Instance Method Details
#detect(str) ⇒ Object
no input text has been provided
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'ext/icu/icu_charset_detector.c', line 105
VALUE detector_detect(VALUE self, VALUE str)
{
StringValue(str);
GET_DETECTOR(this);
detector_set_text(this, str);
UErrorCode status = U_ZERO_ERROR;
const UCharsetMatch* match = ucsdet_detect(this->service, &status);
if (U_FAILURE(status)) {
icu_rb_raise_icu_error(status);
}
VALUE rb_match = detector_populate_match_struct(match);
detector_reset_text(this);
return rb_match;
}
|
#detect_all(str) ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'ext/icu/icu_charset_detector.c', line 122
VALUE detector_detect_all(VALUE self, VALUE str)
{
StringValue(str);
GET_DETECTOR(this);
detector_set_text(this, str);
UErrorCode status = U_ZERO_ERROR;
int32_t len_matches = 0;
const UCharsetMatch** matches = ucsdet_detectAll(this->service, &len_matches, &status);
if (U_FAILURE(status)) {
icu_rb_raise_icu_error(status);
}
VALUE result = rb_ary_new2(3); // pre-allocate some slots
for (int32_t i = 0; i < len_matches; ++i) {
rb_ary_push(result, detector_populate_match_struct(matches[i]));
}
detector_reset_text(this);
return result;
}
|
#detectable_charsets ⇒ Object
162 163 164 165 166 167 168 |
# File 'ext/icu/icu_charset_detector.c', line 162
VALUE detector_detectable_charsets(VALUE self)
{
GET_DETECTOR(this);
UErrorCode status = U_ZERO_ERROR;
UEnumeration* charsets = ucsdet_getAllDetectableCharsets(this->service, &status);
return icu_enum_to_rb_ary(charsets, status, 28);
}
|
#input_filter ⇒ Object Also known as: input_filter_enabled?
149 150 151 152 153 |
# File 'ext/icu/icu_charset_detector.c', line 149
VALUE detector_get_input_filter(VALUE self)
{
GET_DETECTOR(this);
return detector_get_input_filter_internal(this);
}
|
#input_filter=(flag) ⇒ Object
155 156 157 158 159 160 |
# File 'ext/icu/icu_charset_detector.c', line 155
VALUE detector_set_input_filter(VALUE self, VALUE flag)
{
GET_DETECTOR(this);
ucsdet_enableInputFilter(this->service, flag == Qtrue ? TRUE : FALSE);
return detector_get_input_filter_internal(this);
}
|