qtxie on master
FIX: issue #4806 (`toggle` styl… (compare)
@JacobGood1 Red lexer rewritten in R/S for improved performance and instrumentation.
@GiuseppeChillemi we'd need to add a callback feature so each segment would trigger that. Easy to mock up at the mezz level, which would be step one.
@TheHowdy_gitlab thanks for posting! That link ties into 2 topics. An old one is a unit!
form and datatype. We can do it with blocks today, of course, but still want to consider a direct lexical form. It's tricky, because so much value of units (as Frink and Wolfram also show) comes from having their relative rules built in. That means units may be an optional module. The newer idea is that of Expect, which is an interrogative automation interface. We don't need automation here, but something like that, or Caligator, are based on the idea that you may only get a partial input, and need to "talk back" to the user to guide them in possible completion options.
port!
type is already present in the master branch, but low-level I/O networking is still a WIP. We have a working async TCP and TLS ports implementation (both client and server-side), but they still require more work to cover all the target platforms. Once we have UDP and DNS, we can push the code into a branch on the red/red repo, so that people can play with them. No ETA for that yet, as we have several related sub-tasks to complete first (like some memory management improvements for I/O).
@GiuseppeChillemi, there are now 6 of us dedicated full time to Red, and another 6 or so that contribute regularly but have other primary jobs. Then there is a wider circle in the community with some deep work done. e.g. @rcqls on GTK and @hiiamboris on tickets requiring deep analysis and R/S skills. Respective roles, in general:
Warp, Rebolek, Peter, Harald, Semseddin, GregT, Gabriele work on many things, because so much support is needed. Infrastructure, testing, research, codecs, blockchain R&D, docs, deep design. I wish I could name everyone and list their contributions, because they (you) all deserve it, but that's yet another task I'd have to put on my list. ;^)
load-csv/with #";"
returns an error stating, that delimiter
can't be a char!
type, though its help string states otherwise. And lastly - why some lines are enclosed in quotes, whereas most of the lines are enclosed in {}?
load-csv/header
returns a map?
""
vs {}
came up not long ago. It's Rebol's design, and confuses people. Beyond 50 chars the runtime molds strings with {}
instead of ""
. If, for example, truncated console output always added a closing }
that would be useful, because you could persist console sessions.
Object help alignment looks like a bug/regression. @bitbegin, I hate to say it, but it was your recent help changes that caused it.
why default mode returns block, whereas load-csv/header returns a map?
The rationale here is that /header
means it should be used, not just that it exists. If you want the default format, and to separate the header, we (you? ;^) can add an example like this to the wiki page:
>> s: {a,b,c^/1,2,3^/4,5,6}
== "a,b,c^/1,2,3^/4,5,6"
>> data: load-csv s
== [["a" "b" "c"] ["1" "2" "3"] ["4" "5" "6"]]
>> hdr: take data
== ["a" "b" "c"]
>> data
== [["1" "2" "3"] ["4" "5" "6"]]
`data: read/lines %file.csv
, remove first data
if there is header present ... and then finally the loop foreach row data [items: parse/all data ";" ....]
.... done ....
The truth is that I never faced other delimiter than semicolon.
CSV is comma separated values, so comma is used as default separator. Anyway, loading data with semicolon should be as easy as load-csv/with data #";"
. If it doesn't work, there may be a bug. We have tests for it, but I could have overlooked something, that's possible.
>> load-csv/with {a;b;c^/1;2;3^/4;5;6} #";"
== [["a" "b" "c"] ["1" "2" "3"] ["4" "5" "6"]]
Anyway, what you describe parse data #";"
is simply not enough, you were lucky if it worked always for you, or you had used very simple data.
>> to-csv/with [["@pekr" {convert this ; with your "parse loop"}]["@pekr" "I think it won't work"]] #";"
== {@pekr;"convert this ; with your ""parse loop"""^/@pekr;"I think it won't work"^/}