From ba000379d7f736f5ad27a609588e555fe94361d0 Mon Sep 17 00:00:00 2001 From: Ad5001 Date: Wed, 29 Dec 2021 13:39:39 +0100 Subject: [PATCH] Adding the ability to add default property values. --- README.md | 4 ++++ oop.sh | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b8b9fc3..de7c95b 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,10 @@ To declare a property, you can use the `property` function. For example, for an property Object.name ``` **NOTE**: Bash doesn't have a typing system, so you cannot set property types. +You can also set default values by adding a property after the declaration, e.g: +```bash +property Object.name "Example" +``` Class functions are declared the same way you would in bash, except it uses a prefix with object type. For example: ```bash diff --git a/oop.sh b/oop.sh index be57463..aed88b8 100644 --- a/oop.sh +++ b/oop.sh @@ -173,17 +173,18 @@ _accessProperty() { fi } -# Declares a property. -# Signature: () +# Declares a property with an optional default value. +# Signature: (, [string propertyValue]) property() { propertyFullName=$1 + propertyValue=$2 # Split the name by ".". First element is variable name, # second is property name. propertyNames=($(echo $propertyFullName | tr "." "\n")) varName=${propertyNames[0]} prop=${propertyNames[1]} # Default value - eval "_${varName}_properties[$prop]=''" + eval "_${varName}_properties[$prop]='$propertyValue'" # Property alias eval "$propertyFullName() { _accessProperty $varName $prop \$@; }" }