Re: Split range that has no length or slice?

2015-11-09 Thread Adam D. Ruppe via Digitalmars-d-learn
File has a .byLine and .byLineCopy method you could use to just 
get lines from it.


Re: Split range that has no length or slice?

2015-11-09 Thread Spacen Jasset via Digitalmars-d-learn

On Monday, 9 November 2015 at 18:04:23 UTC, Alex Parrill wrote:

On Monday, 9 November 2015 at 17:56:14 UTC, Alex Parrill wrote:
On Monday, 9 November 2015 at 15:23:21 UTC, Spacen Jasset 
wrote:
On Monday, 9 November 2015 at 14:58:19 UTC, Adam D. Ruppe 
wrote:
File has a .byLine and .byLineCopy method you could use to 
just get lines from it.


Ah yes. but unfortunately I don't want to do that. I want to 
pass a range into my print function. i.e. Sometimes it may 
not be a File, it might be from a string.


Looks like it's not possible without adaptor code. I would 
suggest File should have a range function on it to return a 
range, for that matter byLine and byChunk probably shouldn't 
even be associated with file at all IMHO.


The `.byLine` and `.byLineCopy` functions return ranges. Use 
those.


Scratch that, just read your post.

Ideally, something like 
`file.byChunk(4096).joiner.splitter('\n')` would work. The 
issue is that the byChunk ranges aren't forward or sliceable 
ranges (which makes sense).


Theoretically, it should be possible to implement `splitter` 
with a plain input range, but it would require that the 
sub-range that `splitter.front` returns be invalidated when 
calling `splitter.popFront`.


I don't yet understand the D ranges unfortunately. I can raise a 
bug about this if people generally agree its currently not a good 
situation. I don't see that The `.byLine` and `.byLineCopy` 
functions should be on the File object either. They are surely 
part of range algorithms, or string functions like 
std.string.lineSplitter





Re: Split range that has no length or slice?

2015-11-09 Thread Alex Parrill via Digitalmars-d-learn

On Monday, 9 November 2015 at 15:23:21 UTC, Spacen Jasset wrote:

On Monday, 9 November 2015 at 14:58:19 UTC, Adam D. Ruppe wrote:
File has a .byLine and .byLineCopy method you could use to 
just get lines from it.


Ah yes. but unfortunately I don't want to do that. I want to 
pass a range into my print function. i.e. Sometimes it may not 
be a File, it might be from a string.


Looks like it's not possible without adaptor code. I would 
suggest File should have a range function on it to return a 
range, for that matter byLine and byChunk probably shouldn't 
even be associated with file at all IMHO.


The `.byLine` and `.byLineCopy` functions return ranges. Use 
those.


Re: Split range that has no length or slice?

2015-11-09 Thread Alex Parrill via Digitalmars-d-learn

On Monday, 9 November 2015 at 17:56:14 UTC, Alex Parrill wrote:

On Monday, 9 November 2015 at 15:23:21 UTC, Spacen Jasset wrote:
On Monday, 9 November 2015 at 14:58:19 UTC, Adam D. Ruppe 
wrote:
File has a .byLine and .byLineCopy method you could use to 
just get lines from it.


Ah yes. but unfortunately I don't want to do that. I want to 
pass a range into my print function. i.e. Sometimes it may not 
be a File, it might be from a string.


Looks like it's not possible without adaptor code. I would 
suggest File should have a range function on it to return a 
range, for that matter byLine and byChunk probably shouldn't 
even be associated with file at all IMHO.


The `.byLine` and `.byLineCopy` functions return ranges. Use 
those.


Scratch that, just read your post.

Ideally, something like 
`file.byChunk(4096).joiner.splitter('\n')` would work. The issue 
is that the byChunk ranges aren't forward or sliceable ranges 
(which makes sense).


Theoretically, it should be possible to implement `splitter` with 
a plain input range, but it would require that the sub-range that 
`splitter.front` returns be invalidated when calling 
`splitter.popFront`.


Re: Split range that has no length or slice?

2015-11-09 Thread Spacen Jasset via Digitalmars-d-learn

On Monday, 9 November 2015 at 14:58:19 UTC, Adam D. Ruppe wrote:
File has a .byLine and .byLineCopy method you could use to just 
get lines from it.


Ah yes. but unfortunately I don't want to do that. I want to pass 
a range into my print function. i.e. Sometimes it may not be a 
File, it might be from a string.


Looks like it's not possible without adaptor code. I would 
suggest File should have a range function on it to return a 
range, for that matter byLine and byChunk probably shouldn't even 
be associated with file at all IMHO.