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
19
src/vm.cpp
19
src/vm.cpp
@ -405,7 +405,10 @@ PyObject* VM::format(Str spec, PyObject* obj){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
char align;
|
char align;
|
||||||
if(spec[0] == '>'){
|
if(spec[0] == '^'){
|
||||||
|
align = '^';
|
||||||
|
spec = spec.substr(1);
|
||||||
|
}else if(spec[0] == '>'){
|
||||||
align = '>';
|
align = '>';
|
||||||
spec = spec.substr(1);
|
spec = spec.substr(1);
|
||||||
}else if(spec[0] == '<'){
|
}else if(spec[0] == '<'){
|
||||||
@ -452,9 +455,17 @@ PyObject* VM::format(Str spec, PyObject* obj){
|
|||||||
}
|
}
|
||||||
if(width != -1 && width > ret.length()){
|
if(width != -1 && width > ret.length()){
|
||||||
int pad = width - ret.length();
|
int pad = width - ret.length();
|
||||||
std::string padding(pad, pad_c);
|
if(align == '>' || align == '<'){
|
||||||
if(align == '>') ret = padding.c_str() + ret;
|
std::string padding(pad, pad_c);
|
||||||
else ret = ret + padding.c_str();
|
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);
|
return VAR(ret);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,10 @@ assert f'{a:>10}' == ' 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.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:3d}' == ' 10'
|
||||||
assert f'{a:10d}' == ' 10'
|
assert f'{a:10d}' == ' 10'
|
||||||
assert f'{a:1d}' == '10'
|
assert f'{a:1d}' == '10'
|
||||||
@ -60,4 +64,11 @@ assert f'{obj.b:10s}' == '123 '
|
|||||||
|
|
||||||
a = [(1,2), 3, obj]
|
a = [(1,2), 3, obj]
|
||||||
assert f'{a[0][1]}' == '2'
|
assert f'{a[0][1]}' == '2'
|
||||||
assert f'abc{a[-1].b:10}==={1234}' == 'abc123 ===1234'
|
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