mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
71cb3c2e3a
ROM method tables used static mrb_mt_tbl variables shared across the process. The next pointer in each wrapper was mutated by mrb_mt_init_rom(), causing cross-state contamination when multiple mrb_state instances existed. Allocate mrb_mt_tbl wrappers per-state via mrb_malloc(). The const mrb_mt_entry[] arrays remain static and shared. Wrappers are tracked in mrb->rom_mt and freed at mrb_close(). Remove MRB_MT_ROM_TAB macro; add MRB_MT_INIT_ROM macro that auto-computes size and calls the new mrb_mt_init_rom(). Co-authored-by: Claude <noreply@anthropic.com>
mruby-symbol-ext
This gem extends mruby's Symbol class with additional useful methods.
Methods
Here are the methods added to the Symbol class:
capitalize
- call-seq:
sym.capitalize -> symbol - Returns a new symbol with the first character converted to uppercase and the remainder to lowercase. Equivalent to
sym.to_s.capitalize.intern.
downcase
- call-seq:
sym.downcase -> symbol - Returns a new symbol with all characters converted to lowercase. Equivalent to
sym.to_s.downcase.intern.
upcase
- call-seq:
sym.upcase -> symbol - Returns a new symbol with all characters converted to uppercase. Equivalent to
sym.to_s.upcase.intern.
casecmp(other_symbol)
- call-seq:
sym.casecmp(other) -> -1, 0, +1 or nil - Performs a case-insensitive comparison between two symbols. Returns -1, 0, or +1 if
other_symbolis a symbol. Returnsnilifother_symbolis not a symbol.
casecmp?(other_symbol)
- call-seq:
sym.casecmp?(other) -> true, false, or nil - Returns
trueif the receiver andother_symbolare equal after case folding,falseif they are not equal. Returnsnilifother_symbolis not a symbol.
empty?
- call-seq:
sym.empty? -> true or false - Returns
trueif the symbol's string representation is empty (i.e.,:""),falseotherwise.
length / size
- call-seq:
sym.length -> integersym.size -> integer
- Returns the length of the symbol's string representation.
sizeis an alias forlength.
Symbol.all_symbols (Conditional)
- call-seq:
Symbol.all_symbols => array - Returns an array of all symbols currently in mruby's symbol table.
- Note: This method is only available if mruby is compiled with the
MRB_USE_ALL_SYMBOLSdefine.