mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
support center spec
This commit is contained in:
parent
4811d9c4dc
commit
25cca8c58f
13
src/vm.cpp
13
src/vm.cpp
@ -405,7 +405,10 @@ PyObject* VM::format(Str spec, PyObject* obj){
|
||||
}
|
||||
}
|
||||
char align;
|
||||
if(spec[0] == '>'){
|
||||
if(spec[0] == '^'){
|
||||
align = '^';
|
||||
spec = spec.substr(1);
|
||||
}else if(spec[0] == '>'){
|
||||
align = '>';
|
||||
spec = spec.substr(1);
|
||||
}else if(spec[0] == '<'){
|
||||
@ -452,9 +455,17 @@ PyObject* VM::format(Str spec, PyObject* obj){
|
||||
}
|
||||
if(width != -1 && width > ret.length()){
|
||||
int pad = width - ret.length();
|
||||
if(align == '>' || align == '<'){
|
||||
std::string padding(pad, pad_c);
|
||||
if(align == '>') ret = padding.c_str() + ret;
|
||||
else ret = ret + padding.c_str();
|
||||
}else{ // ^
|
||||
int pad_left = pad / 2;
|
||||
int pad_right = pad - pad_left;
|
||||
std::string padding_left(pad_left, pad_c);
|
||||
std::string padding_right(pad_right, pad_c);
|
||||
ret = padding_left.c_str() + ret + padding_right.c_str();
|
||||
}
|
||||
}
|
||||
return VAR(ret);
|
||||
}
|
||||
|
@ -35,6 +35,10 @@ assert f'{a:>10}' == ' 10'
|
||||
assert f'{a:<10}' == '10 '
|
||||
assert f'{a:<10.2f}' == '10.00 '
|
||||
assert f'{a:>10.2f}' == ' 10.00'
|
||||
|
||||
assert f'{a:^10}' == ' 10 '
|
||||
assert f'{a:^10.2f}' == ' 10.00 '
|
||||
|
||||
assert f'{a:3d}' == ' 10'
|
||||
assert f'{a:10d}' == ' 10'
|
||||
assert f'{a:1d}' == '10'
|
||||
@ -61,3 +65,10 @@ assert f'{obj.b:10s}' == '123 '
|
||||
a = [(1,2), 3, obj]
|
||||
assert f'{a[0][1]}' == '2'
|
||||
assert f'abc{a[-1].b:10}==={1234}' == 'abc123 ===1234'
|
||||
|
||||
assert f'{"text":10}' == 'text '
|
||||
assert f'{"test":*>10}' == '******test'
|
||||
assert f'{"test":*<10}' == 'test******'
|
||||
assert f'{"test":*^10}' == '***test***'
|
||||
assert f'{"test":*^11}' == '***test****'
|
||||
assert f'{12345:0>10}' == '0000012345'
|
Loading…
x
Reference in New Issue
Block a user