Referring global or universal property list

Hi all,

I am new to Eggplant scripting.

I have a situation, where I want to define a set of property list in Script A. Example:

Script A:
put {Name:“Bob”, Age:“17”} into userName

and I have Script B as the main test script.

my question is how do I referring / access userName.Name in Script B?

thank you

You could uses a global definition:
Script a:
global g_UserName
put {Name:“Bob”, Age:“17”} into g_UserName

To consume it in another script (or different function) you first have to re-define the same global name and then you can consume the value.

Script b:
global g_UserName

…use values here…

You can also load it as a CONST. I dont think you have to constantly re-define a CONST in order to access it though… so easier to consume but more cumbersome to set. I have not used CONST but am considering looking into it.
If, like me, your scripts are heavily functionalised, the CONST route may be a better approach to save missing the redefinition in EVERY function that uses it.

paul

You have to pass the variable to Script B. there are a number of ways to do this. As a Global, as a suite variable, write it to a resource, or (the easiest) send it when you call Script B:

Script A looks like this:

put {Name:"Bob", Age:"17"} into userName
run "Script_B" userName

Script B looks like this:

Params userName
Log "Username:"&&userName.Name
Log "Age:"&&userName.Age

But really, for simple data fetching of this sort I would make the username data a function:
Script A looks like this:
Log ("Handlers".userName).Name
Script “Handlers” looks like this:

to userName
	put {Name:"Bob", Age:"17"} into userName
	return userName
end userName
2 Likes

I actually really like the functinliase idea… kind of like just hand-cranking a bunch of read-only properties, without the need for the global re-declaring business…

Coming from a dev background I was hung up on the “global” keyword and being frustrated by how it [doesn’t] work… this has changed how i have been thinking about things

thanks loganC

paul

2 Likes

Wonderful solution. Thank you for the help

Thank you Paul for the help

Hi Siti,
There ist another useful approach top solve your task. Remember that EP is a object-oriented language. Put into a.script
Properties
Name: “Bob”,
Age: 17
Ende Properties

In Your b.script You can work with

set myA to a new object of a
Put merge(“The age of [[myA.name]] is [[ myA.age]]”) – The age of Bob is 17

BR

1 Like

Thank you GammaG. It is really useful.