On Thu, Jan 04, 2018 at 12:25:59AM +0000, Justin Whear via Digitalmars-d wrote:
> // Reads bytes from stdin and writes a hexadecimal view like a no-frills
> xxd.
> // All the actual formatting work is done by format's sweet range syntax

Mmm, I like this!  Care to submit a PR for this in the dlang.org repo?


> void main(string[] args)
> {
>       import std.getopt;
>       uint bytesPerLine = 8;
>       args.getopt(
>               "cols|c", &bytesPerLine
>       );
> 
>       import std.stdio;
>       import std.range : chunks;
>       import std.algorithm : map, copy;
>       import std.string : format;
>       import std.ascii : newline;

Instead of cluttering the code with a whole bunch of local imports, for
such a short program I'd recommend just importing entire modules (skip
the specific symbols) at the top of the file.


>       stdin.byChunk(bytesPerLine)
>            .map!(bytes => bytes.format!"%(%02X %)%s"(newline))

Is the `newline` part actually necessary?  Doesn't "\n" automatically
get translated into whatever it needs to be, assuming stdout is opened
in text mode?


>            .copy(stdout.lockingTextWriter());
> }

I would omit the (), but that's just being nitpicky. :-P


T

-- 
Having a smoking section in a restaurant is like having a peeing section
in a swimming pool. -- Edward Burr 

Reply via email to