| 12379 | return new Sk.builtin.str(ret); |
| 12380 | }; |
| 12381 | var format = function (kwa) { |
| 12382 | // following PEP 3101 |
| 12383 | |
| 12384 | var a, args, key, kwargs; |
| 12385 | var ret; |
| 12386 | var regex; |
| 12387 | var index; |
| 12388 | var replFunc; |
| 12389 | var arg_dict = {}; |
| 12390 | |
| 12391 | Sk.builtin.pyCheckArgs("format", arguments, 0, Infinity, true, true); |
| 12392 | |
| 12393 | |
| 12394 | args = new Sk.builtins["tuple"](Array.prototype.slice.call(arguments, 1)); /*vararg*/ |
| 12395 | kwargs = new Sk.builtins["dict"](kwa); |
| 12396 | |
| 12397 | if (arguments[1] === undefined) { |
| 12398 | return args.v; |
| 12399 | } |
| 12400 | index = 0; |
| 12401 | regex = /{(((?:\d+)|(?:\w+))?((?:\.(\w+))|(?:\[((?:\d+)|(?:\w+))\])?))?(?:\!([rs]))?(?:\:((?:(.)?([<\>\=\^]))?([\+\-\s])?(#)?(0)?(\d+)?(,)?(?:\.(\d+))?([bcdeEfFgGnosxX%])?))?}/g; |
| 12402 | // ex: {o.name!r:*^+#030,.9b} |
| 12403 | // Field 1, Field_name, o.name |
| 12404 | // Field 2, arg_name, o |
| 12405 | // Field 3, attribute_name/Element_index , .name |
| 12406 | // Field 4, Attribute name, name |
| 12407 | // Field 5, element_index, [0] |
| 12408 | // Field 6, conversion, r |
| 12409 | // Field 7, format_spec,*^+#030,.9b |
| 12410 | // Field 9, fill_character,* |
| 12411 | // Field 10, fill_align, ^ |
| 12412 | // Field 11, sign, + |
| 12413 | // Field 12, 0x, # |
| 12414 | // Filed 13, sign-aware 0 padding, 0 |
| 12415 | // Field 14, width, 30 |
| 12416 | // Field 15, comma, , |
| 12417 | // Field 16, precision, .9 |
| 12418 | // Field 17, conversionType, b |
| 12419 | |
| 12420 | // Detect empty/int/complex name |
| 12421 | // retrive field value |
| 12422 | // hand off format spec |
| 12423 | // return resulting spec to function |
| 12424 | |
| 12425 | |
| 12426 | if(kwargs.size !== 0){ |
| 12427 | |
| 12428 | var kwItems = Sk.misceval.callsim(Sk.builtin.dict.prototype["items"], kwargs); |
| 12429 | |
| 12430 | for (var n in kwItems.v){ |
| 12431 | |
| 12432 | arg_dict[kwItems.v[n].v[0].v] = kwItems.v[n].v[1].v; |
| 12433 | } |
| 12434 | } |
| 12435 | for(var i in args.v){ |
| 12436 | if(i !== "0") { |
| 12437 | arg_dict[i-1] = args.v[i].v; |
| 12438 | } |