Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
327a3e2f
Commit
327a3e2f
authored
Apr 05, 2014
by
Damien George
Browse files
Merge pull request #435 from dhylands/str-modulo-float
Allow floating point arguments with %d,i,u,o,x,X formats
parents
23419a2f
f81a49e4
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/objstr.c
View file @
327a3e2f
...
...
@@ -528,6 +528,15 @@ static bool arg_looks_numeric(mp_obj_t arg) {
;
}
static
machine_int_t
arg_as_int
(
mp_obj_t
arg
)
{
#if MICROPY_ENABLE_FLOAT
if
(
MP_OBJ_IS_TYPE
(
arg
,
&
mp_type_float
))
{
return
mp_obj_get_float
(
arg
);
}
#endif
return
mp_obj_get_int
(
arg
);
}
mp_obj_t
str_format
(
uint
n_args
,
const
mp_obj_t
*
args
)
{
assert
(
MP_OBJ_IS_STR
(
args
[
0
]));
...
...
@@ -991,7 +1000,7 @@ STATIC mp_obj_t str_modulo_format(mp_obj_t pattern, uint n_args, const mp_obj_t
case
'd'
:
case
'i'
:
case
'u'
:
pfenv_print_int
(
&
pfenv_vstr
,
mp_obj_get
_int
(
arg
),
1
,
10
,
'a'
,
flags
,
fill
,
width
);
pfenv_print_int
(
&
pfenv_vstr
,
arg_as
_int
(
arg
),
1
,
10
,
'a'
,
flags
,
fill
,
width
);
break
;
#if MICROPY_ENABLE_FLOAT
...
...
@@ -1009,7 +1018,7 @@ STATIC mp_obj_t str_modulo_format(mp_obj_t pattern, uint n_args, const mp_obj_t
if
(
alt
)
{
flags
|=
PF_FLAG_SHOW_PREFIX
;
}
pfenv_print_int
(
&
pfenv_vstr
,
mp_obj_get
_int
(
arg
),
1
,
8
,
'a'
,
flags
,
fill
,
width
);
pfenv_print_int
(
&
pfenv_vstr
,
arg_as
_int
(
arg
),
1
,
8
,
'a'
,
flags
,
fill
,
width
);
break
;
case
'r'
:
...
...
@@ -1034,14 +1043,14 @@ STATIC mp_obj_t str_modulo_format(mp_obj_t pattern, uint n_args, const mp_obj_t
if
(
alt
)
{
flags
|=
PF_FLAG_SHOW_PREFIX
;
}
pfenv_print_int
(
&
pfenv_vstr
,
mp_obj_get
_int
(
arg
),
1
,
16
,
'a'
,
flags
,
fill
,
width
);
pfenv_print_int
(
&
pfenv_vstr
,
arg_as
_int
(
arg
),
1
,
16
,
'a'
,
flags
,
fill
,
width
);
break
;
case
'X'
:
if
(
alt
)
{
flags
|=
PF_FLAG_SHOW_PREFIX
;
}
pfenv_print_int
(
&
pfenv_vstr
,
mp_obj_get
_int
(
arg
),
1
,
16
,
'A'
,
flags
,
fill
,
width
);
pfenv_print_int
(
&
pfenv_vstr
,
arg_as
_int
(
arg
),
1
,
16
,
'A'
,
flags
,
fill
,
width
);
break
;
default:
...
...
tests/basics/string-format-modulo.py
View file @
327a3e2f
...
...
@@ -21,6 +21,14 @@ try:
except
TypeError
:
print
(
"TypeError"
)
print
(
"%s"
%
True
)
print
(
"%s"
%
1
)
print
(
"%s"
%
1.0
)
print
(
"%r"
%
True
)
print
(
"%r"
%
1
)
print
(
"%r"
%
1.0
)
print
(
"%c"
%
48
)
print
(
"%c"
%
'a'
)
print
(
"%10s"
%
'abc'
)
...
...
@@ -29,9 +37,20 @@ print("%d" % 10)
print
(
"%+d"
%
10
)
print
(
"% d"
%
10
)
print
(
"%d"
%
-
10
)
print
(
"%d"
%
1.0
)
print
(
"%d"
%
True
)
print
(
"%i"
%
-
10
)
print
(
"%i"
%
1.0
)
print
(
"%i"
%
True
)
print
(
"%u"
%
-
10
)
print
(
"%u"
%
1.0
)
print
(
"%u"
%
True
)
print
(
"%x"
%
18
)
print
(
"%x"
%
18.0
)
print
(
"%o"
%
18
)
print
(
"%o"
%
18.0
)
print
(
"%X"
%
18
)
print
(
"%X"
%
18.0
)
print
(
"%#x"
%
18
)
print
(
"%#X"
%
18
)
print
(
"%#6x"
%
18
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment