2012年4月23日21:36 Denis Shelomovskij <[email protected]>: > I've never used new excellent range formatting syntax by Kenji Hara until > now. And I've met with difficulties, because "%(%(%c%), %)" is the most > common format for string array for me and it neither obvious nor elegant. It > occurs that "%c" disables character escaping. What the hell? Why? Not > obvious at all. > > So I think it will be good to add 'Escaping' part after 'Precision' in > format specifications: > > Escaping: > empty > !- > !+ > !' > !" > !?' > !?" > !?! > > Escaping affect formatting depending on the specifier as follows. > > Escaping Semantics > !- disable escaping, for a range it also disables [,] > !+ enable escaping using single quotes for chars and double quotes for > strings > !' enable escaping using single quotes > !" enable escaping using double quotes > !?' like !' but without adding the quotes and [,] for a range > !?" like !" but without adding the quotes and [,] for a range > !?! enable escaping, both single and double quotes will be escaped > without adding any quotes and [,] for a range > > Escaping is enabled by default only for associative arrays, ranges (not > strings), user-defined types, and all its sub-elements. > > I'd like to remove "%c"'s ability to magically disable escaping and it looks > possible until it is documented. > > Look at the example: > --- > import std.stdio; > > void main() { > writeln(" char"); > char c = '\''; > writefln("unescaped: %s." , c ); > writefln(`escaped+': %(%).`, [ c ]); // proposal: %!+s or %!'s > writefln(`escaped+": %(%).`, [[c]]); // proposal: %!"s > writeln (` escaped: \t.`); // proposal: %!?'s > writeln(); > writeln(" string"); > string s = "a\tb"; > writefln("unescaped: %s." , s ); > writefln(`escaped+": %(%).`, [s]); // proposal: %!+s or %!"s > writeln (` escaped: a\tb.`); // proposal: %!?"s > writeln(); > writeln(" strings"); > string[] ss = ["a\tb", "cd"]; > writefln("unescaped: %(%(%c%)%).", ss); // proposal: %!-s > writefln(`escaped+": %(%).` , ss); > writeln (` escaped: a\tbcd.` , ss); // proposal: %!?"s > } > --- > > If it will be accepted, I can volunteer to try to implement it. If not, > escaping should be at least documented (and do not forget about "%c"'s > magic!). > > Any thoughts?
Please give us use cases. I cannot imagine why you want to change/remove quotations but keep escaped contents. > P.S. > If it has already been discussed, please give me a link. As far as I know, there is not yet discussions. Kenji Hara
