diff options
| author | YAMAMOTO Masaya <[email protected]> | 2017-10-13 16:42:35 +0900 |
|---|---|---|
| committer | YAMAMOTO Masaya <[email protected]> | 2017-10-13 16:42:35 +0900 |
| commit | 5d781312caf51bd7fc931e6d3d4d4a59ba964d27 (patch) | |
| tree | 57fd6046057e592d5341615b56b54492e1915baa /mrbgems/mruby-sprintf | |
| parent | 81ea81e05c81a2ce9b7bbf6443c95cd9388af119 (diff) | |
| download | mruby-5d781312caf51bd7fc931e6d3d4d4a59ba964d27.tar.gz mruby-5d781312caf51bd7fc931e6d3d4d4a59ba964d27.zip | |
Support MRB_WIHTOUT_FLOAT to mruby-sprintf
Diffstat (limited to 'mrbgems/mruby-sprintf')
| -rw-r--r-- | mrbgems/mruby-sprintf/src/sprintf.c | 10 | ||||
| -rw-r--r-- | mrbgems/mruby-sprintf/test/sprintf.rb | 7 |
2 files changed, 14 insertions, 3 deletions
diff --git a/mrbgems/mruby-sprintf/src/sprintf.c b/mrbgems/mruby-sprintf/src/sprintf.c index efa0b3d34..7eea1a1f3 100644 --- a/mrbgems/mruby-sprintf/src/sprintf.c +++ b/mrbgems/mruby-sprintf/src/sprintf.c @@ -12,7 +12,9 @@ #include <mruby/string.h> #include <mruby/hash.h> #include <mruby/numeric.h> +#ifndef MRB_WITHOUT_FLOAT #include <math.h> +#endif #include <ctype.h> #define BIT_DIGITS(N) (((N)*146)/485 + 1) /* log2(10) =~ 146/485 */ @@ -20,7 +22,9 @@ #define EXTENDSIGN(n, l) (((~0U << (n)) >> (((n)*(l)) % BITSPERDIG)) & ~(~0U << (n))) mrb_value mrb_str_format(mrb_state *, mrb_int, const mrb_value *, mrb_value); +#ifndef MRB_WITHOUT_FLOAT static void fmt_setup(char*,size_t,int,int,mrb_int,mrb_int); +#endif static char* remove_sign_bits(char *str, int base) @@ -814,10 +818,12 @@ retry: bin_retry: switch (mrb_type(val)) { +#ifndef MRB_WITHOUT_FLOAT case MRB_TT_FLOAT: val = mrb_flo_to_fixnum(mrb, val); if (mrb_fixnum_p(val)) goto bin_retry; break; +#endif case MRB_TT_STRING: val = mrb_str_to_inum(mrb, val, 0, TRUE); goto bin_retry; @@ -990,6 +996,7 @@ retry: } break; +#ifndef MRB_WITHOUT_FLOAT case 'f': case 'g': case 'G': @@ -1069,6 +1076,7 @@ retry: blen += n; } break; +#endif } flags = FNONE; } @@ -1088,6 +1096,7 @@ retry: return result; } +#ifndef MRB_WITHOUT_FLOAT static void fmt_setup(char *buf, size_t size, int c, int flags, mrb_int width, mrb_int prec) { @@ -1114,3 +1123,4 @@ fmt_setup(char *buf, size_t size, int c, int flags, mrb_int width, mrb_int prec) *buf++ = c; *buf = '\0'; } +#endif diff --git a/mrbgems/mruby-sprintf/test/sprintf.rb b/mrbgems/mruby-sprintf/test/sprintf.rb index e3b66ef9c..a5fd4e638 100644 --- a/mrbgems/mruby-sprintf/test/sprintf.rb +++ b/mrbgems/mruby-sprintf/test/sprintf.rb @@ -3,7 +3,8 @@ assert('String#%') do assert_equal "one=1", "one=%d" % 1 - assert_equal "1 one 1.0", "%d %s %3.1f" % [ 1, "one", 1.01 ] + assert_equal "1 one", "%d %s" % [ 1, "one" ] + assert_equal "1.0", "%3.1f" % 1.01 if class_defined?("Float") assert_equal "123 < 456", "%{num} < %<str>s" % { num: 123, str: "456" } assert_equal 15, ("%b" % (1<<14)).size end @@ -34,7 +35,7 @@ assert('String#% with inf') do assert_equal " Inf", "% 3f" % inf assert_equal " Inf", "% 4f" % inf assert_equal " Inf", "% 5f" % inf -end +end if class_defined?("Float") assert('String#% with nan') do nan = Float::NAN @@ -62,7 +63,7 @@ assert('String#% with nan') do assert_equal " NaN", "% 3f" % nan assert_equal " NaN", "% 4f" % nan assert_equal " NaN", "% 5f" % nan -end +end if class_defined?("Float") assert("String#% with invalid chr") do begin |
