Ignore:
Timestamp:
Jul 9, 2020, 8:51:43 AM (4 years ago)
Author:
coas-nagasima
Message:

mrubyを2.1.1に更新

Location:
EcnlProtoTool/trunk/mruby-2.1.1
Files:
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-symbol-ext/mrblib/symbol.rb

    r321 r439  
    33
    44  alias intern to_sym
    5 
    6   def to_proc
    7     ->(obj,*args,&block) do
    8       obj.__send__(self, *args, &block)
    9     end
    10   end
    115
    126  ##
     
    4943    return nil unless other.kind_of?(Symbol)
    5044    lhs =  self.to_s; lhs.upcase!
    51     rhs = other.to_s; rhs.upcase!
     45    rhs = other.to_s.upcase
    5246    lhs <=> rhs
     47  end
     48
     49  ##
     50  # call-seq:
     51  #   sym.casecmp?(other)  -> true, false, or nil
     52  #
     53  # Returns true if sym and other_sym are equal after case folding,
     54  # false if they are not equal, and nil if other_sym is not a string.
     55
     56  def casecmp?(sym)
     57    c = self.casecmp(sym)
     58    return nil if c.nil?
     59    return c == 0
    5360  end
    5461
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-symbol-ext/src/symbol.c

    r331 r439  
    22#include <mruby/khash.h>
    33#include <mruby/array.h>
    4 
    5 typedef struct symbol_name {
    6   size_t len;
    7   const char *name;
    8 } symbol_name;
     4#include <mruby/string.h>
    95
    106/*
     
    2319 *                                     :wait2, :$>]
    2420 */
     21#ifdef MRB_ENABLE_ALL_SYMBOLS
    2522static mrb_value
    2623mrb_sym_all_symbols(mrb_state *mrb, mrb_value self)
     
    3027
    3128  for (i=1, lim=mrb->symidx+1; i<lim; i++) {
    32     mrb_ary_push(mrb, ary, mrb_symbol_value(i));
     29    mrb_sym sym = i<<1;
     30    mrb_ary_push(mrb, ary, mrb_symbol_value(sym));
    3331  }
    3432
    3533  return ary;
    3634}
     35#endif
    3736
    3837/*
     
    4645{
    4746  mrb_int len;
    48   mrb_sym2name_len(mrb, mrb_symbol(self), &len);
     47#ifdef MRB_UTF8_STRING
     48  mrb_int byte_len;
     49  const char *name = mrb_sym_name_len(mrb, mrb_symbol(self), &byte_len);
     50  len = mrb_utf8_strlen(name, byte_len);
     51#else
     52  mrb_sym_name_len(mrb, mrb_symbol(self), &len);
     53#endif
    4954  return mrb_fixnum_value(len);
    5055}
     
    5459{
    5560  struct RClass *s = mrb->symbol_class;
     61#ifdef MRB_ENABLE_ALL_SYMBOLS
    5662  mrb_define_class_method(mrb, s, "all_symbols", mrb_sym_all_symbols, MRB_ARGS_NONE());
     63#endif
    5764  mrb_define_method(mrb, s, "length", mrb_sym_length, MRB_ARGS_NONE());
    5865  mrb_define_method(mrb, s, "size", mrb_sym_length, MRB_ARGS_NONE());
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-symbol-ext/test/symbol.rb

    r321 r439  
     1# coding: utf-8
    12##
    23# Symbol(Ext) Test
    34
    4 assert('Symbol#to_proc') do
    5   assert_equal 5, :abs.to_proc[-5]
     5if Symbol.respond_to?(:all_symbols)
     6  assert('Symbol.all_symbols') do
     7    foo = [:__symbol_test_1, :__symbol_test_2, :__symbol_test_3].sort
     8    symbols = Symbol.all_symbols.select{|sym|sym.to_s.include? '__symbol_test'}.sort
     9    assert_equal foo, symbols
     10  end
    611end
    712
    8 assert('Symbol.all_symbols') do
    9   foo = [:__symbol_test_1, :__symbol_test_2, :__symbol_test_3].sort
    10   symbols = Symbol.all_symbols.select{|sym|sym.to_s.include? '__symbol_test'}.sort
    11   assert_equal foo, symbols
    12 end
    13 
    14 assert("Symbol#length") do
    15   assert_equal 5, :hello.size
    16   assert_equal 5, :mruby.length
     13%w[size length].each do |n|
     14  assert("Symbol##{n}") do
     15    assert_equal 5, :hello.__send__(n)
     16    assert_equal 4, :"aA\0b".__send__(n)
     17    if __ENCODING__ == "UTF-8"
     18      assert_equal 8, :"こんにちは世界!".__send__(n)
     19      assert_equal 4, :"aあ\0b".__send__(n)
     20    else
     21      assert_equal 22, :"こんにちは世界!".__send__(n)
     22      assert_equal 6, :"aあ\0b".__send__(n)
     23    end
     24  end
    1725end
    1826
Note: See TracChangeset for help on using the changeset viewer.