Variables
The Internet Object document promotes reusability through variables. It allows defining variables that can be applied to simplify schema and definitions, obfuscate values, or reduce the data size. Every key defined in the definition section can be used as a variable.
Types of Variables
Internet Object variables can be categorized into two groups.
Value Variables
Schema Variables
Value Variable
The Value variables are used to directly access and reuse values.
# Defining value variables
~ record: 123
~ y: yes
~ n: no
~ rgb: [red, green, blue]
---
In the above snippet records
, y
, n
, and rgb
are the value variables.
Schema Variable
The schema variables start with $
sign and it is used to directly access and reuse schema.
# Defining schema variables
~ $address: {
street: string,
zip: {string, maxLength: 5},
city: string
}
~ $person: {
name: string,
age: int,
homeAddress?: $address,
officeAddress?: $address
}
---
In the above code snippet, the schema variable address
is reused in another schema variable named person
.
Advantages and Use Cases
Reuse Definitions
The value variables and schema variables enable the reuse of definition.
# Reusing value variable and schema variable
~ y: yes
~ n: no
~ rgb: [red, green blue]
~ $address: {
street: string,
zip: {string, maxLength: 5},
city: string }
~ $person: {
name: string,
age: int,
seniorCitizen: {choices: [$y, $n]}
color: {string, choices: $rgb},
homeAddress?: $address,
officeAddress?: $address
}
---
Spiderman, 25, $n, red, {Queens, 50010, New York}, {Bond Street, 50001, New York}
# Reusing value variable and schema variable
~ $person: {
name: string,
age: int,
seniorCitizen: {choices: [yes, no]}
color: {string, choices: [red, green, blue},
homeAddress?: {
street: string,
zip: {string, maxLength: 5},
city: string
},
officeAddress?: {
street: string,
zip: {string, maxLength: 5},
city: string
}
}
---
Spiderman, 25, no, red, {Queens, 50010, New York}, {Bond Street, 50001, New York}
Obfuscate Data
Variables are also used for hiding critical information with modified content to enforce data protection and security.
The following example demonstrates how one can pass critical information over the internet using variables.
# Key saved on the client side
~ s: ghhhj456nhghhhy11569bbbgtxxcv123654897
~ a: jk889456llkhynnnk12364lkkkhuk4125336nk
The above code snippet represents secrectKey
as s
and activationKey
as a
saved on the client-side. This information is securely passed over the internet using variables as shown below,
# Information passed on the server
~ y: yes
~ n: no
~ rgb: [red, green blue]
~ $address: {city, zipCode, state}
~ $person: {
name,
age,
currentAddress: $address,
permanentAddress: $address
}
~ $accountDetails: {
name,
phoneNo,
currentAddress: $address,
secretKey, activationKey
}
---
Spiderman, 7855423656, {Queens, 50010, New York}, $s, $a
The receiver will receive the following information without compromising on data security.
# Information Received by the receiver
{
name: "Spiderman",
phoneNo: 7855423656,
currentAddress:{
city: "Queens",
zipCode: 50010,
state: "New York"
}
secretKey: "ghhhj456nhghhhy11569bbbgtxxcv123654897",
activationKey: "jk889456llkhynnnk12364lkkkhuk4125336nk"
}
Reduce data size
The use of variables helps to reduce the code size as it enables definition reuse that ultimately reduces bandwidth utilization.
# Reduce the code length by facilating code reuse
~ rgb: [red, green blue]
~ $address: {
street: string,
zip: { string, maxLength:5 },
city: string
}
~ $accountDetails: {branchName:string, accountNo, IFSCcode}
~ $person: {
name: string,
age: int,
bankaccountInfo: $accountDetails,
color: { string, choices: $rgb },
homeAddress?: $address,
officeAddress?: $address
}
---
{ Spiderman, 25, red,
{Queens, 50010, New York},
{Bond Street, 50001, New York}
}
In the above code snippet, the schema variable address
and accountDetails
are used in the person
schema definition. So, rather than creating a similar schema multiple times for address
it can be created once and reused multiple times in the document.
Improves schema readability
Variables improve schema readability by grouping similar and reusable codes and limiting line length.
Last updated
Was this helpful?