Qore Util Module Reference 1.9
Loading...
Searching...
No Matches
Util.qm.dox.h
1// -*- mode: c++; indent-tabs-mode: nil -*-
3
4/* Util.qm Copyright 2014 - 2023 Qore Technologies, s.r.o.
5
6 Permission is hereby granted, free of charge, to any person obtaining a
7 copy of this software and associated documentation files (the "Software"),
8 to deal in the Software without restriction, including without limitation
9 the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 and/or sell copies of the Software, and to permit persons to whom the
11 Software is furnished to do so, subject to the following conditions:
12
13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software.
15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 DEALINGS IN THE SOFTWARE.
23*/
24
25// minimum Qore version
26
27// do not use $ for vars, assume local var scope
28
29// require type definitions everywhere
30
31// enable all warnings
32
33}
34
172namespace Init {
173 init();
174
175};
176
178namespace Util {
180
182 public hashdecl UriQueryInfo {
184 string method;
185
187 *hash<auto> params;
188
190
192 *hash<auto> path_params;
193 };
194
196
213 int parse_memory_size(string str, *bool use_binary);
214
215
217
230 int compare_version(string lv, string rv);
231
232
234
252 string normalize_dir(string path, string cwd = getcwd());
253
254
256
271 string normalize_dir_unix(string path, string cwd = getcwd());
272
273
275
290 string normalize_dir_windows(string path, string cwd = getcwd());
291
292
294
307 string get_relative_path(string basedir, string path, string cwd = getcwd());
308
309
311
324 bool absolute_path(string path);
325
326
328
341 bool absolute_path_unix(string path);
342
343
345
358 bool absolute_path_windows(string path);
359
360
361 // private, non-exported helper function for parse_memory_size()
362 int _get_size(string num, number mult);
363
364
365 // private, non-exported constant hashes for scan_exp() below
366 const ParenMap = (")": "(", "}": "{", "]": "[",);
367 const FwdParenMap = map {$1.value: $1.key}, ParenMap.pairIterator();
368
369 // private, non-exported constants for parsing
370 const ET_RawString = 0;
371 const ET_QuotedString = 1;
372 const ET_BracketString = 2;
373 const ET_CurlyBracketString = 3;
374 const ET_Eq = 4;
375 const ET_Comma = 5;
376 const EtMap = {
377 ET_RawString: "raw string",
378 ET_QuotedString: "quoted string",
379 ET_BracketString: "bracket expression",
380 ET_CurlyBracketString: "curly bracket expression",
381 ET_Eq: "=",
382 ET_Comma: ",",
383 };
384 const Suffixes = ("th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th");
385
386 // private scanner for parse_to_qore_value()
387 list<hash> scan_exp(string arg);
388
389
390 // private, non-exported function: tries to evaluate the argument as a Qore expression/value
391 hash<auto> eval_text(string arg, bool err = False);
392
393
394 // private, non-exported function: tries to evaluate the argument as a Qore expression/value
395 /* returns the value parsed
396 */
397 auto parse_to_basic_value(*string arg);
398
399
401
472 auto parse_to_qore_value(string arg);
473
474
476
494 string serialize_to_string(auto val);
495
496
498
506 hash<UriQueryInfo> parse_uri_query(string path);
507
508
510
515 string make_uri_query(hash<UriQueryInfo> h, string arg_separator = ';');
516
517
519
535 string get_random_string(softint len = 15, int level = 3);
536
537
539
543 string get_exception_string(hash<auto> ex);
544
545
547 const StorageNames = ("Kilo", "Mega", "Giga", "Tera", "Peta", "Exa", "Zetta", "Yotta", "Bronto");
548
550 const StorageAbbr = map {$1[0].lwr(): $#}, StorageNames;
551
553
561 string get_byte_size(softnumber n, int decimals = 2);
562
563
565
573 string get_marketing_byte_size(softnumber n, int decimals = 2);
574
575
577
588 bool same(list<auto> l);
589
590
592
602 list<auto> slice(list<auto> l, softlist<auto> indices);
603
604
606
625 string tmp_location();
626
627
629
646 bool is_int(string text, bool pure = False);
647
648
649 const RE_FLOAT = ...;
650
651
653
670 bool is_float(string text, bool pure = False);
671
672
673 const RE_NUMBER = ...;
674
675
677
695 bool is_number(string text, bool pure = False);
696
697
699
714 string lpad(softstring text, int length, string padding = ' ');
715
716
718
733 string rpad(softstring text, int length, string padding = ' ');
734
735
737
748 string ordinal(int i);
749
750
752
771 string plural(int count, string base, string singular = '', string plural = 's');
772
773
775
787 string regex_escape(string text);
788
789
791
803 string glob_to_regex(string pat);
804
805
807
818 list<auto> flatten(softlist<auto> arg);
819
820
822
833 list<int> parse_ranges(string text);
834
835
837
854 list<auto> uniq(softlist<auto> arg);
855
856
858
869 list<auto> zip();
870
871
873
887 bool check_ip_address(string ip, bool exception = False);
888
889
891
896 bool string_starts_with(string str, string substr);
897
898
900
905 bool string_ends_with(string str, string substr);
906
907
909 public hashdecl UrlRetrievalOptions {
911 bool as_binary = False;
912
915
917 *hash<auto> http_headers;
918
921
924 };
925
927
935 data get_file_from_sftp(string url, string path, *hash<UrlRetrievalOptions> options);
936
937
939
947 data get_file_from_ftp(string url, string path, *hash<UrlRetrievalOptions> options);
948
949
951
957 data get_file_from_http(string url, *string path, *hash<UrlRetrievalOptions> options);
958
959
961
966 data get_local_file(string path, *hash<UrlRetrievalOptions> options);
967
968
970
977 data get_file_from_url(string url, *hash<UrlRetrievalOptions> options);
978
979
981
987 string substitute_env_vars(string str);
988
989};
the Util namespace contains all the objects in the Util module
Definition: Util.qm.dox.h:178
string normalize_dir_windows(string path, string cwd=getcwd())
returns a normalized Windows path name (eliminates ".", "..", and "//")
string get_byte_size(softnumber n, int decimals=2)
returns a string giving a user-friendly real storage size (ie based on 1KiB = 1024 bytes) in KiB,...
data get_file_from_http(string url, *string path, *hash< UrlRetrievalOptions > options)
Retrieves file data from an HTTP URL.
list< auto > zip()
Returns a list of lists, where the i-th list contains the i-th element from each of the argument list...
data get_file_from_ftp(string url, string path, *hash< UrlRetrievalOptions > options)
Retrieves file data from an FTP URL and a path.
string tmp_location()
Returns a path for temporary files.
list< auto > slice(list< auto > l, softlist< auto > indices)
list slice implementation
string make_uri_query(hash< UriQueryInfo > h, string arg_separator=';')
returns a serialized string for a UriQueryInfo hash
string serialize_to_string(auto val)
Serializes the given value to a string that can be deserialized with parse_to_qore_value()
bool same(list< auto > l)
checks whether given list has only unique elements
data get_local_file(string path, *hash< UrlRetrievalOptions > options)
Retrieves file data from a local file path.
string get_random_string(softint len=15, int level=3)
function that returns a random string
string ordinal(int i)
Returns string with partially textual representation of ordinal integer value.
string normalize_dir_unix(string path, string cwd=getcwd())
returns a normalized UNIX path name (starting from /, eliminates ".", "..", and "//")
string normalize_dir(string path, string cwd=getcwd())
returns a platform-specific normalized path name (starting from /, eliminates ".",...
bool is_number(string text, bool pure=False)
Checks whether string represents a (true) number value.
data get_file_from_sftp(string url, string path, *hash< UrlRetrievalOptions > options)
Retrieves file data from an SFTP URL and a path.
string lpad(softstring text, int length, string padding=' ')
Returns a string left-padded to a specified length with the specified characters.
list< auto > flatten(softlist< auto > arg)
Flattens a nested list (the nesting can be to any depth).
bool is_float(string text, bool pure=False)
Checks whether string represents a (true) float value.
auto parse_to_qore_value(string arg)
tries to convert a string (such as an argument given from the command-line) to a Qore value
bool absolute_path_windows(string path)
returns True if the argument is a Windows absolute path, False if not
string get_marketing_byte_size(softnumber n, int decimals=2)
returns a string giving a user-friendly "marketing storage" size (ie based on 1KB = 1000 bytes) in KB...
hash< UriQueryInfo > parse_uri_query(string path)
parses a URI path for a arguments and a method; where the method is the part of the path before the f...
string glob_to_regex(string pat)
Translates a shell pattern to a regular expression.
string rpad(softstring text, int length, string padding=' ')
Returns a string right-padded to a specified length with the specified characters.
data get_file_from_url(string url, *hash< UrlRetrievalOptions > options)
Retrieves file data from the given URL.
string get_exception_string(hash< auto > ex)
returns a multi-line string from the exception hash argument suitable for logging or output on the co...
string substitute_env_vars(string str)
Substitutes environment variables in a string and returns the string.
bool string_starts_with(string str, string substr)
Verifies whether a string begins with specific substring.
const StorageNames
storage names (Geop, which would normally follow Bronto, is excluded as the abbreviation would be GB/...
Definition: Util.qm.dox.h:547
string regex_escape(string text)
Escapes (backslashes) all non-alphanumeric characters in a string.
list< int > parse_ranges(string text)
Parses a string and returns a list of integers.
int compare_version(string lv, string rv)
compares complex versions by breaking down strings into component parts
string plural(int count, string base, string singular='', string plural='s')
Returns string with number and proper singular/plural form of noun.
bool string_ends_with(string str, string substr)
Verifies whether a string ends with specific substring.
bool absolute_path_unix(string path)
returns True if the argument is a UNIX absolute path, False if not
bool check_ip_address(string ip, bool exception=False)
verifies if a string is an IPv4 or IPv6 address
bool is_int(string text, bool pure=False)
Checks whether string represents a (true) integer value.
int parse_memory_size(string str, *bool use_binary)
Returns a size in bytes from a string where "1M" = 1048576 and so forth.
list< auto > uniq(softlist< auto > arg)
Returns a duplicate-free version of the list.
string get_relative_path(string basedir, string path, string cwd=getcwd())
returns a path as a relative path from another directory
const StorageAbbr
hash of single-letter storage name abbreviations
Definition: Util.qm.dox.h:550
bool absolute_path(string path)
returns True if the argument is an absolute path, False if not
the return value of the parse_uri_query() function
Definition: Util.qm.dox.h:182
*hash< auto > params
(only present if a "?" character is present in the input); the part of the path after the first "?...
Definition: Util.qm.dox.h:187
string method
the part of the URI path before the first "?" character or the entire path if no "?...
Definition: Util.qm.dox.h:184
*hash< auto > path_params
path params; only when matching a request with a REST schema
Definition: Util.qm.dox.h:192
URL retrieval options for get_file_from_url()
Definition: Util.qm.dox.h:909
*string ssh2_private_key
SSH2 private key path.
Definition: Util.qm.dox.h:920
bool as_binary
Return the file data as binary data; if False (the default), a string will be returned.
Definition: Util.qm.dox.h:911
*hash< auto > http_headers
HTTP headers to add to any HTTP GET request.
Definition: Util.qm.dox.h:917
*string default_path
The default path for files with relative paths.
Definition: Util.qm.dox.h:914
*string ssh2_public_key
SSH2 public key path.
Definition: Util.qm.dox.h:923