Class: LibLouis::BrailleCharacter

Inherits:
Object
  • Object
show all
Defined in:
ext/liblouis/braille_character.c

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'ext/liblouis/braille_character.c', line 64

static VALUE
ll_character_initialize(int argc, VALUE *argv, VALUE self)
{
    VALUE value = INT2FIX(0);
    uint8_t mask;
    ll_character_t *character;

    rb_check_frozen(self);
    rb_scan_args(argc, argv, "01", &value);
    TypedData_Get_Struct(self, ll_character_t, &ll_character_type, character);
    mask = ll_mask_from_value(value);
    rb_check_frozen(self);
    character->mask = mask;
    rb_obj_freeze(self);
    return self;
}

Instance Method Details

#==(other) ⇒ Object



140
141
142
143
144
145
146
# File 'ext/liblouis/braille_character.c', line 140

static VALUE
ll_character_equal(VALUE self, VALUE other)
{
    if (!rb_typeddata_is_kind_of(other, &ll_character_type))
        return Qfalse;
    return ll_character_mask(self) == ll_character_mask(other) ? Qtrue : Qfalse;
}

#dot1?Boolean

Returns:

  • (Boolean)

#dot2?Boolean

Returns:

  • (Boolean)

#dot3?Boolean

Returns:

  • (Boolean)

#dot4?Boolean

Returns:

  • (Boolean)

#dot5?Boolean

Returns:

  • (Boolean)

#dot6?Boolean

Returns:

  • (Boolean)

#dot7?Boolean

Returns:

  • (Boolean)

#dot8?Boolean

Returns:

  • (Boolean)

#dotsObject



115
116
117
118
119
120
121
122
123
124
125
126
# File 'ext/liblouis/braille_character.c', line 115

static VALUE
ll_character_dots(VALUE self)
{
    uint8_t mask = ll_character_mask(self);
    VALUE dots = rb_ary_new_capa(8);
    int dot;

    for (dot = 1; dot <= 8; dot++)
        if (mask & (1u << (dot - 1)))
            rb_ary_push(dots, INT2FIX(dot));
    return dots;
}

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


140
141
142
143
144
145
146
# File 'ext/liblouis/braille_character.c', line 140

static VALUE
ll_character_equal(VALUE self, VALUE other)
{
    if (!rb_typeddata_is_kind_of(other, &ll_character_type))
        return Qfalse;
    return ll_character_mask(self) == ll_character_mask(other) ? Qtrue : Qfalse;
}

#hashObject



148
149
150
151
152
# File 'ext/liblouis/braille_character.c', line 148

static VALUE
ll_character_hash(VALUE self)
{
    return rb_hash(UINT2NUM(ll_character_mask(self)));
}

#initialize_copy(source) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'ext/liblouis/braille_character.c', line 81

static VALUE
ll_character_initialize_copy(VALUE self, VALUE source)
{
    ll_character_t *character;

    if (self == source)
        return self;
    rb_obj_init_copy(self, source);
    rb_check_frozen(self);
    TypedData_Get_Struct(self, ll_character_t, &ll_character_type, character);
    character->mask = ll_character_mask(source);
    return self;
}

#inspectObject



154
155
156
157
158
159
# File 'ext/liblouis/braille_character.c', line 154

static VALUE
ll_character_inspect(VALUE self)
{
    return rb_sprintf("#<LibLouis::BrailleCharacter dots=%+"PRIsVALUE" mask=%u>",
                      ll_character_dots(self), (unsigned int)ll_character_mask(self));
}

#maskObject Also known as: to_i



128
129
130
131
132
# File 'ext/liblouis/braille_character.c', line 128

static VALUE
ll_character_mask_value(VALUE self)
{
    return UINT2NUM(ll_character_mask(self));
}

#unicode_characterObject Also known as: to_s



134
135
136
137
138
# File 'ext/liblouis/braille_character.c', line 134

static VALUE
ll_character_unicode(VALUE self)
{
    return rb_enc_uint_chr(0x2800u + ll_character_mask(self), rb_utf8_encoding());
}