A comprehensive utility package providing foundational functions for data manipulation, collections management, display formatting, and type introspection.
- Array Operations: Booleanization, matrix diagonal operations, array stacking, and view operations
- Collections Management: Dictionary to NamedTuple conversion, NamedTuple manipulation, table operations
- String Utilities: Case conversion, formatting, and prefix/suffix manipulation
- Number Utilities: Value clamping, validation, and invalid number handling
- Display & Formatting: Colored terminal output, ASCII art banners, logging utilities
- Type Introspection: Type hierarchy exploration, docstring generation, method utilities
- Performance: Type-stable functions designed for performance-critical workflows
The package keeps a flat API for convenience (e.g. positive_mask(...)), but also exposes submodules:
using OmniTools
OmniTools.ForArray.positive_mask([1, 0, -1])
OmniTools.ForNumber.replace_invalid_number(NaN, 0.0)Note: long-tuple utilities live under OmniTools.ForLongTuples to avoid naming conflicts with Base and with the exported LongTuple type.
using Pkg
Pkg.add("OmniTools")using OmniTools
# Convert dictionary to NamedTuple
dict = Dict(:a => 1, :b => 2, :c => Dict(:d => 3))
nt = dict_to_namedtuple(dict)
# Display a banner (FIGlet)
print_figlet_banner("OmniTools")
# Work with arrays
arr = [1, 2, 3, 0, -1, 5]
bool_arr = positive_mask(arr)
# String utilities
str = to_uppercase_first("hello_world", "Time") # Returns :TimeHelloWorld
positive_mask: Convert arrays to boolean masksupper_triangle_mask,lower_triangle_mask,off_diagonal_mask: Matrix mask helpersoff_diagonal_elements,upper_off_diagonal_elements,lower_off_diagonal_elements: Extract off-diagonal elementsstack_as_columns: Stack multiple arrays as columnsview_at_trailing_indices: Create array views using trailing indices
dict_to_namedtuple: Convert nested dictionaries to NamedTuplesnamedtuple_from_names_values: Create NamedTuples from names + valuesdrop_namedtuple_fields: Remove fields from NamedTuplesmerge_namedtuple_prefer_nonempty: Combine NamedTuples (preferring non-empty fields)table_to_namedtuple: Convert tables to NamedTuplesset_namedtuple_field,set_namedtuple_subfield: Modify NamedTuple fieldslist_to_table: Convert lists to aTypedTables.Tableduplicates: Find duplicate elements
to_uppercase_first: Convert strings to camelCase/PascalCase
clamp_zero_one: Clamp values between 0 and 1at_least_zero,at_least_one,at_most_zero,at_most_one: Value limiting functionsis_invalid_number: Check for invalid numbersreplace_invalid_number: Replace invalid valuessafe_divide: Safe divide (returns numerator if denominator is zero)cumulative_sum!: In-place cumulative sum (dest-first:cumulative_sum!(output, input))
print_figlet_banner: Display ASCII art banners (FIGlet)print_info: Display formatted informationprint_info_separator: Display separatorsset_log_level: Configure logging levelstoggle_type_abbrev_in_stacktrace: Toggle stack trace display
get_type_docstring: Generate formatted docstrings for typeswrite_type_docstring: Write type docstrings to filesloop_write_type_docstring: Batch write type docstrings
Accessors: Nested data structure accessCrayons: Colored terminal outputDataStructures: Collection utilitiesFIGlet: ASCII art generationInteractiveUtils: REPL utilitiesLogging: Logging frameworkStyledStrings: Styled text outputTypedTables: Typed table structures
For detailed documentation, see the OmniTools.jl documentation.
This package is licensed under the EUPL-1.2 (European Union Public Licence v. 1.2). See the LICENSE file for details.
Contributions are welcome! Please open an issue or pull request in this repository.
OmniTools.jl Contributors