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 \$@; }" }