World: r3wp
[Core] Discuss core issues
older newer | first last |
ChristianE 22-Jul-2009 [14308] | Robert, you're mentioning Excel, so you're probably trying to do ALT+RETURN hard line-breaks with Excel thru comlib? Maybe you can use the actual character code that Excel uses whenever one presses Alt+Enter. The web says Excel just inserts a line feed #"^/", have you tried that? |
Gabriele 23-Jul-2009 [14309] | Alt+RETURN is not a character |
Robert 23-Jul-2009 [14310] | Christian, right, I try to insert a hard line-break in Excel. I tried inserting NEWLINE, which doesn't work. Will try just the LN. Thanks. |
Graham 27-Jul-2009 [14311] | Apart from chucking an error, what is the best way to determine if a path exists inside an object? So, the path might be 10 deep ... |
Sunanda 27-Jul-2009 [14312] | As far as I know, Graham, there is not a simpler way than provoking an error. If you are already at the bottom of the structure FIND can help: a: make object! [b: make object! [c: 1]] find next first a/b 'd ;; is a/b/d valid? == none find next first a/b 'c ;; is a.b.c valid? == [c] But recursing to the bottom may be slower than just trying the error?: error? try [a/b/d] error? try [a/b/c] |
Graham 27-Jul-2009 [14313] | Seems ugly to have to use an error ... |
Anton 27-Jul-2009 [14314] | It's a poorly specified way of obtaining some information. |
Henrik 27-Jul-2009 [14315] | perhaps there is merit for a feature to quickly determine the existence of a deeply stored value? |
Graham 27-Jul-2009 [14316x3] | can't even do this in object 'path/to/rebol |
because 'in expects a word | |
How is this done in R3 ?? | |
BrianH 27-Jul-2009 [14319x2] | Same as in R2: in object/path/to 'rebol |
The problem is that at some point the field names can turn into function refinements, depending on the values assigned... | |
Anton 27-Jul-2009 [14321x4] | And why is that such a problem? |
I mean, it's a solvable problem. IN could theoretically be enhanced to also accept paths, but, iIrc, Carl wasn't keen on the idea because he wanted IN to remain simple and fast. He said something like "it's for words". | |
The only thing we can do is make our own mezz version of IN that accepts paths. | |
(Ok, it's not a solvable problem for paths with dynamic elements in them like functions, but of course, there are many more "static" paths which this would be darned useful for.) | |
BrianH 27-Jul-2009 [14325] | GET and SET work with paths in R3. Perhaps as you describe could be added as well, to handle the IN function for paths. And functions wouldn't be traced through. |
Graham 27-Jul-2009 [14326] | the problem with object/path/to 'rebol is that it assumes object/path/to exists |
BrianH 27-Jul-2009 [14327x3] | Yup. |
So you have to check for 'to in object/path first, and so on. I didn't say it would be a fast mezzanine :( | |
The way this kind of thing is resolved in R3 is through liberal use of the ASSERT/type function, and not representing XML as objects. | |
Graham 27-Jul-2009 [14330x2] | I guess there's a lot of advantages to just using blocks ... as it is now, some elements in my object are blocks and some are objects which makes it very messy |
OTOH, blocks could get messy too ... at present I have structures like ccr/body/alerts/alert where alert can be either a single alert object, or a block of alert objects Ideally if I were to use blocks, it would end up that alert is always a block .. 0 ... n blocks | |
BrianH 27-Jul-2009 [14332] | The R3 GUI is structured as a mix of objects, maps, blocks and gobs, but it is very consistent and not messy. |
Graham 27-Jul-2009 [14333] | I presume it can't change though ... if a particular item is an object!, it won't be a block of objects in another instance .... |
BrianH 27-Jul-2009 [14334] | very consistent , yes :) |
Graham 27-Jul-2009 [14335] | That's my issue ... because the standard for the data has not been tightly defined, there are varying implementations leading to somewhat variable structures |
BrianH 27-Jul-2009 [14336] | Sounds like you need a tighter definition, or to resign yourself to slow code. |
Graham 27-Jul-2009 [14337] | It's an ASTM standard ... I can't change the XSD! |
BrianH 27-Jul-2009 [14338] | But you can use a consistent REBOL representation of it, and don't need objects. |
Graham 27-Jul-2009 [14339] | Google health has solved the issue by only working with a subset of the XSD. |
BrianH 27-Jul-2009 [14340] | Well, you can clean it up to a usable structure on read, process it nicely, then regenerate the bad XML on write. |
Graham 27-Jul-2009 [14341x2] | Yeah .. I guess I was getting to that. |
I suspect this is a very common issue and not bad xml. So, if the XSD states an element can be 0 ... n and each element can be of a different type, then it's going to be difficult to work with no matter what. | |
BrianH 27-Jul-2009 [14343] | If an XSD states that; it should always be a block even in the single object case. |
Graham 27-Jul-2009 [14344] | I guess the xml-to-object.r script doesn't know that! |
BrianH 27-Jul-2009 [14345x4] | I never liked that script :( |
(no offence intended to whoever wrote it) | |
Saw a new language the other day that has a native, literal data structure which matches the XML object model, without the syntax. | |
Nice language - clean and small, pretty to look at, compiles to native code. | |
Graham 27-Jul-2009 [14349x3] | Given >> obj: make object! [ Description: make object! [ Text: "REBOL" ]] >> path: 'Description/Text == Description/Text How can I find "REBOL" without breaking the path into it's constituents? |
I'm guessing that there's something very simple ... but in the meantime get-value: func [ obj [object!] path [path!] /local id ][ if not empty? path [ either all [ id: in obj path/1 obj: get id object? obj ][ remove path get-value obj path ][ obj ] ] ] | |
>> get-value obj path == "REBOL" | |
Ashley 29-Jul-2009 [14352x2] | Is this a bug or a feature: >> to integer! "" == 0 |
>> to decimal! "" ** Script Error: Invalid argument: ** Near: to decimal! "" | |
Henrik 29-Jul-2009 [14354] | R3 returns a bug with the first one, but it could be intentional in both R2 and R3. |
BrianH 29-Jul-2009 [14355] | It was an intentional change. TO has been cleaned up a lot in R3 - the error there tells why: >> to integer! "" ** Script error: content too short (or just whitespace) |
Sunanda 29-Jul-2009 [14356x2] | R2 also works with to integer! # but not to integer! % Looks like a consistency bug in R2 that has been fixed in R3. |
Oops -- Brian beat me to, and gave the definitive answer to trump my late speculation. | |
older newer | first last |