diff options
author | Pierre Weis <Pierre.Weis@inria.fr> | 1999-02-17 18:51:28 +0000 |
---|---|---|
committer | Pierre Weis <Pierre.Weis@inria.fr> | 1999-02-17 18:51:28 +0000 |
commit | e5567afe2eef93f6d80fad09b8d8e2acb71eae37 (patch) | |
tree | 61a2cb9c25bfe60aca33c0660e214032bc2742cf | |
parent | 47d8487edc19108002c5eb89ab065c5a7216e232 (diff) |
Modification de bprintf pour la rendre plus semblable aux autres
versions de printf.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@2293 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | stdlib/buffer.ml | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/stdlib/buffer.ml b/stdlib/buffer.ml index dba33bfef..4b670a4f9 100644 --- a/stdlib/buffer.ml +++ b/stdlib/buffer.ml @@ -133,13 +133,13 @@ let bprintf b format = let rec doprn start i = if i >= String.length format then begin - if i > start then output b format start (i-start); + if i > start then output b format start (i - start); (Obj.magic ()) end else if format.[i] != '%' then - doprn start (i+1) + doprn start (succ i) else begin - if i > start then output b format start (i-start); + if i > start then output b format start (i - start); let j = skip_args (succ i) in match format.[j] with | '%' -> @@ -172,23 +172,21 @@ let bprintf b format = and skip_args j = match format.[j] with - '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | - ' ' | '.' | '-' -> - skip_args (succ j) - | c -> - j + | '0' .. '9' | ' ' | '.' | '-' -> skip_args (succ j) + | c -> j and dostring i j s = - if j <= i+1 then + if j <= succ i then output_string b s else begin let p = try - int_of_string (String.sub format (i+1) (j-i-1)) + int_of_string (String.sub format (succ i) (j - i - 1)) with _ -> invalid_arg "bprintf: bad %s format" in if p > 0 && String.length s < p then begin - output_string b (String.make (p - String.length s) ' ') + output_string b (String.make (p - String.length s) ' '); + output_string b s end else if p < 0 && String.length s < -p then begin output_string b s; output_string b (String.make (-p - String.length s) ' ') @@ -198,8 +196,8 @@ let bprintf b format = doprn (succ j) (succ j) and doint i j n = - let len = j-i in - let fmt = String.create (len+2) in + let len = j - i in + let fmt = String.create (len + 2) in String.blit format i fmt 0 len; fmt.[len] <- 'l'; fmt.[len + 1] <- format.[j]; @@ -207,7 +205,7 @@ let bprintf b format = doprn (succ j) (succ j) and dofloat i j f = - output_string b (format_float (String.sub format i (j-i+1)) f); + output_string b (format_float (String.sub format i (j - i + 1)) f); doprn (succ j) (succ j) in doprn 0 0 |