enclave 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +182 -0
- data/Rakefile +30 -0
- data/ext/enclave/enclave.c +390 -0
- data/ext/enclave/extconf.rb +33 -0
- data/ext/enclave/mruby/Makefile +63 -0
- data/ext/enclave/mruby/Rakefile +102 -0
- data/ext/enclave/mruby/benchmark/bm_ao_render.rb +309 -0
- data/ext/enclave/mruby/benchmark/bm_app_lc_fizzbuzz.rb +51 -0
- data/ext/enclave/mruby/benchmark/bm_fib.rb +6 -0
- data/ext/enclave/mruby/benchmark/bm_mandel_term.rb +34 -0
- data/ext/enclave/mruby/benchmark/bm_so_lists.rb +49 -0
- data/ext/enclave/mruby/benchmark/bm_so_mandelbrot.rb +65 -0
- data/ext/enclave/mruby/benchmark/vm_dispatch_bench.c +197 -0
- data/ext/enclave/mruby/benchmark/vm_optimization_bench.rb +513 -0
- data/ext/enclave/mruby/build/host/include/mrbconf.h +230 -0
- data/ext/enclave/mruby/build/host/include/mruby/array.h +303 -0
- data/ext/enclave/mruby/build/host/include/mruby/boxing_nan.h +169 -0
- data/ext/enclave/mruby/build/host/include/mruby/boxing_no.h +59 -0
- data/ext/enclave/mruby/build/host/include/mruby/boxing_word.h +248 -0
- data/ext/enclave/mruby/build/host/include/mruby/class.h +157 -0
- data/ext/enclave/mruby/build/host/include/mruby/common.h +127 -0
- data/ext/enclave/mruby/build/host/include/mruby/compile.h +187 -0
- data/ext/enclave/mruby/build/host/include/mruby/data.h +76 -0
- data/ext/enclave/mruby/build/host/include/mruby/debug.h +75 -0
- data/ext/enclave/mruby/build/host/include/mruby/dump.h +159 -0
- data/ext/enclave/mruby/build/host/include/mruby/endian.h +44 -0
- data/ext/enclave/mruby/build/host/include/mruby/error.h +168 -0
- data/ext/enclave/mruby/build/host/include/mruby/gc.h +77 -0
- data/ext/enclave/mruby/build/host/include/mruby/hash.h +234 -0
- data/ext/enclave/mruby/build/host/include/mruby/internal.h +278 -0
- data/ext/enclave/mruby/build/host/include/mruby/irep.h +142 -0
- data/ext/enclave/mruby/build/host/include/mruby/istruct.h +50 -0
- data/ext/enclave/mruby/build/host/include/mruby/khash.h +455 -0
- data/ext/enclave/mruby/build/host/include/mruby/mempool.h +19 -0
- data/ext/enclave/mruby/build/host/include/mruby/numeric.h +174 -0
- data/ext/enclave/mruby/build/host/include/mruby/object.h +44 -0
- data/ext/enclave/mruby/build/host/include/mruby/opcode.h +73 -0
- data/ext/enclave/mruby/build/host/include/mruby/ops.h +133 -0
- data/ext/enclave/mruby/build/host/include/mruby/presym/id.h +895 -0
- data/ext/enclave/mruby/build/host/include/mruby/presym/scanning.h +82 -0
- data/ext/enclave/mruby/build/host/include/mruby/presym/table.h +1787 -0
- data/ext/enclave/mruby/build/host/include/mruby/presym.h +65 -0
- data/ext/enclave/mruby/build/host/include/mruby/proc.h +184 -0
- data/ext/enclave/mruby/build/host/include/mruby/range.h +77 -0
- data/ext/enclave/mruby/build/host/include/mruby/re.h +16 -0
- data/ext/enclave/mruby/build/host/include/mruby/string.h +428 -0
- data/ext/enclave/mruby/build/host/include/mruby/throw.h +81 -0
- data/ext/enclave/mruby/build/host/include/mruby/value.h +471 -0
- data/ext/enclave/mruby/build/host/include/mruby/variable.h +108 -0
- data/ext/enclave/mruby/build/host/include/mruby/version.h +143 -0
- data/ext/enclave/mruby/build/host/include/mruby.h +1632 -0
- data/ext/enclave/mruby/build/host/mrbc/include/mruby/presym/id.h +281 -0
- data/ext/enclave/mruby/build/host/mrbc/include/mruby/presym/table.h +559 -0
- data/ext/enclave/mruby/build/host/mrbgems/gem_init.c +164 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-array-ext/gem_init.c +650 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-binding/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-catch/gem_init.c +86 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-class-ext/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-compar-ext/gem_init.c +99 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-complex/gem_init.c +362 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-data/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-enum-chain/gem_init.c +229 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-enum-ext/gem_init.c +1420 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-enum-lazy/gem_init.c +602 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-enumerator/gem_init.c +822 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-eval/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-fiber/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-hash-ext/gem_init.c +591 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-kernel-ext/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-math/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-metaprog/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-method/gem_init.c +153 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-numeric-ext/gem_init.c +211 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-object-ext/gem_init.c +94 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-objectspace/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-pack/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-proc-binding/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-proc-ext/gem_init.c +237 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-random/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-range-ext/gem_init.c +205 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-rational/gem_init.c +147 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-set/gem_init.c +487 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-sprintf/gem_init.c +83 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-string-ext/gem_init.c +220 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-struct/gem_init.c +175 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-symbol-ext/gem_init.c +153 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-time/gem_init.c +21 -0
- data/ext/enclave/mruby/build/host/mrbgems/mruby-toplevel-ext/gem_init.c +78 -0
- data/ext/enclave/mruby/build/host/mrblib/mrblib.c +1758 -0
- data/ext/enclave/mruby/build_config/ArduinoDue.rb +72 -0
- data/ext/enclave/mruby/build_config/IntelEdison.rb +69 -0
- data/ext/enclave/mruby/build_config/IntelGalileo.rb +88 -0
- data/ext/enclave/mruby/build_config/RX630.rb +63 -0
- data/ext/enclave/mruby/build_config/android_arm64_v8a.rb +11 -0
- data/ext/enclave/mruby/build_config/android_armeabi_v7a_neon_hard.rb +13 -0
- data/ext/enclave/mruby/build_config/bench.rb +11 -0
- data/ext/enclave/mruby/build_config/boxing.rb +19 -0
- data/ext/enclave/mruby/build_config/chipKITMax32.rb +68 -0
- data/ext/enclave/mruby/build_config/ci/gcc-clang.rb +40 -0
- data/ext/enclave/mruby/build_config/ci/msvc.rb +20 -0
- data/ext/enclave/mruby/build_config/clang-asan.rb +11 -0
- data/ext/enclave/mruby/build_config/cosmopolitan.rb +86 -0
- data/ext/enclave/mruby/build_config/cross-32bit.rb +14 -0
- data/ext/enclave/mruby/build_config/cross-mingw-winetest.rb +90 -0
- data/ext/enclave/mruby/build_config/cross-mingw.rb +14 -0
- data/ext/enclave/mruby/build_config/default.rb +83 -0
- data/ext/enclave/mruby/build_config/dreamcast_shelf.rb +81 -0
- data/ext/enclave/mruby/build_config/emscripten-cxx.rb +12 -0
- data/ext/enclave/mruby/build_config/emscripten.rb +10 -0
- data/ext/enclave/mruby/build_config/gameboyadvance.rb +72 -0
- data/ext/enclave/mruby/build_config/helpers/wine_runner.rb +71 -0
- data/ext/enclave/mruby/build_config/host-cxx.rb +12 -0
- data/ext/enclave/mruby/build_config/host-debug.rb +20 -0
- data/ext/enclave/mruby/build_config/host-f32.rb +14 -0
- data/ext/enclave/mruby/build_config/host-gprof.rb +14 -0
- data/ext/enclave/mruby/build_config/host-m32.rb +15 -0
- data/ext/enclave/mruby/build_config/host-nofloat.rb +22 -0
- data/ext/enclave/mruby/build_config/host-shared.rb +36 -0
- data/ext/enclave/mruby/build_config/i586-pc-msdosdjgpp.rb +76 -0
- data/ext/enclave/mruby/build_config/luckfox_pico.rb +106 -0
- data/ext/enclave/mruby/build_config/milkv_duo.rb +106 -0
- data/ext/enclave/mruby/build_config/minimal.rb +4 -0
- data/ext/enclave/mruby/build_config/mrbc.rb +10 -0
- data/ext/enclave/mruby/build_config/nintendo_switch.rb +73 -0
- data/ext/enclave/mruby/build_config/nintendo_wii.rb +95 -0
- data/ext/enclave/mruby/build_config/no-float.rb +17 -0
- data/ext/enclave/mruby/build_config/playstationportable.rb +78 -0
- data/ext/enclave/mruby/build_config/serenity.rb +26 -0
- data/ext/enclave/mruby/build_config.rb +9 -0
- data/ext/enclave/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +5 -0
- data/ext/enclave/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +23 -0
- data/ext/enclave/mruby/examples/mrbgems/c_and_ruby_extension_example/test/example.rb +7 -0
- data/ext/enclave/mruby/examples/mrbgems/c_extension_example/src/example.c +23 -0
- data/ext/enclave/mruby/examples/mrbgems/c_extension_example/test/example.c +7 -0
- data/ext/enclave/mruby/examples/mrbgems/c_extension_example/test/example.rb +3 -0
- data/ext/enclave/mruby/examples/mrbgems/cdata_extension_example/src/example.c +77 -0
- data/ext/enclave/mruby/examples/mrbgems/cdata_extension_example/test/example.c +7 -0
- data/ext/enclave/mruby/examples/mrbgems/mruby-YOUR-bigint/core/bigint.c +70 -0
- data/ext/enclave/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +5 -0
- data/ext/enclave/mruby/examples/mrbgems/ruby_extension_example/test/example.rb +3 -0
- data/ext/enclave/mruby/include/mrbconf.h +230 -0
- data/ext/enclave/mruby/include/mruby/array.h +303 -0
- data/ext/enclave/mruby/include/mruby/boxing_nan.h +169 -0
- data/ext/enclave/mruby/include/mruby/boxing_no.h +59 -0
- data/ext/enclave/mruby/include/mruby/boxing_word.h +248 -0
- data/ext/enclave/mruby/include/mruby/class.h +157 -0
- data/ext/enclave/mruby/include/mruby/common.h +127 -0
- data/ext/enclave/mruby/include/mruby/compile.h +187 -0
- data/ext/enclave/mruby/include/mruby/data.h +76 -0
- data/ext/enclave/mruby/include/mruby/debug.h +75 -0
- data/ext/enclave/mruby/include/mruby/dump.h +159 -0
- data/ext/enclave/mruby/include/mruby/endian.h +44 -0
- data/ext/enclave/mruby/include/mruby/error.h +168 -0
- data/ext/enclave/mruby/include/mruby/gc.h +77 -0
- data/ext/enclave/mruby/include/mruby/hash.h +234 -0
- data/ext/enclave/mruby/include/mruby/internal.h +278 -0
- data/ext/enclave/mruby/include/mruby/irep.h +142 -0
- data/ext/enclave/mruby/include/mruby/istruct.h +50 -0
- data/ext/enclave/mruby/include/mruby/khash.h +455 -0
- data/ext/enclave/mruby/include/mruby/mempool.h +19 -0
- data/ext/enclave/mruby/include/mruby/numeric.h +174 -0
- data/ext/enclave/mruby/include/mruby/object.h +44 -0
- data/ext/enclave/mruby/include/mruby/opcode.h +73 -0
- data/ext/enclave/mruby/include/mruby/ops.h +133 -0
- data/ext/enclave/mruby/include/mruby/presym/scanning.h +82 -0
- data/ext/enclave/mruby/include/mruby/presym.h +65 -0
- data/ext/enclave/mruby/include/mruby/proc.h +184 -0
- data/ext/enclave/mruby/include/mruby/range.h +77 -0
- data/ext/enclave/mruby/include/mruby/re.h +16 -0
- data/ext/enclave/mruby/include/mruby/string.h +428 -0
- data/ext/enclave/mruby/include/mruby/throw.h +81 -0
- data/ext/enclave/mruby/include/mruby/value.h +471 -0
- data/ext/enclave/mruby/include/mruby/variable.h +108 -0
- data/ext/enclave/mruby/include/mruby/version.h +143 -0
- data/ext/enclave/mruby/include/mruby.h +1632 -0
- data/ext/enclave/mruby/lib/mruby/amalgam.rb +568 -0
- data/ext/enclave/mruby/lib/mruby/build/command.rb +383 -0
- data/ext/enclave/mruby/lib/mruby/build/load_gems.rb +383 -0
- data/ext/enclave/mruby/lib/mruby/build.rb +616 -0
- data/ext/enclave/mruby/lib/mruby/core_ext.rb +61 -0
- data/ext/enclave/mruby/lib/mruby/doc.rb +51 -0
- data/ext/enclave/mruby/lib/mruby/gem.rb +585 -0
- data/ext/enclave/mruby/lib/mruby/lockfile.rb +81 -0
- data/ext/enclave/mruby/lib/mruby/presym.rb +167 -0
- data/ext/enclave/mruby/lib/mruby/source.rb +32 -0
- data/ext/enclave/mruby/mrbgems/default-no-fpu.gembox +3 -0
- data/ext/enclave/mruby/mrbgems/default-no-stdio.gembox +4 -0
- data/ext/enclave/mruby/mrbgems/default.gembox +25 -0
- data/ext/enclave/mruby/mrbgems/full-core.gembox +6 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-dir/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-dir/src/dir_hal.c +193 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-io/mrbgem.rake +8 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-io/src/io_hal.c +602 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-socket/mrbgem.rake +8 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-socket/src/socket_hal.c +158 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-task/README.md +102 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-task/mrbgem.rake +8 -0
- data/ext/enclave/mruby/mrbgems/hal-posix-task/src/task_hal.c +252 -0
- data/ext/enclave/mruby/mrbgems/hal-win-dir/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/hal-win-dir/src/dir_hal.c +249 -0
- data/ext/enclave/mruby/mrbgems/hal-win-io/mrbgem.rake +11 -0
- data/ext/enclave/mruby/mrbgems/hal-win-io/src/io_hal.c +646 -0
- data/ext/enclave/mruby/mrbgems/hal-win-socket/mrbgem.rake +12 -0
- data/ext/enclave/mruby/mrbgems/hal-win-socket/src/socket_hal.c +177 -0
- data/ext/enclave/mruby/mrbgems/hal-win-task/README.md +109 -0
- data/ext/enclave/mruby/mrbgems/hal-win-task/mrbgem.rake +11 -0
- data/ext/enclave/mruby/mrbgems/hal-win-task/src/task_hal.c +187 -0
- data/ext/enclave/mruby/mrbgems/math.gembox +12 -0
- data/ext/enclave/mruby/mrbgems/metaprog.gembox +21 -0
- data/ext/enclave/mruby/mrbgems/mruby-array-ext/README.md +87 -0
- data/ext/enclave/mruby/mrbgems/mruby-array-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +784 -0
- data/ext/enclave/mruby/mrbgems/mruby-array-ext/src/array.c +1583 -0
- data/ext/enclave/mruby/mrbgems/mruby-array-ext/test/array.rb +849 -0
- data/ext/enclave/mruby/mrbgems/mruby-benchmark/README.md +257 -0
- data/ext/enclave/mruby/mrbgems/mruby-benchmark/mrbgem.rake +10 -0
- data/ext/enclave/mruby/mrbgems/mruby-benchmark/mrblib/benchmark.rb +131 -0
- data/ext/enclave/mruby/mrbgems/mruby-benchmark/test/benchmark.rb +244 -0
- data/ext/enclave/mruby/mrbgems/mruby-bigint/README-fgmp.md +154 -0
- data/ext/enclave/mruby/mrbgems/mruby-bigint/README.md +44 -0
- data/ext/enclave/mruby/mrbgems/mruby-bigint/core/bigint.c +6335 -0
- data/ext/enclave/mruby/mrbgems/mruby-bigint/core/bigint.h +117 -0
- data/ext/enclave/mruby/mrbgems/mruby-bigint/mrbgem.rake +10 -0
- data/ext/enclave/mruby/mrbgems/mruby-bigint/test/bigint.rb +157 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-config/README.md +46 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-config/mrbgem.rake +49 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-config/mruby-config +46 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-config/mruby-config.bat +92 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/README.md +63 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +283 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +703 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/mrbgem.rake +10 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +523 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.h +26 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +238 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.h +14 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +88 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +13 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apistring.c +34 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apistring.h +14 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +436 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +509 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +71 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +64 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +768 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +159 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +24 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdberror.h +19 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/README.md +94 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +58 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +808 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_buffer.c +1035 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_buffer.h +185 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_completion.c +797 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_completion.h +132 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_editor.c +1118 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_editor.h +153 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_highlight.c +516 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_highlight.h +95 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_history.c +185 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_history.h +76 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_term.c +491 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_term.h +137 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/README.md +58 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/bintest/mrbc.rb +30 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +15 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +362 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/stub.c +104 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/README.md +47 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +178 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +380 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-strip/README.md +38 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-strip/bintest/mruby_strip.rb +73 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-strip/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby_strip.c +139 -0
- data/ext/enclave/mruby/mrbgems/mruby-binding/README.md +256 -0
- data/ext/enclave/mruby/mrbgems/mruby-binding/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-binding/src/binding.c +518 -0
- data/ext/enclave/mruby/mrbgems/mruby-binding/test/binding.c +14 -0
- data/ext/enclave/mruby/mrbgems/mruby-binding/test/binding.rb +64 -0
- data/ext/enclave/mruby/mrbgems/mruby-catch/README.md +94 -0
- data/ext/enclave/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-catch/mrblib/catch.rb +29 -0
- data/ext/enclave/mruby/mrbgems/mruby-catch/src/catch.c +149 -0
- data/ext/enclave/mruby/mrbgems/mruby-catch/test/catch.rb +86 -0
- data/ext/enclave/mruby/mrbgems/mruby-class-ext/README.md +81 -0
- data/ext/enclave/mruby/mrbgems/mruby-class-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-class-ext/src/class.c +377 -0
- data/ext/enclave/mruby/mrbgems/mruby-class-ext/test/class.rb +46 -0
- data/ext/enclave/mruby/mrbgems/mruby-class-ext/test/module.rb +109 -0
- data/ext/enclave/mruby/mrbgems/mruby-cmath/README.md +45 -0
- data/ext/enclave/mruby/mrbgems/mruby-cmath/mrbgem.rake +8 -0
- data/ext/enclave/mruby/mrbgems/mruby-cmath/src/cmath.c +426 -0
- data/ext/enclave/mruby/mrbgems/mruby-cmath/test/cmath.rb +41 -0
- data/ext/enclave/mruby/mrbgems/mruby-compar-ext/README.md +65 -0
- data/ext/enclave/mruby/mrbgems/mruby-compar-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-compar-ext/mrblib/compar.rb +75 -0
- data/ext/enclave/mruby/mrbgems/mruby-compar-ext/test/compar.rb +21 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/README.md +28 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/core/codegen.c +7316 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/core/keywords +52 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/core/lex.def +207 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/core/node.h +784 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/core/parse.y +8977 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/core/y.tab.c +16136 -0
- data/ext/enclave/mruby/mrbgems/mruby-compiler/mrbgem.rake +42 -0
- data/ext/enclave/mruby/mrbgems/mruby-complex/README.md +55 -0
- data/ext/enclave/mruby/mrbgems/mruby-complex/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-complex/mrblib/complex.rb +259 -0
- data/ext/enclave/mruby/mrbgems/mruby-complex/src/complex.c +597 -0
- data/ext/enclave/mruby/mrbgems/mruby-complex/test/complex.rb +174 -0
- data/ext/enclave/mruby/mrbgems/mruby-data/README.md +126 -0
- data/ext/enclave/mruby/mrbgems/mruby-data/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-data/src/data.c +550 -0
- data/ext/enclave/mruby/mrbgems/mruby-data/test/data.rb +76 -0
- data/ext/enclave/mruby/mrbgems/mruby-dir/README.md +53 -0
- data/ext/enclave/mruby/mrbgems/mruby-dir/include/dir_hal.h +79 -0
- data/ext/enclave/mruby/mrbgems/mruby-dir/mrbgem.rake +35 -0
- data/ext/enclave/mruby/mrbgems/mruby-dir/mrblib/dir.rb +124 -0
- data/ext/enclave/mruby/mrbgems/mruby-dir/src/dir.c +493 -0
- data/ext/enclave/mruby/mrbgems/mruby-dir/test/dir.rb +138 -0
- data/ext/enclave/mruby/mrbgems/mruby-dir/test/dirtest.c +125 -0
- data/ext/enclave/mruby/mrbgems/mruby-encoding/README.md +96 -0
- data/ext/enclave/mruby/mrbgems/mruby-encoding/mrbgem.rake +8 -0
- data/ext/enclave/mruby/mrbgems/mruby-encoding/src/encoding.c +128 -0
- data/ext/enclave/mruby/mrbgems/mruby-encoding/test/numeric.rb +27 -0
- data/ext/enclave/mruby/mrbgems/mruby-encoding/test/string.rb +30 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-chain/README.md +80 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-chain/mrbgem.rake +6 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb +149 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-chain/test/enum_chain.rb +108 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-ext/README.md +487 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +938 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-ext/test/enum.rb +223 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/README.md +91 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +363 -0
- data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +59 -0
- data/ext/enclave/mruby/mrbgems/mruby-enumerator/README.md +89 -0
- data/ext/enclave/mruby/mrbgems/mruby-enumerator/mrbgem.rake +6 -0
- data/ext/enclave/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +861 -0
- data/ext/enclave/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +664 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/README.md +83 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/mrblib/errno.rb +50 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/src/errno.c +335 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/src/gen.rb +18 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/src/known_errors.def +156 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/src/known_errors_def.cstub +780 -0
- data/ext/enclave/mruby/mrbgems/mruby-errno/test/errno.rb +57 -0
- data/ext/enclave/mruby/mrbgems/mruby-error/README.md +103 -0
- data/ext/enclave/mruby/mrbgems/mruby-error/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-error/src/exception.c +143 -0
- data/ext/enclave/mruby/mrbgems/mruby-error/test/exception.c +60 -0
- data/ext/enclave/mruby/mrbgems/mruby-error/test/exception.rb +55 -0
- data/ext/enclave/mruby/mrbgems/mruby-eval/README.md +26 -0
- data/ext/enclave/mruby/mrbgems/mruby-eval/mrbgem.rake +10 -0
- data/ext/enclave/mruby/mrbgems/mruby-eval/src/eval.c +437 -0
- data/ext/enclave/mruby/mrbgems/mruby-eval/test/binding.rb +81 -0
- data/ext/enclave/mruby/mrbgems/mruby-eval/test/eval.rb +185 -0
- data/ext/enclave/mruby/mrbgems/mruby-exit/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-exit/src/mruby_exit.c +83 -0
- data/ext/enclave/mruby/mrbgems/mruby-fiber/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-fiber/src/fiber.c +575 -0
- data/ext/enclave/mruby/mrbgems/mruby-fiber/test/fiber.rb +210 -0
- data/ext/enclave/mruby/mrbgems/mruby-fiber/test/fiber2.rb +155 -0
- data/ext/enclave/mruby/mrbgems/mruby-fiber/test/fibertest.c +87 -0
- data/ext/enclave/mruby/mrbgems/mruby-hash-ext/README.md +392 -0
- data/ext/enclave/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +6 -0
- data/ext/enclave/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +408 -0
- data/ext/enclave/mruby/mrbgems/mruby-hash-ext/src/hash_ext.c +392 -0
- data/ext/enclave/mruby/mrbgems/mruby-hash-ext/test/hash.rb +317 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/README.md +198 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/include/io_hal.h +451 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/include/mruby/io.h +76 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/mrbgem.rake +34 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/file.rb +109 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +24 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/io.rb +303 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/kernel.rb +175 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/src/file.c +1192 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/src/file_test.c +403 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/src/io.c +2260 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/src/mruby_io_gem.c +21 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/test/file.rb +415 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/test/file_test.rb +112 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/test/io.rb +668 -0
- data/ext/enclave/mruby/mrbgems/mruby-io/test/mruby_io_test.c +293 -0
- data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/README.md +165 -0
- data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +316 -0
- data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +134 -0
- data/ext/enclave/mruby/mrbgems/mruby-math/README.md +77 -0
- data/ext/enclave/mruby/mrbgems/mruby-math/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-math/src/math.c +753 -0
- data/ext/enclave/mruby/mrbgems/mruby-math/test/math.rb +201 -0
- data/ext/enclave/mruby/mrbgems/mruby-metaprog/README.md +123 -0
- data/ext/enclave/mruby/mrbgems/mruby-metaprog/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-metaprog/src/metaprog.c +739 -0
- data/ext/enclave/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +465 -0
- data/ext/enclave/mruby/mrbgems/mruby-method/README.md +66 -0
- data/ext/enclave/mruby/mrbgems/mruby-method/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-method/mrblib/method.rb +73 -0
- data/ext/enclave/mruby/mrbgems/mruby-method/src/method.c +890 -0
- data/ext/enclave/mruby/mrbgems/mruby-method/test/method.rb +514 -0
- data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/README.md +78 -0
- data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/mrblib/numeric_ext.rb +125 -0
- data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +527 -0
- data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +137 -0
- data/ext/enclave/mruby/mrbgems/mruby-object-ext/README.md +144 -0
- data/ext/enclave/mruby/mrbgems/mruby-object-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-object-ext/mrblib/object.rb +33 -0
- data/ext/enclave/mruby/mrbgems/mruby-object-ext/src/object.c +128 -0
- data/ext/enclave/mruby/mrbgems/mruby-object-ext/test/nil.rb +16 -0
- data/ext/enclave/mruby/mrbgems/mruby-object-ext/test/object.rb +67 -0
- data/ext/enclave/mruby/mrbgems/mruby-object-ext/test/object_ext.c +17 -0
- data/ext/enclave/mruby/mrbgems/mruby-objectspace/README.md +59 -0
- data/ext/enclave/mruby/mrbgems/mruby-objectspace/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +188 -0
- data/ext/enclave/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +60 -0
- data/ext/enclave/mruby/mrbgems/mruby-os-memsize/README.md +75 -0
- data/ext/enclave/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
- data/ext/enclave/mruby/mrbgems/mruby-os-memsize/src/memsize.c +271 -0
- data/ext/enclave/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
- data/ext/enclave/mruby/mrbgems/mruby-pack/README.md +140 -0
- data/ext/enclave/mruby/mrbgems/mruby-pack/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-pack/src/pack.c +2129 -0
- data/ext/enclave/mruby/mrbgems/mruby-pack/test/pack.rb +202 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-binding/README.md +140 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-binding/mrbgem.rake +10 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-binding/src/proc_binding.c +76 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-binding/test/proc_binding.c +14 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-binding/test/proc_binding.rb +22 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-ext/README.md +107 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +130 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-ext/src/proc.c +267 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-ext/test/proc.c +62 -0
- data/ext/enclave/mruby/mrbgems/mruby-proc-ext/test/proc.rb +130 -0
- data/ext/enclave/mruby/mrbgems/mruby-random/README.md +272 -0
- data/ext/enclave/mruby/mrbgems/mruby-random/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-random/src/random.c +608 -0
- data/ext/enclave/mruby/mrbgems/mruby-random/test/random.rb +151 -0
- data/ext/enclave/mruby/mrbgems/mruby-range-ext/README.md +93 -0
- data/ext/enclave/mruby/mrbgems/mruby-range-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +155 -0
- data/ext/enclave/mruby/mrbgems/mruby-range-ext/src/range.c +236 -0
- data/ext/enclave/mruby/mrbgems/mruby-range-ext/test/range.rb +211 -0
- data/ext/enclave/mruby/mrbgems/mruby-rational/README.md +61 -0
- data/ext/enclave/mruby/mrbgems/mruby-rational/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-rational/mrblib/rational.rb +66 -0
- data/ext/enclave/mruby/mrbgems/mruby-rational/src/rational.c +1269 -0
- data/ext/enclave/mruby/mrbgems/mruby-rational/test/rational.rb +316 -0
- data/ext/enclave/mruby/mrbgems/mruby-set/LICENSE +24 -0
- data/ext/enclave/mruby/mrbgems/mruby-set/README.md +260 -0
- data/ext/enclave/mruby/mrbgems/mruby-set/mrbgem.rake +9 -0
- data/ext/enclave/mruby/mrbgems/mruby-set/mrblib/set.rb +325 -0
- data/ext/enclave/mruby/mrbgems/mruby-set/mruby-set.gem +6 -0
- data/ext/enclave/mruby/mrbgems/mruby-set/src/set.c +1535 -0
- data/ext/enclave/mruby/mrbgems/mruby-set/test/set.rb +764 -0
- data/ext/enclave/mruby/mrbgems/mruby-sleep/README.md +29 -0
- data/ext/enclave/mruby/mrbgems/mruby-sleep/example/sleep.rb +2 -0
- data/ext/enclave/mruby/mrbgems/mruby-sleep/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-sleep/src/sleep.c +187 -0
- data/ext/enclave/mruby/mrbgems/mruby-sleep/test/sleep_test.rb +29 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/README.md +56 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/include/socket_hal.h +83 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/mrbgem.rake +37 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/mrblib/socket.rb +1131 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/src/const.cstub +480 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/src/const.def +172 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/src/gen.rb +17 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/src/socket.c +1374 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/addrinfo.rb +91 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/basicsocket.rb +17 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/ipsocket.rb +44 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/socket.rb +38 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/sockettest.c +84 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/tcpsocket.rb +4 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/udpsocket.rb +16 -0
- data/ext/enclave/mruby/mrbgems/mruby-socket/test/unix.rb +130 -0
- data/ext/enclave/mruby/mrbgems/mruby-sprintf/README.md +235 -0
- data/ext/enclave/mruby/mrbgems/mruby-sprintf/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-sprintf/mrblib/string.rb +24 -0
- data/ext/enclave/mruby/mrbgems/mruby-sprintf/src/sprintf.c +1195 -0
- data/ext/enclave/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +92 -0
- data/ext/enclave/mruby/mrbgems/mruby-strftime/README.md +140 -0
- data/ext/enclave/mruby/mrbgems/mruby-strftime/mrbgem.rake +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-strftime/src/strftime.c +119 -0
- data/ext/enclave/mruby/mrbgems/mruby-strftime/test/strftime.rb +152 -0
- data/ext/enclave/mruby/mrbgems/mruby-string-ext/README.md +886 -0
- data/ext/enclave/mruby/mrbgems/mruby-string-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +166 -0
- data/ext/enclave/mruby/mrbgems/mruby-string-ext/src/string.c +2290 -0
- data/ext/enclave/mruby/mrbgems/mruby-string-ext/test/numeric.rb +27 -0
- data/ext/enclave/mruby/mrbgems/mruby-string-ext/test/range.rb +26 -0
- data/ext/enclave/mruby/mrbgems/mruby-string-ext/test/string.rb +765 -0
- data/ext/enclave/mruby/mrbgems/mruby-struct/README.md +105 -0
- data/ext/enclave/mruby/mrbgems/mruby-struct/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-struct/mrblib/struct.rb +69 -0
- data/ext/enclave/mruby/mrbgems/mruby-struct/src/struct.c +812 -0
- data/ext/enclave/mruby/mrbgems/mruby-struct/test/struct.rb +303 -0
- data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/README.md +50 -0
- data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +72 -0
- data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +79 -0
- data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +55 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/README.md +770 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/examples/inspection.rb +65 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/examples/priority.rb +41 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/examples/producer_consumer.rb +58 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/examples/simple.rb +27 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/examples/statistics.rb +59 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/examples/suspend_resume.rb +47 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/examples/task_pass.rb +21 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/include/task.h +143 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/include/task_hal.h +162 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/mrbgem.rake +36 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/src/task.c +1573 -0
- data/ext/enclave/mruby/mrbgems/mruby-task/test/task.rb +185 -0
- data/ext/enclave/mruby/mrbgems/mruby-test/README.md +7 -0
- data/ext/enclave/mruby/mrbgems/mruby-test/driver.c +315 -0
- data/ext/enclave/mruby/mrbgems/mruby-test/mrbgem.rake +173 -0
- data/ext/enclave/mruby/mrbgems/mruby-test/vformat.c +151 -0
- data/ext/enclave/mruby/mrbgems/mruby-test-inline-struct/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-test-inline-struct/test/inline.c +92 -0
- data/ext/enclave/mruby/mrbgems/mruby-test-inline-struct/test/inline.rb +118 -0
- data/ext/enclave/mruby/mrbgems/mruby-time/README.md +102 -0
- data/ext/enclave/mruby/mrbgems/mruby-time/include/mruby/time.h +27 -0
- data/ext/enclave/mruby/mrbgems/mruby-time/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-time/src/time.c +1739 -0
- data/ext/enclave/mruby/mrbgems/mruby-time/test/time.rb +313 -0
- data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/README.md +32 -0
- data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +5 -0
- data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb +24 -0
- data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +23 -0
- data/ext/enclave/mruby/mrbgems/stdlib-ext.gembox +21 -0
- data/ext/enclave/mruby/mrbgems/stdlib-io.gembox +15 -0
- data/ext/enclave/mruby/mrbgems/stdlib.gembox +63 -0
- data/ext/enclave/mruby/mrblib/10error.rb +23 -0
- data/ext/enclave/mruby/mrblib/array.rb +102 -0
- data/ext/enclave/mruby/mrblib/compar.rb +102 -0
- data/ext/enclave/mruby/mrblib/enum.rb +358 -0
- data/ext/enclave/mruby/mrblib/hash.rb +276 -0
- data/ext/enclave/mruby/mrblib/kernel.rb +45 -0
- data/ext/enclave/mruby/mrblib/numeric.rb +160 -0
- data/ext/enclave/mruby/mrblib/range.rb +98 -0
- data/ext/enclave/mruby/mrblib/string.rb +173 -0
- data/ext/enclave/mruby/mrblib/symbol.rb +8 -0
- data/ext/enclave/mruby/oss-fuzz/mruby_fuzzer.c +18 -0
- data/ext/enclave/mruby/oss-fuzz/proto_to_ruby.h +55 -0
- data/ext/enclave/mruby/src/allocf.c +37 -0
- data/ext/enclave/mruby/src/array.c +2302 -0
- data/ext/enclave/mruby/src/backtrace.c +294 -0
- data/ext/enclave/mruby/src/cdump.c +498 -0
- data/ext/enclave/mruby/src/class.c +4394 -0
- data/ext/enclave/mruby/src/codedump.c +693 -0
- data/ext/enclave/mruby/src/debug.c +290 -0
- data/ext/enclave/mruby/src/dump.c +998 -0
- data/ext/enclave/mruby/src/enum.c +30 -0
- data/ext/enclave/mruby/src/error.c +937 -0
- data/ext/enclave/mruby/src/etc.c +421 -0
- data/ext/enclave/mruby/src/fmt_fp.c +372 -0
- data/ext/enclave/mruby/src/gc.c +1610 -0
- data/ext/enclave/mruby/src/hash.c +2355 -0
- data/ext/enclave/mruby/src/init.c +50 -0
- data/ext/enclave/mruby/src/kernel.c +718 -0
- data/ext/enclave/mruby/src/load.c +760 -0
- data/ext/enclave/mruby/src/mempool.c +225 -0
- data/ext/enclave/mruby/src/numeric.c +2420 -0
- data/ext/enclave/mruby/src/numops.c +112 -0
- data/ext/enclave/mruby/src/object.c +883 -0
- data/ext/enclave/mruby/src/print.c +136 -0
- data/ext/enclave/mruby/src/proc.c +572 -0
- data/ext/enclave/mruby/src/range.c +597 -0
- data/ext/enclave/mruby/src/readfloat.c +228 -0
- data/ext/enclave/mruby/src/readint.c +27 -0
- data/ext/enclave/mruby/src/readnum.c +43 -0
- data/ext/enclave/mruby/src/state.c +247 -0
- data/ext/enclave/mruby/src/string.c +3577 -0
- data/ext/enclave/mruby/src/symbol.c +1023 -0
- data/ext/enclave/mruby/src/value_array.h +28 -0
- data/ext/enclave/mruby/src/variable.c +1475 -0
- data/ext/enclave/mruby/src/version.c +17 -0
- data/ext/enclave/mruby/src/vm.c +3696 -0
- data/ext/enclave/mruby/tasks/amalgam.rake +34 -0
- data/ext/enclave/mruby/tasks/benchmark.rake +93 -0
- data/ext/enclave/mruby/tasks/bin.rake +23 -0
- data/ext/enclave/mruby/tasks/core.rake +12 -0
- data/ext/enclave/mruby/tasks/doc.rake +118 -0
- data/ext/enclave/mruby/tasks/install.rake +40 -0
- data/ext/enclave/mruby/tasks/libmruby.rake +90 -0
- data/ext/enclave/mruby/tasks/mrbgems.rake +152 -0
- data/ext/enclave/mruby/tasks/mrblib.rake +29 -0
- data/ext/enclave/mruby/tasks/presym.rake +57 -0
- data/ext/enclave/mruby/tasks/test.rake +84 -0
- data/ext/enclave/mruby/tasks/toolchains/android.rake +228 -0
- data/ext/enclave/mruby/tasks/toolchains/clang.rake +8 -0
- data/ext/enclave/mruby/tasks/toolchains/emscripten.rake +57 -0
- data/ext/enclave/mruby/tasks/toolchains/gcc.rake +74 -0
- data/ext/enclave/mruby/tasks/toolchains/openwrt.rake +32 -0
- data/ext/enclave/mruby/tasks/toolchains/visualcpp.rake +48 -0
- data/ext/enclave/mruby/test/assert.rb +404 -0
- data/ext/enclave/mruby/test/bintest.rb +55 -0
- data/ext/enclave/mruby/test/t/argumenterror.rb +37 -0
- data/ext/enclave/mruby/test/t/array.rb +478 -0
- data/ext/enclave/mruby/test/t/basicobject.rb +10 -0
- data/ext/enclave/mruby/test/t/bs_block.rb +621 -0
- data/ext/enclave/mruby/test/t/bs_literal.rb +38 -0
- data/ext/enclave/mruby/test/t/class.rb +505 -0
- data/ext/enclave/mruby/test/t/codegen.rb +196 -0
- data/ext/enclave/mruby/test/t/comparable.rb +79 -0
- data/ext/enclave/mruby/test/t/ensure.rb +36 -0
- data/ext/enclave/mruby/test/t/enumerable.rb +134 -0
- data/ext/enclave/mruby/test/t/exception.rb +425 -0
- data/ext/enclave/mruby/test/t/false.rb +31 -0
- data/ext/enclave/mruby/test/t/float.rb +296 -0
- data/ext/enclave/mruby/test/t/gc.rb +45 -0
- data/ext/enclave/mruby/test/t/hash.rb +976 -0
- data/ext/enclave/mruby/test/t/indexerror.rb +6 -0
- data/ext/enclave/mruby/test/t/integer.rb +247 -0
- data/ext/enclave/mruby/test/t/iterations.rb +61 -0
- data/ext/enclave/mruby/test/t/kernel.rb +462 -0
- data/ext/enclave/mruby/test/t/lang.rb +74 -0
- data/ext/enclave/mruby/test/t/literals.rb +386 -0
- data/ext/enclave/mruby/test/t/localjumperror.rb +13 -0
- data/ext/enclave/mruby/test/t/methods.rb +138 -0
- data/ext/enclave/mruby/test/t/module.rb +931 -0
- data/ext/enclave/mruby/test/t/nameerror.rb +28 -0
- data/ext/enclave/mruby/test/t/nil.rb +39 -0
- data/ext/enclave/mruby/test/t/nomethoderror.rb +22 -0
- data/ext/enclave/mruby/test/t/numeric.rb +114 -0
- data/ext/enclave/mruby/test/t/object.rb +10 -0
- data/ext/enclave/mruby/test/t/proc.rb +198 -0
- data/ext/enclave/mruby/test/t/range.rb +194 -0
- data/ext/enclave/mruby/test/t/rangeerror.rb +6 -0
- data/ext/enclave/mruby/test/t/regexperror.rb +4 -0
- data/ext/enclave/mruby/test/t/runtimeerror.rb +6 -0
- data/ext/enclave/mruby/test/t/standarderror.rb +6 -0
- data/ext/enclave/mruby/test/t/string.rb +981 -0
- data/ext/enclave/mruby/test/t/superclass.rb +46 -0
- data/ext/enclave/mruby/test/t/symbol.rb +30 -0
- data/ext/enclave/mruby/test/t/syntax.rb +1296 -0
- data/ext/enclave/mruby/test/t/true.rb +31 -0
- data/ext/enclave/mruby/test/t/typeerror.rb +6 -0
- data/ext/enclave/mruby/test/t/unicode.rb +39 -0
- data/ext/enclave/mruby/test/t/vformat.rb +57 -0
- data/ext/enclave/mruby/tools/lrama/LEGAL.md +12 -0
- data/ext/enclave/mruby/tools/lrama/MIT +21 -0
- data/ext/enclave/mruby/tools/lrama/NEWS.md +696 -0
- data/ext/enclave/mruby/tools/lrama/exe/lrama +7 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/bitmap.rb +34 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/command.rb +68 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/context.rb +499 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/derivation.rb +66 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/example.rb +129 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/path.rb +29 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/production_path.rb +19 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/start_path.rb +23 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/state_item.rb +8 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/transition_path.rb +19 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/triple.rb +23 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples.rb +298 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/diagnostics.rb +36 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/digraph.rb +83 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/auxiliary.rb +9 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/binding.rb +67 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/destructor_code.rb +42 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/initial_action_code.rb +36 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/no_reference_code.rb +30 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/printer_code.rb +42 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/rule_action.rb +92 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code.rb +53 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/counter.rb +17 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/destructor.rb +11 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/error_token.rb +11 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule/resolver.rb +62 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb +40 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule/rule.rb +24 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule.rb +5 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/percent_code.rb +14 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/precedence.rb +13 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/printer.rb +11 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/reference.rb +16 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/rule.rb +75 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/rule_builder.rb +255 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/stdlib.y +122 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/symbol.rb +105 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/symbols/resolver.rb +301 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/symbols.rb +3 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/type.rb +20 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/union.rb +12 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar.rb +407 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar_validator.rb +37 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/grammar_file.rb +40 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/location.rb +115 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/char.rb +11 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/ident.rb +11 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/instantiate_rule.rb +30 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/tag.rb +16 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/user_code.rb +83 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token.rb +70 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer.rb +191 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/logger.rb +21 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/option_parser.rb +169 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/options.rb +28 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/output.rb +459 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/parser.rb +2144 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/report/duration.rb +27 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/report/profile.rb +16 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/report.rb +4 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/state/reduce.rb +37 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/state/reduce_reduce_conflict.rb +11 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/state/resolved_conflict.rb +31 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/state/shift.rb +15 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/state/shift_reduce_conflict.rb +11 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/state.rb +433 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/states/item.rb +91 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/states.rb +595 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/states_reporter.rb +362 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/trace_reporter.rb +45 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama/version.rb +5 -0
- data/ext/enclave/mruby/tools/lrama/lib/lrama.rb +22 -0
- data/ext/enclave/mruby/tools/lrama/template/bison/_yacc.h +71 -0
- data/ext/enclave/mruby/tools/lrama/template/bison/yacc.c +2068 -0
- data/ext/enclave/mruby/tools/lrama/template/bison/yacc.h +40 -0
- data/ext/enclave/sandbox_build_config.rb +15 -0
- data/ext/enclave/sandbox_core.c +722 -0
- data/ext/enclave/sandbox_core.h +87 -0
- data/lib/enclave/result.rb +29 -0
- data/lib/enclave/tool.rb +38 -0
- data/lib/enclave/version.rb +3 -0
- data/lib/enclave.rb +73 -0
- metadata +819 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
assert('Addrinfo') do
|
|
2
|
+
assert_equal(Class, Addrinfo.class)
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
assert('super class of Addrinfo') do
|
|
6
|
+
assert_equal(Object, Addrinfo.superclass)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
assert('Addrinfo.getaddrinfo') do
|
|
10
|
+
ary = Addrinfo.getaddrinfo("localhost", 53, Socket::AF_INET, Socket::SOCK_STREAM)
|
|
11
|
+
assert_true(ary.size >= 1)
|
|
12
|
+
ai = ary[0]
|
|
13
|
+
assert_equal(ai.afamily, Socket::AF_INET)
|
|
14
|
+
assert_equal(ai.pfamily, Socket::PF_INET)
|
|
15
|
+
assert_equal(ai.socktype, Socket::SOCK_STREAM)
|
|
16
|
+
assert_equal(ai.ip_address, '127.0.0.1')
|
|
17
|
+
assert_equal(ai.ip_port, 53)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
assert('Addrinfo.foreach') do
|
|
21
|
+
# assume Addrinfo.getaddrinfo works well
|
|
22
|
+
a = Addrinfo.getaddrinfo("localhost", 80)
|
|
23
|
+
b = []
|
|
24
|
+
Addrinfo.foreach("localhost", 80) { |ai| b << ai }
|
|
25
|
+
assert_equal(a.size, b.size)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
assert('Addrinfo.ip') do
|
|
29
|
+
ai = Addrinfo.ip('127.0.0.1')
|
|
30
|
+
assert_equal('127.0.0.1', ai.ip_address)
|
|
31
|
+
assert_equal(Socket::AF_INET, ai.afamily)
|
|
32
|
+
assert_equal(0, ai.ip_port)
|
|
33
|
+
assert_equal(0, ai.socktype)
|
|
34
|
+
assert_equal(0, ai.protocol)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
assert('Addrinfo.tcp') do
|
|
38
|
+
ai = Addrinfo.tcp('127.0.0.1', 25)
|
|
39
|
+
assert_equal('127.0.0.1', ai.ip_address)
|
|
40
|
+
assert_equal(Socket::AF_INET, ai.afamily)
|
|
41
|
+
assert_equal(25, ai.ip_port)
|
|
42
|
+
assert_equal(Socket::SOCK_STREAM, ai.socktype)
|
|
43
|
+
assert_equal(Socket::IPPROTO_TCP, ai.protocol)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
assert('Addrinfo.udp') do
|
|
47
|
+
ai = Addrinfo.udp('127.0.0.1', 53)
|
|
48
|
+
assert_equal('127.0.0.1', ai.ip_address)
|
|
49
|
+
assert_equal(Socket::AF_INET, ai.afamily)
|
|
50
|
+
assert_equal(53, ai.ip_port)
|
|
51
|
+
assert_equal(Socket::SOCK_DGRAM, ai.socktype)
|
|
52
|
+
assert_equal(Socket::IPPROTO_UDP, ai.protocol)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
assert('Addrinfo.unix') do
|
|
56
|
+
skip "unix is not supported on Windows" if SocketTest.win?
|
|
57
|
+
a1 = Addrinfo.unix('/tmp/sock')
|
|
58
|
+
assert_true(a1.unix?)
|
|
59
|
+
assert_equal('/tmp/sock', a1.unix_path)
|
|
60
|
+
assert_equal(Socket::SOCK_STREAM, a1.socktype)
|
|
61
|
+
a2 = Addrinfo.unix('/tmp/sock', Socket::SOCK_DGRAM)
|
|
62
|
+
assert_equal(Socket::SOCK_DGRAM, a2.socktype)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
assert('Addrinfo#afamily') do
|
|
66
|
+
skip "afamily is not supported on Windows" if SocketTest.win?
|
|
67
|
+
ai4 = Addrinfo.new(Socket.sockaddr_in(1, '127.0.0.1'))
|
|
68
|
+
ai6 = Addrinfo.new(Socket.sockaddr_in(1, '::1'))
|
|
69
|
+
aiu = Addrinfo.new(Socket.sockaddr_un('/tmp/sock'))
|
|
70
|
+
assert_equal(Socket::AF_INET, ai4.afamily)
|
|
71
|
+
assert_equal(Socket::AF_INET6, ai6.afamily)
|
|
72
|
+
assert_equal(Socket::AF_UNIX, aiu.afamily)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# assert('Addrinfo#canonname') do
|
|
76
|
+
|
|
77
|
+
# #getnameinfo
|
|
78
|
+
# assert('Addrinfo#inspect') do
|
|
79
|
+
# assert('Addrinfo#inspect_socket') do
|
|
80
|
+
# assert('Addrinfo#ip?') do
|
|
81
|
+
# assert('Addrinfo#ip_address') do
|
|
82
|
+
# assert('Addrinfo#ip_port') do
|
|
83
|
+
# assert('Addrinfo#ip_unpack') do
|
|
84
|
+
# assert('Addrinfo#ipv4?') do
|
|
85
|
+
# assert('Addrinfo#ipv6?') do
|
|
86
|
+
# assert('Addrinfo#pfamily') do
|
|
87
|
+
# assert('Addrinfo#protocol') do
|
|
88
|
+
# assert('Addrinfo#socktype') do
|
|
89
|
+
# assert('Addrinfo#to_sockaddr') do
|
|
90
|
+
# assert('Addrinfo#unix?') do
|
|
91
|
+
# #unix_path
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
assert('BasicSocket') do
|
|
2
|
+
assert_equal(Class, BasicSocket.class)
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
assert('super class of BasicSocket') do
|
|
6
|
+
assert_equal(IO, BasicSocket.superclass)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
assert('BasicSocket.do_not_reverse_lookup') do
|
|
10
|
+
assert_equal(BasicSocket.do_not_reverse_lookup, true)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
assert('BasicSocket.do_not_reverse_lookup=') do
|
|
14
|
+
BasicSocket.do_not_reverse_lookup = false
|
|
15
|
+
assert_equal(BasicSocket.do_not_reverse_lookup, false)
|
|
16
|
+
BasicSocket.do_not_reverse_lookup = true
|
|
17
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
unless SocketTest.win?
|
|
2
|
+
|
|
3
|
+
# Note: most of tests below will fail if UDPSocket is broken.
|
|
4
|
+
|
|
5
|
+
assert('IPSocket.getaddress') do
|
|
6
|
+
l = IPSocket.getaddress("localhost")
|
|
7
|
+
assert_true (l == "127.0.0.1" or l == "::1")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
assert('IPSocket.addr') do
|
|
11
|
+
localhost = "127.0.0.1"
|
|
12
|
+
s = UDPSocket.new
|
|
13
|
+
s.bind(localhost, 0)
|
|
14
|
+
port = Addrinfo.new(s.getsockname).ip_port
|
|
15
|
+
|
|
16
|
+
a = s.addr
|
|
17
|
+
assert_equal "AF_INET", a[0]
|
|
18
|
+
assert_equal port, a[1]
|
|
19
|
+
assert_equal localhost, a[2]
|
|
20
|
+
assert_equal localhost, a[3]
|
|
21
|
+
s.close
|
|
22
|
+
true
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
assert('IPSocket.peeraddr') do
|
|
26
|
+
localhost = "127.0.0.1"
|
|
27
|
+
server = UDPSocket.new
|
|
28
|
+
server.bind(localhost, 0)
|
|
29
|
+
port = server.local_address.ip_port
|
|
30
|
+
|
|
31
|
+
client = UDPSocket.new
|
|
32
|
+
client.connect(localhost, port)
|
|
33
|
+
|
|
34
|
+
a = client.peeraddr
|
|
35
|
+
assert_equal "AF_INET", a[0]
|
|
36
|
+
assert_equal port, a[1]
|
|
37
|
+
assert_equal localhost, a[2]
|
|
38
|
+
assert_equal localhost, a[3]
|
|
39
|
+
client.close
|
|
40
|
+
server.close
|
|
41
|
+
true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end # win?
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
unless SocketTest.win?
|
|
2
|
+
|
|
3
|
+
assert('Socket.gethostname') do
|
|
4
|
+
assert_true(Socket.gethostname.is_a? String)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
assert('Socket::getaddrinfo') do
|
|
8
|
+
ret = Socket.getaddrinfo("localhost", 53, Socket::AF_INET, Socket::SOCK_DGRAM)
|
|
9
|
+
assert_true ret.size >= 1
|
|
10
|
+
a = ret[0]
|
|
11
|
+
assert_equal "AF_INET", a[0]
|
|
12
|
+
assert_equal 53, a[1]
|
|
13
|
+
# documents says it's a hostname but CRuby returns an address
|
|
14
|
+
#assert_equal "127.0.0.1", a[2]
|
|
15
|
+
assert_equal "127.0.0.1", a[3]
|
|
16
|
+
assert_equal Socket::AF_INET, a[4]
|
|
17
|
+
assert_equal Socket::SOCK_DGRAM, a[5]
|
|
18
|
+
assert_equal Socket::IPPROTO_UDP, a[6] unless SocketTest.cygwin?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
assert('Socket#recvfrom') do
|
|
22
|
+
begin
|
|
23
|
+
sstr = "abcdefg"
|
|
24
|
+
s = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
|
|
25
|
+
c = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
|
|
26
|
+
s.bind(Socket.sockaddr_in(0, "127.0.0.1"))
|
|
27
|
+
c.send sstr, 0, s.getsockname
|
|
28
|
+
rstr, ai = s.recvfrom sstr.size
|
|
29
|
+
|
|
30
|
+
assert_equal sstr, rstr
|
|
31
|
+
assert_equal "127.0.0.1", ai.ip_address
|
|
32
|
+
ensure
|
|
33
|
+
s.close rescue nil
|
|
34
|
+
c.close rescue nil
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end # win?
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
|
|
3
|
+
#include <mruby.h>
|
|
4
|
+
#include <mruby/error.h>
|
|
5
|
+
|
|
6
|
+
#if defined(_WIN32)
|
|
7
|
+
|
|
8
|
+
#include <io.h>
|
|
9
|
+
|
|
10
|
+
#if defined(_MSC_VER) || \
|
|
11
|
+
(defined(MRB_MINGW32_VERSION) && MRB_MINGW32_VERSION < 3021) || \
|
|
12
|
+
(defined(MRB_MINGW64_VERSION) && MRB_MINGW64_VERSION < 4000)
|
|
13
|
+
|
|
14
|
+
#include <fcntl.h>
|
|
15
|
+
#include <sys/stat.h>
|
|
16
|
+
#define open _open
|
|
17
|
+
#define close _close
|
|
18
|
+
#define unlink _unlink
|
|
19
|
+
|
|
20
|
+
static int
|
|
21
|
+
mkstemp(char *p)
|
|
22
|
+
{
|
|
23
|
+
int fd;
|
|
24
|
+
char* fname = _mktemp(p);
|
|
25
|
+
if (fname == NULL)
|
|
26
|
+
return -1;
|
|
27
|
+
fd = open(fname, O_RDWR | O_CREAT | O_EXCL, _S_IREAD | _S_IWRITE);
|
|
28
|
+
if (fd >= 0)
|
|
29
|
+
return fd;
|
|
30
|
+
return -1;
|
|
31
|
+
}
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
#else
|
|
35
|
+
|
|
36
|
+
#include <unistd.h>
|
|
37
|
+
|
|
38
|
+
#endif
|
|
39
|
+
|
|
40
|
+
mrb_value
|
|
41
|
+
mrb_sockettest_tmppath(mrb_state *mrb, mrb_value klass)
|
|
42
|
+
{
|
|
43
|
+
char name[] = "mruby-socket.XXXXXXXX";
|
|
44
|
+
int fd = mkstemp(name);
|
|
45
|
+
if (fd == -1) {
|
|
46
|
+
mrb_sys_fail(mrb, 0);
|
|
47
|
+
}
|
|
48
|
+
if (close(fd) == -1) {
|
|
49
|
+
mrb_sys_fail(mrb, 0);
|
|
50
|
+
}
|
|
51
|
+
if (unlink(name) == -1) {
|
|
52
|
+
mrb_sys_fail(mrb, 0);
|
|
53
|
+
}
|
|
54
|
+
return mrb_str_new_cstr(mrb, name);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
mrb_value
|
|
58
|
+
mrb_sockettest_win_p(mrb_state *mrb, mrb_value klass)
|
|
59
|
+
{
|
|
60
|
+
#ifdef _WIN32
|
|
61
|
+
return mrb_true_value();
|
|
62
|
+
#else
|
|
63
|
+
return mrb_false_value();
|
|
64
|
+
#endif
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
mrb_value
|
|
68
|
+
mrb_sockettest_cygwin_p(mrb_state *mrb, mrb_value klass)
|
|
69
|
+
{
|
|
70
|
+
#if defined(__CYGWIN__) || defined(__CYGWIN32__)
|
|
71
|
+
return mrb_true_value();
|
|
72
|
+
#else
|
|
73
|
+
return mrb_false_value();
|
|
74
|
+
#endif
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
void
|
|
78
|
+
mrb_mruby_socket_gem_test(mrb_state* mrb)
|
|
79
|
+
{
|
|
80
|
+
struct RClass *c = mrb_define_module(mrb, "SocketTest");
|
|
81
|
+
mrb_define_class_method(mrb, c, "tmppath", mrb_sockettest_tmppath, MRB_ARGS_NONE());
|
|
82
|
+
mrb_define_class_method(mrb, c, "win?", mrb_sockettest_win_p, MRB_ARGS_NONE());
|
|
83
|
+
mrb_define_class_method(mrb, c, "cygwin?", mrb_sockettest_cygwin_p, MRB_ARGS_NONE());
|
|
84
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
assert('UDPSocket.new') do
|
|
2
|
+
s = UDPSocket.new
|
|
3
|
+
assert_true(s.is_a? UDPSocket)
|
|
4
|
+
s.close
|
|
5
|
+
s = UDPSocket.new(Socket::AF_INET6)
|
|
6
|
+
assert_true(s.is_a? UDPSocket)
|
|
7
|
+
s.close
|
|
8
|
+
true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
#assert('UDPSocket#connect') do
|
|
12
|
+
#assert('UDPSocket#send') do
|
|
13
|
+
#assert('UDPSocket#recv') do
|
|
14
|
+
|
|
15
|
+
#assert('UDPSocket#bind') do
|
|
16
|
+
#assert('UDPSocket#recvfrom_nonblock') do
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
unless SocketTest.win? || SocketTest.cygwin?
|
|
2
|
+
|
|
3
|
+
def unixserver_test_block
|
|
4
|
+
path = SocketTest.tmppath
|
|
5
|
+
File.unlink path rescue nil
|
|
6
|
+
begin
|
|
7
|
+
result = yield path
|
|
8
|
+
ensure
|
|
9
|
+
File.unlink path rescue nil
|
|
10
|
+
end
|
|
11
|
+
result
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def with_unix_server
|
|
15
|
+
unixserver_test_block do |path|
|
|
16
|
+
UNIXServer.open(path) { |server|
|
|
17
|
+
yield path, server
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def with_unix_client
|
|
23
|
+
with_unix_server do |path, server|
|
|
24
|
+
UNIXSocket.open(path) do |csock|
|
|
25
|
+
ssock = server.accept
|
|
26
|
+
begin
|
|
27
|
+
yield path, server, ssock, csock
|
|
28
|
+
ensure
|
|
29
|
+
ssock.close unless ssock.closed? rescue nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
assert('UNIXServer.new') do
|
|
36
|
+
unixserver_test_block do |path|
|
|
37
|
+
server = UNIXServer.new(path)
|
|
38
|
+
assert_true server.is_a? UNIXServer
|
|
39
|
+
server.close
|
|
40
|
+
File.unlink path
|
|
41
|
+
|
|
42
|
+
s2 = nil
|
|
43
|
+
result = UNIXServer.open(path) { |s1|
|
|
44
|
+
assert_true s1.is_a? UNIXServer
|
|
45
|
+
s2 = s1
|
|
46
|
+
1234
|
|
47
|
+
}
|
|
48
|
+
assert_equal 1234, result
|
|
49
|
+
assert_true s2.is_a? UNIXServer
|
|
50
|
+
assert_true s2.closed?
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# assert('UNIXServer#accept_nonblock') - would block if fails
|
|
55
|
+
|
|
56
|
+
assert('UNIXServer#addr') do
|
|
57
|
+
with_unix_server do |path, server|
|
|
58
|
+
assert_equal [ "AF_UNIX", path], server.addr
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
assert('UNIXServer#path') do
|
|
63
|
+
with_unix_server do |path, server|
|
|
64
|
+
assert_equal path, server.path
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# assert('UNIXServer#peeraddr') - will raise a runtime exception
|
|
69
|
+
|
|
70
|
+
assert('UNIXServer#listen') do
|
|
71
|
+
with_unix_server do |path, server|
|
|
72
|
+
assert_equal 0, server.listen(1)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
assert('UNIXServer#sysaccept') do
|
|
77
|
+
with_unix_server do |path, server|
|
|
78
|
+
UNIXSocket.open(path) do |csock|
|
|
79
|
+
begin
|
|
80
|
+
fd = server.sysaccept
|
|
81
|
+
assert_true fd.kind_of? Integer
|
|
82
|
+
ensure
|
|
83
|
+
IO._sysclose(fd) rescue nil
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
assert('UNIXSocket.new') do
|
|
90
|
+
with_unix_server do |path, server|
|
|
91
|
+
c = UNIXSocket.new(path)
|
|
92
|
+
assert_true c.is_a? UNIXSocket
|
|
93
|
+
c.close
|
|
94
|
+
true
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
assert('UNIXSocket#addr') do
|
|
99
|
+
with_unix_client do |path, server, ssock, csock|
|
|
100
|
+
assert_equal [ "AF_UNIX", path ], ssock.addr
|
|
101
|
+
assert_equal [ "AF_UNIX", "" ], csock.addr
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
assert('UNIXSocket#path') do
|
|
106
|
+
with_unix_client do |path, server, ssock, csock|
|
|
107
|
+
assert_equal path, ssock.path
|
|
108
|
+
assert_equal "", csock.path
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
assert('UNIXSocket#peeraddr') do
|
|
113
|
+
with_unix_client do |path, server, ssock, csock|
|
|
114
|
+
assert_equal [ "AF_UNIX", "" ], ssock.peeraddr
|
|
115
|
+
assert_equal [ "AF_UNIX", path ], csock.peeraddr
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
assert('UNIXSocket#recvfrom') do
|
|
120
|
+
with_unix_client do |path, server, ssock, csock|
|
|
121
|
+
str = "0123456789"
|
|
122
|
+
ssock.send str, 0
|
|
123
|
+
a = csock.recvfrom(8)
|
|
124
|
+
assert_equal str[0, 8], a[0]
|
|
125
|
+
assert_equal "AF_UNIX", a[1][0]
|
|
126
|
+
# a[1][1] would be "" or something
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end # SocketTest.win?
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# mruby-sprintf
|
|
2
|
+
|
|
3
|
+
This mrbgem provides `sprintf` functionality for mruby. It allows you to format strings according to a specified format string, similar to the `sprintf` function in C or other languages.
|
|
4
|
+
|
|
5
|
+
## Functionality
|
|
6
|
+
|
|
7
|
+
- Provides the `sprintf` kernel function.
|
|
8
|
+
- Adds the `%` operator to the `String` class as an alias for `sprintf`.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
You can use `sprintf` or the `String#%` operator for string formatting:
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
# Using sprintf
|
|
16
|
+
str = sprintf("Hello, %s! You are %d years old.", "World", 30)
|
|
17
|
+
puts str # Output: Hello, World! You are 30 years old.
|
|
18
|
+
|
|
19
|
+
# Using String#%
|
|
20
|
+
str2 = "The value is %.2f" % 12.3456
|
|
21
|
+
puts str2 # Output: The value is 12.35
|
|
22
|
+
|
|
23
|
+
# Using String#% with an array of arguments
|
|
24
|
+
str3 = "%d + %d = %d" % [1, 2, 1+2]
|
|
25
|
+
puts str3 # Output: 1 + 2 = 3
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Format Specifiers
|
|
29
|
+
|
|
30
|
+
This mrbgem supports a wide range of format specifiers, flags, width, and precision options. For a comprehensive list and detailed explanation of all supported format specifiers and their behavior, please refer to the extensive comments within the C source file: [`src/sprintf.c`](src/sprintf.c).
|
|
31
|
+
|
|
32
|
+
## Format Specifiers Details
|
|
33
|
+
|
|
34
|
+
The `sprintf` function in this mrbgem supports a variety of field type characters that control how arguments are interpreted and formatted.
|
|
35
|
+
|
|
36
|
+
### Integer Formats
|
|
37
|
+
|
|
38
|
+
| Field | Description |
|
|
39
|
+
| :---- | :---------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| `b` | Convert argument as a binary number. Negative numbers will be displayed as a two's complement prefixed with `..1`. |
|
|
41
|
+
| `B` | Equivalent to `b`, but uses an uppercase `0B` for prefix in the alternative format (when `#` flag is used). |
|
|
42
|
+
| `d` | Convert argument as a decimal number. |
|
|
43
|
+
| `i` | Identical to `d`. |
|
|
44
|
+
| `o` | Convert argument as an octal number. Negative numbers will be displayed as a two's complement prefixed with `..7`. |
|
|
45
|
+
| `u` | Identical to `d`. (In many `sprintf` implementations, `u` is for unsigned decimal, but here it behaves like `d`). |
|
|
46
|
+
| `x` | Convert argument as a hexadecimal number. Negative numbers will be displayed as a two's complement prefixed with `..f`. |
|
|
47
|
+
| `X` | Equivalent to `x`, but uses uppercase letters for hexadecimal digits (e.g., `0XFF` vs `0xff`). |
|
|
48
|
+
|
|
49
|
+
### Float Formats
|
|
50
|
+
|
|
51
|
+
| Field | Description |
|
|
52
|
+
| :---- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
53
|
+
| `e` | Convert floating-point argument into exponential notation (e.g., `[-]d.dddddde[+-]dd`). Precision specifies digits after the decimal point (default 6). |
|
|
54
|
+
| `E` | Equivalent to `e`, but uses an uppercase `E` for the exponent. |
|
|
55
|
+
| `f` | Convert floating-point argument as `[-]ddd.dddddd`. Precision specifies digits after the decimal point. |
|
|
56
|
+
| `g` | Converts a floating-point number using `e` or `f` form based on exponent and precision. Precision specifies significant digits. |
|
|
57
|
+
| `G` | Equivalent to `g`, but uses an uppercase `E` in exponent form if applicable. |
|
|
58
|
+
|
|
59
|
+
### Other Formats
|
|
60
|
+
|
|
61
|
+
| Field | Description |
|
|
62
|
+
| :---- | :-------------------------------------------------------------------------------------------------------------- |
|
|
63
|
+
| `c` | Argument is treated as the numeric code for a single character or a single character string itself. |
|
|
64
|
+
| `p` | Argument's `inspect` method is called, and the result is substituted. |
|
|
65
|
+
| `s` | Argument is a string to be substituted. If precision is specified, at most that many characters will be copied. |
|
|
66
|
+
| `%` | A literal percent sign (`%`) itself will be displayed. No argument is taken. |
|
|
67
|
+
|
|
68
|
+
### Flags
|
|
69
|
+
|
|
70
|
+
Flags modify the behavior of the format specifiers:
|
|
71
|
+
|
|
72
|
+
| Flag | Applies to | Meaning |
|
|
73
|
+
| :--------- | :---------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
74
|
+
| `space` | Numeric Formats (bBdiouxX, aAeEfgG) | Leave a space at the start of non-negative numbers. For `o`, `x`, `X`, `b`, `B`, uses a minus sign with absolute value for negative values. |
|
|
75
|
+
| `(digit)$` | All | Specifies the absolute argument number for this field (e.g., `%2$d` uses the second argument). Cannot be mixed with relative argument numbers. |
|
|
76
|
+
| `#` | bBoxX, aAeEfgG | Use an alternative format. For `o`, increases precision to make the first digit `0` if not formatted as complement. For `x`, `X`, `b`, `B` (non-zero), prefixes with `0x`, `0X`, `0b`, `0B`. For `e`, `E`, `f`, `g`, `G`, forces a decimal point. For `g`, `G`, do not remove trailing zeros. |
|
|
77
|
+
| `+` | Numeric Formats | Add a leading plus sign (`+`) to non-negative numbers. For `o`, `x`, `X`, `b`, `B`, uses a minus sign with absolute value for negative values. |
|
|
78
|
+
| `-` | All | Left-justify the result of this conversion. |
|
|
79
|
+
| `0` (zero) | Numeric Formats | Pad with zeros, not spaces. For `o`, `x`, `X`, `b`, `B`, radix-1 is used for negative numbers formatted as complements. |
|
|
80
|
+
| `*` | All | Use the next argument as the field width. If negative, left-justifies. If `*` is followed by a number and `$`, use that argument as width (e.g., `%*1$d`). |
|
|
81
|
+
|
|
82
|
+
## Further Examples (from C source comments)
|
|
83
|
+
|
|
84
|
+
Here are more examples illustrating the use of flags, width, and precision, adapted from the comments in `src/sprintf.c`.
|
|
85
|
+
|
|
86
|
+
### Examples of Flags
|
|
87
|
+
|
|
88
|
+
```ruby
|
|
89
|
+
# '+' and space flag specifies the sign of non-negative numbers.
|
|
90
|
+
puts sprintf("%d", 123) #=> "123"
|
|
91
|
+
puts sprintf("%+d", 123) #=> "+123"
|
|
92
|
+
puts sprintf("% d", 123) #=> " 123"
|
|
93
|
+
|
|
94
|
+
# '#' flag for 'o' increases number of digits to show '0'.
|
|
95
|
+
# '+' and space flag changes format of negative numbers.
|
|
96
|
+
puts sprintf("%o", 123) #=> "173"
|
|
97
|
+
puts sprintf("%#o", 123) #=> "0173"
|
|
98
|
+
puts sprintf("%+o", -123) #=> "-173"
|
|
99
|
+
puts sprintf("%o", -123) #=> "..7605"
|
|
100
|
+
puts sprintf("%#o", -123) #=> "..7605"
|
|
101
|
+
|
|
102
|
+
# '#' flag for 'x' add a prefix '0x' for non-zero numbers.
|
|
103
|
+
# '+' and space flag disables complements for negative numbers.
|
|
104
|
+
puts sprintf("%x", 123) #=> "7b"
|
|
105
|
+
puts sprintf("%#x", 123) #=> "0x7b"
|
|
106
|
+
puts sprintf("%+x", -123) #=> "-7b"
|
|
107
|
+
puts sprintf("%x", -123) #=> "..f85"
|
|
108
|
+
puts sprintf("%#x", -123) #=> "0x..f85" # Note: mruby's output might differ slightly for complements with #
|
|
109
|
+
puts sprintf("%#x", 0) #=> "0"
|
|
110
|
+
|
|
111
|
+
# '#' for 'X' uses the prefix '0X'.
|
|
112
|
+
puts sprintf("%X", 123) #=> "7B"
|
|
113
|
+
puts sprintf("%#X", 123) #=> "0X7B"
|
|
114
|
+
|
|
115
|
+
# '#' flag for 'b' add a prefix '0b' for non-zero numbers.
|
|
116
|
+
# '+' and space flag disables complements for negative numbers.
|
|
117
|
+
puts sprintf("%b", 123) #=> "1111011"
|
|
118
|
+
puts sprintf("%#b", 123) #=> "0b1111011"
|
|
119
|
+
puts sprintf("%+b", -123) #=> "-1111011"
|
|
120
|
+
puts sprintf("%b", -123) #=> "..10000101"
|
|
121
|
+
puts sprintf("%#b", -123) #=> "0b..10000101" # Note: mruby's output might differ slightly for complements with #
|
|
122
|
+
puts sprintf("%#b", 0) #=> "0"
|
|
123
|
+
|
|
124
|
+
# '#' for 'B' uses the prefix '0B'.
|
|
125
|
+
puts sprintf("%B", 123) #=> "1111011"
|
|
126
|
+
puts sprintf("%#B", 123) #=> "0B1111011"
|
|
127
|
+
|
|
128
|
+
# '#' for 'e' forces to show the decimal point.
|
|
129
|
+
puts sprintf("%.0e", 1) #=> "1e+00"
|
|
130
|
+
puts sprintf("%#.0e", 1) #=> "1.e+00"
|
|
131
|
+
|
|
132
|
+
# '#' for 'f' forces to show the decimal point.
|
|
133
|
+
puts sprintf("%.0f", 1234) #=> "1234"
|
|
134
|
+
puts sprintf("%#.0f", 1234) #=> "1234."
|
|
135
|
+
|
|
136
|
+
# '#' for 'g' forces to show the decimal point.
|
|
137
|
+
# It also disables stripping lowest zeros.
|
|
138
|
+
puts sprintf("%g", 123.4) #=> "123.4"
|
|
139
|
+
puts sprintf("%#g", 123.4) #=> "123.400"
|
|
140
|
+
puts sprintf("%g", 123456) #=> "123456"
|
|
141
|
+
puts sprintf("%#g", 123456) #=> "123456."
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Examples of Width
|
|
145
|
+
|
|
146
|
+
The width specifies the minimum number of characters that will be written.
|
|
147
|
+
Padding is typically done with spaces, or with zeros if the `0` flag is used.
|
|
148
|
+
|
|
149
|
+
```ruby
|
|
150
|
+
# padding is done by spaces, width=20
|
|
151
|
+
# 0 or radix-1. <------------------>
|
|
152
|
+
puts sprintf("%20d", 123) #=> " 123"
|
|
153
|
+
puts sprintf("%+20d", 123) #=> " +123"
|
|
154
|
+
puts sprintf("%020d", 123) #=> "00000000000000000123"
|
|
155
|
+
puts sprintf("%+020d", 123) #=> "+0000000000000000123"
|
|
156
|
+
puts sprintf("% 020d", 123) #=> " 0000000000000000123"
|
|
157
|
+
puts sprintf("%-20d", 123) #=> "123 "
|
|
158
|
+
puts sprintf("%-+20d", 123) #=> "+123 "
|
|
159
|
+
puts sprintf("%- 20d", 123) #=> " 123 "
|
|
160
|
+
puts sprintf("%020x", -123) #=> "..ffffffffffffffff85" # Output for negative hex with 0-padding can vary
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Examples of Precision
|
|
164
|
+
|
|
165
|
+
For numeric fields, precision controls the number of decimal places or minimum number of digits.
|
|
166
|
+
For strings, it determines the maximum number of characters.
|
|
167
|
+
|
|
168
|
+
```ruby
|
|
169
|
+
# precision for 'd', 'o', 'x' and 'b' is minimum number of digits
|
|
170
|
+
# <------>
|
|
171
|
+
puts sprintf("%20.8d", 123) #=> " 00000123"
|
|
172
|
+
puts sprintf("%20.8o", 123) #=> " 00000173"
|
|
173
|
+
puts sprintf("%20.8x", 123) #=> " 0000007b"
|
|
174
|
+
puts sprintf("%20.8b", 123) #=> " 01111011"
|
|
175
|
+
puts sprintf("%20.8d", -123) #=> " -00000123"
|
|
176
|
+
puts sprintf("%20.8o", -123) #=> " ..777605" # Complemented output
|
|
177
|
+
puts sprintf("%20.8x", -123) #=> " ..ffff85" # Complemented output
|
|
178
|
+
puts sprintf("%20.8b", -11) #=> " ..110101" # Complemented output
|
|
179
|
+
|
|
180
|
+
# "0x" and "0b" for '#x' and '#b' is not counted for precision,
|
|
181
|
+
# but "0" for '#o' is counted. <------>
|
|
182
|
+
puts sprintf("%#20.8d", 123) #=> " 00000123"
|
|
183
|
+
puts sprintf("%#20.8o", 123) #=> " 00000173" # '#' with 'o' and precision
|
|
184
|
+
puts sprintf("%#20.8x", 123) #=> " 0x0000007b"
|
|
185
|
+
puts sprintf("%#20.8b", 123) #=> " 0b01111011"
|
|
186
|
+
puts sprintf("%#20.8d", -123) #=> " -00000123"
|
|
187
|
+
puts sprintf("%#20.8o", -123) #=> " ..777605" # Complemented output
|
|
188
|
+
puts sprintf("%#20.8x", -123) #=> " 0x..ffff85" # Complemented output with #
|
|
189
|
+
puts sprintf("%#20.8b", -11) #=> " 0b..110101" # Complemented output with #
|
|
190
|
+
|
|
191
|
+
# precision for 'e' is number of digits after the decimal point
|
|
192
|
+
# <------>
|
|
193
|
+
puts sprintf("%20.8e", 1234.56789) #=> " 1.23456789e+03"
|
|
194
|
+
|
|
195
|
+
# precision for 'f' is number of digits after the decimal point
|
|
196
|
+
# <------>
|
|
197
|
+
puts sprintf("%20.8f", 1234.56789) #=> " 1234.56789000"
|
|
198
|
+
|
|
199
|
+
# precision for 'g' is number of significant digits
|
|
200
|
+
# <------->
|
|
201
|
+
puts sprintf("%20.8g", 1234.56789) #=> " 1234.5679"
|
|
202
|
+
# <------->
|
|
203
|
+
puts sprintf("%20.8g", 123456789) #=> " 1.2345679e+08"
|
|
204
|
+
|
|
205
|
+
# precision for 's' is maximum number of characters
|
|
206
|
+
# <------>
|
|
207
|
+
puts sprintf("%20.8s", "string test") #=> " string t"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### General Examples
|
|
211
|
+
|
|
212
|
+
```ruby
|
|
213
|
+
puts sprintf("%d %04x", 123, 123) #=> "123 007b"
|
|
214
|
+
puts sprintf("%08b '%4s'", 123, 123) #=> "01111011 ' 123'" # Note: mruby output for %s with number might differ
|
|
215
|
+
puts sprintf("%1$*2$s %2$d %1$s", "hello", 8) #=> " hello 8 hello"
|
|
216
|
+
puts sprintf("%1$*2$s %2$d", "hello", -8) #=> "hello -8"
|
|
217
|
+
puts sprintf("%+g:% g:%-g", 1.23, 1.23, 1.23) #=> "+1.23: 1.23:1.23"
|
|
218
|
+
puts sprintf("%u", -123) #=> "-123"
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Named References
|
|
222
|
+
|
|
223
|
+
For more complex formatting, Ruby supports a reference by name.
|
|
224
|
+
`%<name>s` style uses format style, but `%{name}` style doesn't (in standard Ruby, mruby might vary).
|
|
225
|
+
|
|
226
|
+
```ruby
|
|
227
|
+
puts sprintf("%<foo>d : %<bar>f", { :foo => 1, :bar => 2.0 }) # Using a float for %f
|
|
228
|
+
#=> "1 : 2.000000"
|
|
229
|
+
|
|
230
|
+
# The %{name} style might behave differently or not be supported in the same way as CRuby.
|
|
231
|
+
# Standard CRuby example:
|
|
232
|
+
# puts sprintf("%{foo}f", { :foo => 1 }) # => "1f" (This specific syntax might not apply or work in mruby)
|
|
233
|
+
# For mruby, stick to %<name>type for named arguments:
|
|
234
|
+
puts sprintf("%<foo>s", { :foo => "test" }) #=> "test"
|
|
235
|
+
```
|