diff options
Diffstat (limited to 'addons/escoria-core/game/core-scripts/utils')
| -rw-r--r-- | addons/escoria-core/game/core-scripts/utils/esc_utils.gd | 95 | ||||
| -rw-r--r-- | addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid | 1 |
2 files changed, 96 insertions, 0 deletions
diff --git a/addons/escoria-core/game/core-scripts/utils/esc_utils.gd b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd new file mode 100644 index 0000000..14e4246 --- /dev/null +++ b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd @@ -0,0 +1,95 @@ +## A set of common utilities. +extends RefCounted +class_name ESCUtils + +## Convert radians to degrees.[br] +## [br] +## #### Parameters[br] +## [br] +## | Name | Type | Description | Required? |[br] +## |:-----|:-----|:------------|:----------|[br] +## |rad_angle|`float`|Angle in radians.|yes|[br] +## [br] +## #### Returns[br] +## [br] +## Returns nothing. +static func get_deg_from_rad(rad_angle: float): + var deg = rad_to_deg(rad_angle) + if deg >= 360.0: + deg = clamp(deg, 0.0, 360.0) + if deg == 360.0: + deg = 0.0 + return deg + +## Get the content of a reg exp group by name.[br] +## [br] +## #### Parameters[br] +## [br] +## | Name | Type | Description | Required? |[br] +## |:-----|:-----|:------------|:----------|[br] +## |re_match|`RegExMatch`|The RegExMatch object.|yes|[br] +## |group|`String`|The name of the group.|yes|[br] +## [br] +## #### Returns[br] +## [br] +## Returns a `String` value. (`String`) +static func get_re_group(re_match: RegExMatch, group: String) -> String: + if group in re_match.names: + return re_match.strings[re_match.names[group]] + else: + return "" + +## Return a string value in the correct inferred type.[br] +## [br] +## #### Parameters[br] +## [br] +## | Name | Type | Description | Required? |[br] +## |:-----|:-----|:------------|:----------|[br] +## |value|`String`|The original value.|yes|[br] +## |type_hint|`Variant`|The type it should be.|no|[br] +## [br] +## #### Returns[br] +## [br] +## Returns nothing. +static func get_typed_value(value: String, type_hint = []): + var regex_bool = RegEx.new() + regex_bool.compile("^true|false$") + var regex_float = RegEx.new() + regex_float.compile("^-?[0-9]*\\.[0-9]+$") + var regex_int = RegEx.new() + regex_int.compile("^-?[0-9]+$") + + if regex_float.search(value): + return float(value) + elif regex_int.search(value): + return int(value) + elif regex_bool.search(value.to_lower()): + return true if value.to_lower() == "true" else false + elif (typeof(type_hint) != TYPE_ARRAY and type_hint == TYPE_ARRAY) or \ + (typeof(type_hint) == TYPE_ARRAY and TYPE_ARRAY in type_hint) \ + and "," in value: + return value.split(",") + else: + return str(value) + +## Sanitize use of whitespaces in a string. Removes double whitespaces and converts tabs into space.[br] +## [br] +## #### Parameters[br] +## [br] +## | Name | Type | Description | Required? |[br] +## |:-----|:-----|:------------|:----------|[br] +## |value|`String`|String to work on.|yes|[br] +## [br] +## #### Returns[br] +## [br] +## Returns a `String` value. (`String`) +static func sanitize_whitespace(value: String) -> String: + var tab_regex = RegEx.new() + tab_regex.compile("\\t") + var double_regex = RegEx.new() + double_regex.compile("\\s\\s+") + return double_regex.sub( + tab_regex.sub(value, " "), + " ", + true + ) diff --git a/addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid new file mode 100644 index 0000000..90b5870 --- /dev/null +++ b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid @@ -0,0 +1 @@ +uid://baatkfocvpgnr |
