<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif">Hello everyone. Thanks to you all for replies in this thread. </div><div class="gmail_default" style="font-family:georgia,serif"><br></div><div class="gmail_default" style="font-family:georgia,serif">I am currently working on a Xcode Extension for this purpose. I would like to bring it to github in this week. This will be my first Xcode extension, also my first github open sourced project. </div><div class="gmail_default" style="font-family:georgia,serif"><br></div><div class="gmail_default" style="font-family:georgia,serif"><br></div><div class="gmail_default" style="font-family:georgia,serif">Zhaoxin</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 3, 2016 at 6:14 AM, Dave Abrahams via swift-users <span dir="ltr">&lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
on Wed Nov 02 2016, Jens Alfke &lt;jens-AT-mooseyard.com&gt; wrote:<br>
<br>
&gt;&gt; On Nov 2, 2016, at 12:50 PM, Dave Abrahams via swift-users &lt;<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; In my opinion, we can and must do much better for Swift.  If there&#39;s<br>
&gt;&gt; something about “%” formatting that you particularly value, I&#39;d like to<br>
&gt;&gt; know about it, so I can make sure it&#39;s accomodated.<br>
&gt;<br>
&gt; It offers more control over formatting, like min/max widths, number<br>
&gt; base, decimal places, etc. Yes, you can do this in the code inside the<br>
&gt; interpolated string, but IMHO it’s awkward because it requires knowing<br>
&gt; a bunch of extra methods for string conversion, truncation, etc. It’s<br>
&gt; a lot easier for me to remember and type “%x” than it is to remember<br>
&gt; and type the method that converts an int to a hex string.<br>
<br>
</span>In my view this should look like<br>
<br>
  &quot;... \(x.format(radix: 16, width: 12))... &quot;<br>
<br>
Where the possible arguments to format() are statically known to the<br>
compiler (and code completion!) based on the type of x.<br>
<span class=""><br>
&gt;<br>
&gt; Also (and more importantly for localization) the formatting details<br>
&gt; are part of the localizable format string, not hardwired. One example<br>
&gt; of this is formatting currency, where a US localization would use<br>
&gt; “$%.2f” but other currencies might call for more or fewer decimal<br>
&gt; places.<br>
<br>
</span>Yep, I&#39;m paying attention to that, thanks.<br>
<span class=""><br>
&gt; There are other examples where one might swap format strings for other<br>
&gt; purposes like different-width layouts for monospaced/terminal output.<br>
<br>
</span>I think we can leverage the same mechanisms used for localization to<br>
handle those.<br>
<span class=""><br>
&gt; There’s also a nonstandard extension used by Cocoa/CF’s formatters,<br>
&gt; that allows the parameters to be reordered. (I haven’t used it so I<br>
&gt; don’t know the syntax offhand.) This is of course important for<br>
&gt; localization, to follow a language’s grammar.<br>
<br>
</span>Right, that&#39;s crucial.<br>
<span class=""><br>
&gt; I think these features could be added to interpolation. Just as a<br>
&gt; quick idea, maybe a syntax that allows formatting metacharacters to be<br>
&gt; added at the start of the interpolation, like “Please pay $\((.2)<br>
&gt; total)” where the “(.2) specifies two decimal places, or “The address<br>
&gt; is \((x) addr)”.<br>
<br>
</span>I think the “.format(...)” approach is better, but it&#39;s equally<br>
important that there are sufficient outside-the-Swift-source knobs for<br>
localizers to add language-specific formatting parameters.<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
-Dave<br>
______________________________<wbr>_________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-users</a><br>
</div></div></blockquote></div><br></div>