-
Notifications
You must be signed in to change notification settings - Fork 1
/
Formats.gd
166 lines (139 loc) · 3.17 KB
/
Formats.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
tool
class_name PressAccept_Byter_Formats
# |=========================================|
# | |
# | Press Accept: Byter |
# | Byte-wise Arbitrary Radix Conversions |
# | |
# |=========================================|
#
# This file contains enumerations and constants that are used across the
# different 'modules' of the library. _FORMATS indicates what format we're
# expecting binary output to be, and _RADIX indicates what format we're
# expecting input to be in the to_* dynamically typed functions.
#
# |------------------|
# | Meta Information |
# |------------------|
#
# Organization Namespace : PressAccept
# Package Namespace : Byter
# Class : Formats
#
# Organization : Press Accept
# Organization URI : https://pressaccept.com/
# Organization Social : @pressaccept
#
# Author : Asher Kadar Wolfstein
# Author URI : https://wunk.me/ (Personal Blog)
# Author Social : https://incarnate.me/members/asherwolfstein/
# @asherwolfstein (Twitter)
# https://ko-fi.com/asherwolfstein
#
# Copyright : Press Accept: Byter © 2021 The Novelty Factor LLC
# (Press Accept, Asher Kadar Wolfstein)
# License : MIT (see LICENSE)
#
# |-----------|
# | Changelog |
# |-----------|
#
# 1.0 06/01/2021 First Release
#
# ****************
# | Enumerations |
# ****************
# format enumeration
#
# used in Binary.gd to indicate whether to output a string or an array
enum ENUM_FORMATS {
STRING,
ARRAY
}
enum ENUM_FORM {
STR,
ARR
}
# radix enumeration
#
# used in to_* functions to indicate what format the input value is in
enum ENUM_RADIX {
BINARY,
OCTAL,
UNSIGNED_DECIMAL,
SIGNED_DECIMAL,
HEXADECIMAL,
UNSIGNED_BASE_36,
SIGNED_BASE_36,
UNSIGNED_BASE_62,
SIGNED_BASE_62
}
enum ENUM_RAD {
BIN,
OCT,
UDEC,
SDEC,
HEX,
UB36,
SB36,
UB62,
SB62
}
# *************
# | Constants |
# *************
const ARR_FORMATS: Array = [
'STRING',
'ARRAY'
]
const ARR_FORM: Array = [
'STR',
'ARR'
]
const ARR_RADIX: Array = [
'BINARY',
'OCTAL',
'UNSIGNED_DECIMAL',
'SIGNED_DECIMAL',
'HEXADECIMAL',
'UNSIGNED_BASE_36',
'SIGNED_BASE_36',
'UNSIGNED_BASE_62',
'SIGNED_BASE_62'
]
const ARR_RAD: Array = [
'BIN',
'OCT',
'UDEC',
'SDEC',
'HEX',
'UB36',
'SB36',
'UB62',
'SB62'
]
# ***************************
# | Public Static Functions |
# ***************************
# Convert format enumeration to string representation
static func format2str(
format_code: int) -> String:
return ARR_FORMATS[format_code]
# Convert string representation to pin integer
static func str2format(
format_str: String) -> int:
format_str = format_str.to_upper()
if format_str in ARR_FORM:
return ARR_FORM.find(format_str)
return ARR_FORMATS.find(format_str)
# Convert format enumeration to string representation
static func radix2str(
radix_code: int) -> String:
return ARR_RADIX[radix_code]
# Convert string representation to pin integer
static func str2radix(
radix_str: String) -> int:
radix_str = radix_str.to_upper()
if radix_str in ARR_RAD:
return ARR_RAD.find(radix_str)
return ARR_RADIX.find(radix_str)