script_core 0.2.7 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/Gemfile +2 -2
- data/ext/enterprise_script_service/Rakefile +1 -1
- data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +117 -74
- data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +41 -37
- data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
- data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
- data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
- data/ext/enterprise_script_service/mruby/.travis.yml +2 -2
- data/ext/enterprise_script_service/mruby/.yamllint +8 -0
- data/ext/enterprise_script_service/mruby/AUTHORS +3 -0
- data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
- data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
- data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
- data/ext/enterprise_script_service/mruby/LICENSE +1 -1
- data/ext/enterprise_script_service/mruby/Makefile +1 -1
- data/ext/enterprise_script_service/mruby/README.md +4 -14
- data/ext/enterprise_script_service/mruby/Rakefile +18 -108
- data/ext/enterprise_script_service/mruby/TODO.md +17 -0
- data/ext/enterprise_script_service/mruby/appveyor.yml +31 -25
- data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
- data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +2 -19
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +2 -2
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +1 -18
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +2 -19
- data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_android_armeabi_v7a_neon_hard.rb → build_config/android_armeabi_v7a_neon_hard.rb} +0 -15
- data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +2 -19
- data/ext/enterprise_script_service/mruby/{travis_config.rb → build_config/ci/gcc-clang.rb} +10 -10
- data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_dreamcast_shelf.rb → build_config/dreamcast_shelf.rb} +5 -19
- data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
- data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
- data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
- data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
- data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
- data/ext/enterprise_script_service/mruby/doc/guides/compile.md +138 -49
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
- data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +49 -22
- data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
- data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
- data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
- data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
- data/ext/enterprise_script_service/mruby/doc/opcode.md +93 -107
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +81 -62
- data/ext/enterprise_script_service/mruby/include/mruby.h +137 -96
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +23 -6
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +73 -48
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +79 -48
- data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +4 -1
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +13 -7
- data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +17 -35
- data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
- data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
- data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +64 -14
- data/ext/enterprise_script_service/mruby/include/mruby/khash.h +6 -14
- data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +36 -63
- data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +27 -23
- data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
- data/ext/enterprise_script_service/mruby/include/mruby/proc.h +80 -13
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +10 -15
- data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +29 -19
- data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +26 -7
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -44
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +55 -37
- data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
- data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +75 -32
- data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
- data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -88
- data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
- data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +28 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +41 -34
- data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +19 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +22 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +2 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +430 -399
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +559 -217
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +4774 -4193
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +18 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +8 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +17 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +18 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +30 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +55 -52
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +4 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +99 -87
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +2 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +2 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +7 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +43 -58
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +77 -74
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +38 -88
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +62 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +32 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +20 -40
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +11 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +102 -71
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +4 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +13 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +18 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +6 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +16 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +27 -27
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
- data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
- data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
- data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +0 -20
- data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
- data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
- data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
- data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
- data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
- data/ext/enterprise_script_service/mruby/src/array.c +43 -80
- data/ext/enterprise_script_service/mruby/src/backtrace.c +16 -17
- data/ext/enterprise_script_service/mruby/src/class.c +774 -182
- data/ext/enterprise_script_service/mruby/src/codedump.c +223 -198
- data/ext/enterprise_script_service/mruby/src/debug.c +6 -6
- data/ext/enterprise_script_service/mruby/src/dump.c +466 -141
- data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
- data/ext/enterprise_script_service/mruby/src/error.c +36 -13
- data/ext/enterprise_script_service/mruby/src/etc.c +43 -34
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +5 -6
- data/ext/enterprise_script_service/mruby/src/gc.c +73 -71
- data/ext/enterprise_script_service/mruby/src/hash.c +1050 -707
- data/ext/enterprise_script_service/mruby/src/kernel.c +75 -220
- data/ext/enterprise_script_service/mruby/src/load.c +196 -166
- data/ext/enterprise_script_service/mruby/src/numeric.c +352 -314
- data/ext/enterprise_script_service/mruby/src/object.c +97 -90
- data/ext/enterprise_script_service/mruby/src/print.c +4 -3
- data/ext/enterprise_script_service/mruby/src/proc.c +48 -56
- data/ext/enterprise_script_service/mruby/src/range.c +45 -21
- data/ext/enterprise_script_service/mruby/src/state.c +25 -32
- data/ext/enterprise_script_service/mruby/src/string.c +59 -101
- data/ext/enterprise_script_service/mruby/src/symbol.c +121 -56
- data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
- data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
- data/ext/enterprise_script_service/mruby/src/vm.c +617 -602
- data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
- data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
- data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
- data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
- data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +83 -77
- data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
- data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
- data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
- data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +6 -5
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +10 -14
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +17 -21
- data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
- data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
- data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
- data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
- data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
- data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
- data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
- data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
- data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
- data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
- data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
- data/ext/enterprise_script_service/mruby_config.rb +2 -5
- data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
- data/lib/script_core/version.rb +1 -1
- data/spec/script_core_spec.rb +13 -0
- metadata +61 -23
- data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +0 -24
- data/ext/enterprise_script_service/mruby/TODO +0 -8
- data/ext/enterprise_script_service/mruby/appveyor_config.rb +0 -46
- data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
- data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
- data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
- data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
@@ -3,9 +3,9 @@ mruby-pack (pack / unpack)
|
|
3
3
|
|
4
4
|
mruby-pack provides `Array#pack` and `String#unpack` for mruby.
|
5
5
|
|
6
|
-
|
7
6
|
## Installation
|
8
|
-
|
7
|
+
|
8
|
+
Add the line below into your build configuration:
|
9
9
|
|
10
10
|
```
|
11
11
|
conf.gem :github => 'iij/mruby-pack'
|
@@ -13,8 +13,8 @@ Add the line below into your `build_config.rb`:
|
|
13
13
|
|
14
14
|
There is no dependency on other mrbgems.
|
15
15
|
|
16
|
-
|
17
16
|
## Supported template string
|
17
|
+
|
18
18
|
- A : arbitrary binary string (space padded, count is width)
|
19
19
|
- a : arbitrary binary string (null padded, count is width)
|
20
20
|
- C : 8-bit unsigned (unsigned char)
|
@@ -44,28 +44,25 @@ There is no dependency on other mrbgems.
|
|
44
44
|
- x : null byte
|
45
45
|
- Z : same as "a", except that null is added with *
|
46
46
|
|
47
|
-
|
48
|
-
|
49
47
|
## License
|
50
48
|
|
51
49
|
Copyright (c) 2012 Internet Initiative Japan Inc.
|
52
50
|
Copyright (c) 2017 mruby developers
|
53
51
|
|
54
|
-
Permission is hereby granted, free of charge, to any person obtaining a
|
55
|
-
copy of this software and associated documentation files (the "Software"),
|
56
|
-
to deal in the Software without restriction, including without limitation
|
57
|
-
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
58
|
-
and/or sell copies of the Software, and to permit persons to whom the
|
52
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
53
|
+
copy of this software and associated documentation files (the "Software"),
|
54
|
+
to deal in the Software without restriction, including without limitation
|
55
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
56
|
+
and/or sell copies of the Software, and to permit persons to whom the
|
59
57
|
Software is furnished to do so, subject to the following conditions:
|
60
58
|
|
61
|
-
The above copyright notice and this permission notice shall be included in
|
59
|
+
The above copyright notice and this permission notice shall be included in
|
62
60
|
all copies or substantial portions of the Software.
|
63
61
|
|
64
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
65
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
66
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
67
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
68
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
69
|
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
62
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
63
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
64
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
65
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
66
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
67
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
70
68
|
DEALINGS IN THE SOFTWARE.
|
71
|
-
|
@@ -9,12 +9,15 @@
|
|
9
9
|
#include "mruby/numeric.h"
|
10
10
|
#include "mruby/string.h"
|
11
11
|
#include "mruby/variable.h"
|
12
|
+
#include "mruby/endian.h"
|
12
13
|
|
13
14
|
#include <ctype.h>
|
14
15
|
#include <errno.h>
|
15
|
-
#include <limits.h>
|
16
16
|
#include <string.h>
|
17
17
|
|
18
|
+
#define INT_OVERFLOW_P(n) ((n) < MRB_INT_MIN || (n) > MRB_INT_MAX)
|
19
|
+
#define UINT_OVERFLOW_P(n) ((n) > MRB_INT_MAX)
|
20
|
+
|
18
21
|
struct tmpl {
|
19
22
|
mrb_value str;
|
20
23
|
int idx;
|
@@ -63,36 +66,6 @@ const static unsigned char base64chars[] =
|
|
63
66
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
64
67
|
static unsigned char base64_dec_tab[128];
|
65
68
|
|
66
|
-
#if !defined(BYTE_ORDER) && defined(__BYTE_ORDER__)
|
67
|
-
# define BYTE_ORDER __BYTE_ORDER__
|
68
|
-
#endif
|
69
|
-
#if !defined(BIG_ENDIAN) && defined(__ORDER_BIG_ENDIAN__)
|
70
|
-
# define BIG_ENDIAN __ORDER_BIG_ENDIAN__
|
71
|
-
#endif
|
72
|
-
#if !defined(LITTLE_ENDIAN) && defined(__ORDER_LITTLE_ENDIAN__)
|
73
|
-
# define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
|
74
|
-
#endif
|
75
|
-
|
76
|
-
#ifdef BYTE_ORDER
|
77
|
-
# if BYTE_ORDER == BIG_ENDIAN
|
78
|
-
# define littleendian 0
|
79
|
-
# define check_little_endian() (void)0
|
80
|
-
# elif BYTE_ORDER == LITTLE_ENDIAN
|
81
|
-
# define littleendian 1
|
82
|
-
# define check_little_endian() (void)0
|
83
|
-
# endif
|
84
|
-
#endif
|
85
|
-
#ifndef littleendian
|
86
|
-
/* can't distinguish endian in compile time */
|
87
|
-
static int littleendian = 0;
|
88
|
-
static void
|
89
|
-
check_little_endian(void)
|
90
|
-
{
|
91
|
-
unsigned int n = 1;
|
92
|
-
littleendian = (*(unsigned char *)&n == 1);
|
93
|
-
}
|
94
|
-
#endif
|
95
|
-
|
96
69
|
static unsigned int
|
97
70
|
hex2int(unsigned char ch)
|
98
71
|
{
|
@@ -143,7 +116,7 @@ static int
|
|
143
116
|
pack_c(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags)
|
144
117
|
{
|
145
118
|
str = str_len_ensure(mrb, str, sidx + 1);
|
146
|
-
RSTRING_PTR(str)[sidx] = (char)
|
119
|
+
RSTRING_PTR(str)[sidx] = (char)mrb_integer(o);
|
147
120
|
return 1;
|
148
121
|
}
|
149
122
|
|
@@ -163,7 +136,7 @@ pack_s(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
163
136
|
uint16_t n;
|
164
137
|
|
165
138
|
str = str_len_ensure(mrb, str, sidx + 2);
|
166
|
-
n = (uint16_t)
|
139
|
+
n = (uint16_t)mrb_integer(o);
|
167
140
|
if (flags & PACK_FLAG_LITTLEENDIAN) {
|
168
141
|
RSTRING_PTR(str)[sidx+0] = n % 256;
|
169
142
|
RSTRING_PTR(str)[sidx+1] = n / 256;
|
@@ -197,7 +170,7 @@ pack_l(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
197
170
|
uint32_t n;
|
198
171
|
|
199
172
|
str = str_len_ensure(mrb, str, sidx + 4);
|
200
|
-
n = (uint32_t)
|
173
|
+
n = (uint32_t)mrb_integer(o);
|
201
174
|
if (flags & PACK_FLAG_LITTLEENDIAN) {
|
202
175
|
RSTRING_PTR(str)[sidx+0] = (char)(n & 0xff);
|
203
176
|
RSTRING_PTR(str)[sidx+1] = (char)(n >> 8);
|
@@ -216,7 +189,7 @@ pack_l(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
216
189
|
static void
|
217
190
|
u32tostr(char *buf, size_t len, uint32_t n)
|
218
191
|
{
|
219
|
-
#ifdef
|
192
|
+
#ifdef MRB_NO_STDIO
|
220
193
|
char *bufend = buf + len;
|
221
194
|
char *p = bufend - 1;
|
222
195
|
|
@@ -241,27 +214,7 @@ u32tostr(char *buf, size_t len, uint32_t n)
|
|
241
214
|
memmove(buf, p, bufend - p);
|
242
215
|
#else
|
243
216
|
snprintf(buf, len, "%" PRIu32, n);
|
244
|
-
#endif /*
|
245
|
-
}
|
246
|
-
|
247
|
-
static void
|
248
|
-
i32tostr(char *buf, size_t len, int32_t n)
|
249
|
-
{
|
250
|
-
#ifdef MRB_DISABLE_STDIO
|
251
|
-
if (len < 1) {
|
252
|
-
return;
|
253
|
-
}
|
254
|
-
|
255
|
-
if (n < 0) {
|
256
|
-
*buf ++ = '-';
|
257
|
-
len --;
|
258
|
-
n = -n;
|
259
|
-
}
|
260
|
-
|
261
|
-
u32tostr(buf, len, (uint32_t)n);
|
262
|
-
#else
|
263
|
-
snprintf(buf, len, "%" PRId32, n);
|
264
|
-
#endif /* MRB_DISABLE_STDIO */
|
217
|
+
#endif /* MRB_NO_STDIO */
|
265
218
|
}
|
266
219
|
#endif /* MRB_INT64 */
|
267
220
|
|
@@ -286,24 +239,17 @@ unpack_l(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un
|
|
286
239
|
ul += (uint32_t)src[3];
|
287
240
|
}
|
288
241
|
if (flags & PACK_FLAG_SIGNED) {
|
289
|
-
|
290
|
-
#ifndef MRB_INT64
|
291
|
-
if (!FIXABLE(sl)) {
|
292
|
-
i32tostr(msg, sizeof(msg), sl);
|
293
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Fixnum: %s", msg);
|
294
|
-
}
|
295
|
-
#endif
|
296
|
-
n = sl;
|
242
|
+
n = (int32_t)ul;
|
297
243
|
} else {
|
298
244
|
#ifndef MRB_INT64
|
299
|
-
if (
|
245
|
+
if (UINT_OVERFLOW_P(ul)) {
|
300
246
|
u32tostr(msg, sizeof(msg), ul);
|
301
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to
|
247
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
|
302
248
|
}
|
303
249
|
#endif
|
304
250
|
n = ul;
|
305
251
|
}
|
306
|
-
mrb_ary_push(mrb, ary,
|
252
|
+
mrb_ary_push(mrb, ary, mrb_int_value(mrb, n));
|
307
253
|
return 4;
|
308
254
|
}
|
309
255
|
|
@@ -313,7 +259,7 @@ pack_q(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
313
259
|
uint64_t n;
|
314
260
|
|
315
261
|
str = str_len_ensure(mrb, str, sidx + 8);
|
316
|
-
n = (uint64_t)
|
262
|
+
n = (uint64_t)mrb_integer(o);
|
317
263
|
if (flags & PACK_FLAG_LITTLEENDIAN) {
|
318
264
|
RSTRING_PTR(str)[sidx+0] = (char)(n & 0xff);
|
319
265
|
RSTRING_PTR(str)[sidx+1] = (char)(n >> 8);
|
@@ -339,7 +285,7 @@ pack_q(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
339
285
|
static void
|
340
286
|
u64tostr(char *buf, size_t len, uint64_t n)
|
341
287
|
{
|
342
|
-
#ifdef
|
288
|
+
#ifdef MRB_NO_STDIO
|
343
289
|
char *bufend = buf + len;
|
344
290
|
char *p = bufend - 1;
|
345
291
|
|
@@ -364,13 +310,14 @@ u64tostr(char *buf, size_t len, uint64_t n)
|
|
364
310
|
memmove(buf, p, bufend - p);
|
365
311
|
#else
|
366
312
|
snprintf(buf, len, "%" PRIu64, n);
|
367
|
-
#endif /*
|
313
|
+
#endif /* MRB_NO_STDIO */
|
368
314
|
}
|
369
315
|
|
316
|
+
#ifndef MRB_INT64
|
370
317
|
static void
|
371
318
|
i64tostr(char *buf, size_t len, int64_t n)
|
372
319
|
{
|
373
|
-
#ifdef
|
320
|
+
#ifdef MRB_NO_STDIO
|
374
321
|
if (len < 1) {
|
375
322
|
return;
|
376
323
|
}
|
@@ -384,8 +331,9 @@ i64tostr(char *buf, size_t len, int64_t n)
|
|
384
331
|
u64tostr(buf, len, (uint64_t)n);
|
385
332
|
#else
|
386
333
|
snprintf(buf, len, "%" PRId64, n);
|
387
|
-
#endif /*
|
334
|
+
#endif /* MRB_NO_STDIO */
|
388
335
|
}
|
336
|
+
#endif /* MRB_INT64 */
|
389
337
|
|
390
338
|
static int
|
391
339
|
unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, unsigned int flags)
|
@@ -409,23 +357,25 @@ unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un
|
|
409
357
|
}
|
410
358
|
if (flags & PACK_FLAG_SIGNED) {
|
411
359
|
int64_t sll = ull;
|
412
|
-
|
360
|
+
#ifndef MRB_INT64
|
361
|
+
if (INT_OVERFLOW_P(sll)) {
|
413
362
|
i64tostr(msg, sizeof(msg), sll);
|
414
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to
|
363
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
|
415
364
|
}
|
416
|
-
|
365
|
+
#endif
|
366
|
+
n = (mrb_int)sll;
|
417
367
|
} else {
|
418
|
-
if (
|
368
|
+
if (UINT_OVERFLOW_P(ull)) {
|
419
369
|
u64tostr(msg, sizeof(msg), ull);
|
420
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to
|
370
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
|
421
371
|
}
|
422
|
-
n = ull;
|
372
|
+
n = (mrb_int)ull;
|
423
373
|
}
|
424
|
-
mrb_ary_push(mrb, ary,
|
374
|
+
mrb_ary_push(mrb, ary, mrb_int_value(mrb, n));
|
425
375
|
return 8;
|
426
376
|
}
|
427
377
|
|
428
|
-
#ifndef
|
378
|
+
#ifndef MRB_NO_FLOAT
|
429
379
|
static int
|
430
380
|
pack_double(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags)
|
431
381
|
{
|
@@ -560,7 +510,7 @@ pack_utf8(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, long count,
|
|
560
510
|
int len = 0;
|
561
511
|
uint32_t c = 0;
|
562
512
|
|
563
|
-
c = (uint32_t)
|
513
|
+
c = (uint32_t)mrb_integer(o);
|
564
514
|
|
565
515
|
/* Unicode character */
|
566
516
|
/* from mruby-compiler gem */
|
@@ -828,7 +778,7 @@ unpack_h(mrb_state *mrb, const void *src, int slen, mrb_value ary, int count, un
|
|
828
778
|
}
|
829
779
|
}
|
830
780
|
|
831
|
-
dst = mrb_str_resize(mrb, dst, dptr - dptr0);
|
781
|
+
dst = mrb_str_resize(mrb, dst, (mrb_int)(dptr - dptr0));
|
832
782
|
mrb_ary_push(mrb, ary, dst);
|
833
783
|
return (int)(sptr - sptr0);
|
834
784
|
}
|
@@ -951,7 +901,7 @@ unpack_m(mrb_state *mrb, const void *src, int slen, mrb_value ary, unsigned int
|
|
951
901
|
}
|
952
902
|
|
953
903
|
done:
|
954
|
-
dst = mrb_str_resize(mrb, dst, dptr - dptr0);
|
904
|
+
dst = mrb_str_resize(mrb, dst, (mrb_int)(dptr - dptr0));
|
955
905
|
mrb_ary_push(mrb, ary, dst);
|
956
906
|
return (int)(sptr - sptr0);
|
957
907
|
}
|
@@ -1248,7 +1198,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
|
|
1248
1198
|
if (type == PACK_TYPE_INTEGER) {
|
1249
1199
|
o = mrb_to_int(mrb, o);
|
1250
1200
|
}
|
1251
|
-
#ifndef
|
1201
|
+
#ifndef MRB_NO_FLOAT
|
1252
1202
|
else if (type == PACK_TYPE_FLOAT) {
|
1253
1203
|
if (!mrb_float_p(o)) {
|
1254
1204
|
mrb_float f = mrb_to_flo(mrb, o);
|
@@ -1284,7 +1234,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
|
|
1284
1234
|
case PACK_DIR_STR:
|
1285
1235
|
ridx += pack_a(mrb, o, result, ridx, count, flags);
|
1286
1236
|
break;
|
1287
|
-
#ifndef
|
1237
|
+
#ifndef MRB_NO_FLOAT
|
1288
1238
|
case PACK_DIR_DOUBLE:
|
1289
1239
|
ridx += pack_double(mrb, o, result, ridx, flags);
|
1290
1240
|
break;
|
@@ -1298,7 +1248,8 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
|
|
1298
1248
|
default:
|
1299
1249
|
break;
|
1300
1250
|
}
|
1301
|
-
if (dir == PACK_DIR_STR || dir == PACK_DIR_BASE64
|
1251
|
+
if (dir == PACK_DIR_STR || dir == PACK_DIR_BASE64 || dir == PACK_DIR_HEX) {
|
1252
|
+
/* always consumes 1 entry */
|
1302
1253
|
aidx++;
|
1303
1254
|
break;
|
1304
1255
|
}
|
@@ -1380,7 +1331,7 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single)
|
|
1380
1331
|
case PACK_DIR_QUAD:
|
1381
1332
|
srcidx += unpack_q(mrb, sptr, srclen - srcidx, result, flags);
|
1382
1333
|
break;
|
1383
|
-
#ifndef
|
1334
|
+
#ifndef MRB_NO_FLOAT
|
1384
1335
|
case PACK_DIR_FLOAT:
|
1385
1336
|
srcidx += unpack_float(mrb, sptr, srclen - srcidx, result, flags);
|
1386
1337
|
break;
|
@@ -1425,7 +1376,6 @@ mrb_pack_unpack1(mrb_state *mrb, mrb_value str)
|
|
1425
1376
|
void
|
1426
1377
|
mrb_mruby_pack_gem_init(mrb_state *mrb)
|
1427
1378
|
{
|
1428
|
-
check_little_endian();
|
1429
1379
|
make_base64_dec_tab();
|
1430
1380
|
|
1431
1381
|
mrb_define_method(mrb, mrb->array_class, "pack", mrb_pack_pack, MRB_ARGS_REQ(1));
|
@@ -3,39 +3,10 @@
|
|
3
3
|
#
|
4
4
|
# ISO 15.3.1
|
5
5
|
module Kernel
|
6
|
-
##
|
7
|
-
# Invoke method +print+ on STDOUT and passing +*args+
|
8
|
-
#
|
9
|
-
# ISO 15.3.1.2.10
|
10
|
-
def print(*args)
|
11
|
-
i = 0
|
12
|
-
len = args.size
|
13
|
-
while i < len
|
14
|
-
__printstr__ args[i].to_s
|
15
|
-
i += 1
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
##
|
20
|
-
# Invoke method +puts+ on STDOUT and passing +*args*+
|
21
|
-
#
|
22
|
-
# ISO 15.3.1.2.11
|
23
|
-
def puts(*args)
|
24
|
-
i = 0
|
25
|
-
len = args.size
|
26
|
-
while i < len
|
27
|
-
s = args[i].to_s
|
28
|
-
__printstr__ s
|
29
|
-
__printstr__ "\n" if (s[-1] != "\n")
|
30
|
-
i += 1
|
31
|
-
end
|
32
|
-
__printstr__ "\n" if len == 0
|
33
|
-
nil
|
34
|
-
end
|
35
|
-
|
36
6
|
##
|
37
7
|
# Print human readable object description
|
38
8
|
#
|
9
|
+
# ISO 15.3.1.2.9
|
39
10
|
# ISO 15.3.1.3.34
|
40
11
|
def p(*args)
|
41
12
|
i = 0
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#include <mruby.h>
|
2
2
|
|
3
|
-
#ifdef
|
4
|
-
# error print conflicts '
|
3
|
+
#ifdef MRB_NO_STDIO
|
4
|
+
# error print conflicts 'MRB_NO_STDIO' in your build configuration
|
5
5
|
#endif
|
6
6
|
|
7
7
|
#include <mruby/string.h>
|
@@ -17,39 +17,73 @@
|
|
17
17
|
#endif
|
18
18
|
|
19
19
|
static void
|
20
|
-
printstr(mrb_state *mrb,
|
20
|
+
printstr(mrb_state *mrb, const char *p, mrb_int len)
|
21
21
|
{
|
22
|
-
if (mrb_string_p(obj)) {
|
23
22
|
#if defined(_WIN32)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
mrb_free(mrb, utf16);
|
36
|
-
} else
|
23
|
+
if (isatty(fileno(stdout))) {
|
24
|
+
DWORD written;
|
25
|
+
int wlen = MultiByteToWideChar(CP_UTF8, 0, p, (int)len, NULL, 0);
|
26
|
+
wchar_t* utf16 = (wchar_t*)mrb_malloc(mrb, (wlen+1) * sizeof(wchar_t));
|
27
|
+
if (MultiByteToWideChar(CP_UTF8, 0, p, (int)len, utf16, wlen) > 0) {
|
28
|
+
utf16[wlen] = 0;
|
29
|
+
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),
|
30
|
+
utf16, (DWORD)wlen, &written, NULL);
|
31
|
+
}
|
32
|
+
mrb_free(mrb, utf16);
|
33
|
+
} else
|
37
34
|
#endif
|
38
|
-
|
39
|
-
|
40
|
-
}
|
35
|
+
fwrite(p, (size_t)len, 1, stdout);
|
36
|
+
fflush(stdout);
|
41
37
|
}
|
42
38
|
|
43
|
-
|
44
|
-
/* 15.3.1.3.34 */
|
45
|
-
mrb_value
|
39
|
+
static mrb_value
|
46
40
|
mrb_printstr(mrb_state *mrb, mrb_value self)
|
47
41
|
{
|
48
|
-
mrb_value
|
42
|
+
mrb_value s = mrb_get_arg1(mrb);
|
43
|
+
|
44
|
+
if (mrb_string_p(s)) {
|
45
|
+
printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
|
46
|
+
}
|
47
|
+
return s;
|
48
|
+
}
|
49
|
+
|
50
|
+
/* 15.3.1.2.10 */
|
51
|
+
/* 15.3.1.3.35 */
|
52
|
+
static mrb_value
|
53
|
+
mrb_print(mrb_state *mrb, mrb_value self)
|
54
|
+
{
|
55
|
+
mrb_int argc, i;
|
56
|
+
const mrb_value *argv;
|
49
57
|
|
50
|
-
|
58
|
+
mrb_get_args(mrb, "*", &argv, &argc);
|
59
|
+
for (i=0; i<argc; i++) {
|
60
|
+
mrb_value s = mrb_obj_as_string(mrb, argv[i]);
|
61
|
+
printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
|
62
|
+
}
|
63
|
+
return mrb_nil_value();
|
64
|
+
}
|
65
|
+
|
66
|
+
/* 15.3.1.2.11 */
|
67
|
+
/* 15.3.1.3.39 */
|
68
|
+
static mrb_value
|
69
|
+
mrb_puts(mrb_state *mrb, mrb_value self)
|
70
|
+
{
|
71
|
+
mrb_int argc, i;
|
72
|
+
const mrb_value *argv;
|
51
73
|
|
52
|
-
|
74
|
+
mrb_get_args(mrb, "*", &argv, &argc);
|
75
|
+
for (i=0; i<argc; i++) {
|
76
|
+
mrb_value s = mrb_obj_as_string(mrb, argv[i]);
|
77
|
+
mrb_int len = RSTRING_LEN(s);
|
78
|
+
printstr(mrb, RSTRING_PTR(s), len);
|
79
|
+
if (len == 0 || RSTRING_PTR(s)[len-1] != '\n') {
|
80
|
+
printstr(mrb, "\n", 1);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
if (argc == 0) {
|
84
|
+
printstr(mrb, "\n", 1);
|
85
|
+
}
|
86
|
+
return mrb_nil_value();
|
53
87
|
}
|
54
88
|
|
55
89
|
void
|
@@ -58,6 +92,8 @@ mrb_mruby_print_gem_init(mrb_state* mrb)
|
|
58
92
|
struct RClass *krn;
|
59
93
|
krn = mrb->kernel_module;
|
60
94
|
mrb_define_method(mrb, krn, "__printstr__", mrb_printstr, MRB_ARGS_REQ(1));
|
95
|
+
mrb_define_method(mrb, krn, "print", mrb_print, MRB_ARGS_ANY());
|
96
|
+
mrb_define_method(mrb, krn, "puts", mrb_puts, MRB_ARGS_ANY());
|
61
97
|
}
|
62
98
|
|
63
99
|
void
|