r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[I'm new] Ask any question, and a helpful person will try to answer.

Graham
15-May-2009
[2410]
Have you read this ?  http://www.rebol.com/docs/core23/rebolcore-10.html
mhinson
15-May-2009
[2411]
Was looking at it, yes. but not discoverd how these deep nested levels 
work yet.
Graham
15-May-2009
[2412]
well, one way would be to create the top level object and then add 
the other objects to the first object's members
mhinson
15-May-2009
[2413]
oh, nest objects inside each other.  I will try that. Thanks.
Graham
15-May-2009
[2414x3]
in the above, you're expecting 20 - 30 copies of i2, but you're going 
to get all of them exactly the same ....
ie. they won't be different but all will reference the same block
Now if i2 were an object, you need to instantiate 30 instances and 
append each instance to the i1 member
mhinson
15-May-2009
[2417]
That was not what I inteded..  Thanks for pointing that out...  I 
am out of my depth at the moment.
Graham
15-May-2009
[2418]
well, I think you need to work with a few small examples .. as what 
you're doing is way out ...
mhinson
15-May-2009
[2419x2]
ok, this is a reduced set...  but it does not work. I wonder if I 
have a problem with context?

PortAttributesObj: make object! [

 vlan: copy []     ;; will hold a number or perhaps a list of numbers 
 e.g. 20 or 3,5,7
	UpState: copy []  ;; none or "disabled"
	name: copy []     ;; any string
]

PortNumberObj: make object! [
	p1: make PortAttributesObj []
	p2: make PortAttributesObj []
	p3: make PortAttributesObj []
	p4: make PortAttributesObj []
;; so on up to
	p48: make PortAttributesObj []
]

ModuleNumberObj: make object! [
	m1: make ModuleNumberObj []
	m2: make ModuleNumberObj []
	m3: make ModuleNumberObj []
;; so on up to
	m13: make ModuleNumberObj []
]	

record: make ModuleNumberObj []
it is not quite wat I want either, because I now have to reference 
my data structure lil record/m1/p2/vlan   rather than the simple 
record/1/2/vlan
sqlab
15-May-2009
[2421]
I did not follow exactly your intentions,
am I correct, you want to get a structure with 4 qualities?

Then why you do not add for every line you are parsing your 4 elements:
either with 
append data reduce [port disabled vlan name]
or with
append/only data reduce  [port disabled vlan name]
?
mhinson
15-May-2009
[2422x3]
sqlab, where would I store my data so I could retrieve it in the 
right sequence please?

The input presents the data verticaly & I need to export it horizontaly.
Each line I parse will have only one of the values disabled, vlan, 
name, & a range of ports.
when I have parsed the data I know it is for a vlan & the number 
of the vlan & the port... it is only later that I will find the same 
port number associated with the name.
sqlab
15-May-2009
[2425]
I understand, you are looking for a structure where you can later 
reference the qualities?
mhinson
15-May-2009
[2426]
Yes. I neet to have a structure I can enumerate to export my output
symbolicaly:
input
1 3
1 fish
2 3
2 dog

output 
1 3 fish
2 3 dog
sqlab
15-May-2009
[2427]
What is your primary index?
mhinson
15-May-2009
[2428x2]
the index is in 2 parts, like 1/1 1/2 1/3 up to 13/48
I think the structure I want is fairly straight forward, but it seems 
complex to define it without doing all 1800 values manualy.
sqlab
15-May-2009
[2430x2]
So first we need to find a way to define the index with rebol datatypes
is 1x1 ok instead of 1/1 ?
mhinson
15-May-2009
[2432]
I could convert it easily I suppose then convert it back again for 
output
sqlab
15-May-2009
[2433]
Then we could use a structure like
data: [
1x1 [ports disabled vlan etc ...]
1x2 [ ..
2x2 
]

or even
["1/1" [ports disabled vlan
mhinson
15-May-2009
[2434]
So long as I can enumerate them to export the data, preferably in 
order so I dont have to sort them after
sqlab
15-May-2009
[2435x2]
We acces the elements either with 
data/1x1

or with 
data/("2x3")
If you don't add them ordered you will always need a sort run
mhinson
15-May-2009
[2437x2]
I was thinking if I had a data structure like data: [[[vlan 6][vlan 
6]][[][][][]]   of the right nature I could output the data like
for m 1 13 1 [ foreach p [print data/(m)/(p)/vlan]]
sorry I mean
for m 1 13 1 [ for p 1 48 1 [print data/(m)/(p)/vlan]]
sqlab
15-May-2009
[2439x2]
then you would need a different structure
with flat 13 * 48 elements first
and you would get 13 * 48 lines output
maybe I still do not get what you want to do.(
mhinson
15-May-2009
[2441]
My output could be up to 13 * 48 line long, that is right.
sqlab
15-May-2009
[2442]
Always?
mhinson
15-May-2009
[2443]
in practice there will be groups of values that will not need to 
be exported because they contain no information.
sqlab
15-May-2009
[2444]
But you have always 13 * 48 groups and this is your index
  
1/1 
1/2
..
1/48
2/1
..
2/48
..
13/48

is it?
mhinson
15-May-2009
[2445]
yes
sqlab
15-May-2009
[2446x2]
So you first want to generate a table with 13 * 48 elements?
array/initial 13 array/initial 48 none
mhinson
15-May-2009
[2448]
and each of the 13 * 48 elements will have up to 3 different bits 
of information
sqlab
15-May-2009
[2449]
array/initial 13 array/initial 48 array/initial 3 none
mhinson
15-May-2009
[2450]
that looks great!   I will just have to give the 3 bits of data numbers 
instead of names.
sqlab
15-May-2009
[2451x3]
Otherwise make it flat
array/initial 13 * 48 * 3 none

and access it with data/(x * 13 + (y  * 48) + z)
You can acces the your free items of the last group with names
you can use e.g
  alias 'first "portn"
  alias 'second "disabled"
  alias 'third "vlan"
sorry three not free
mhinson
15-May-2009
[2454]
thats a handy trick to make it more readable...
sqlab
15-May-2009
[2455]
or use port: 1 diabled: 2
then /../:port
mhinson
15-May-2009
[2456]
so much choice..   I wonder if that is both the best & the worst 
thing about Rebol.  :-)  Thanks very much for your help & Geomol 
& Graham.

This is a crucial bit of my script & it should start producing the 
output I need very soon..  I have been learning Rebol to solve a 
problem, instead of spending my time to sole the problem manualy. 
But now I am nearly out of time so I a comitted to the scripted aproach.
sqlab
15-May-2009
[2457]
you're welcome

I guess as a beginner you would have reached your goal faster without 
parse with simple loops and finds
mhinson
15-May-2009
[2458]
I heard about Rebol because of parse, & it seems right to learn about 
it.  I am stll very much a noob & appreciate the intensive help I 
get here very much.

I think the only way I could have got more help would have been to 
use a cute girls name as my login. ;-)
sqlab
15-May-2009
[2459]
Unfortunately you can infer from the name to the look.)
But I will give you another hint, 
try to use new-line/all with your data