No description
Find a file
2023-03-13 12:34:54 -03:00
docs adding changes for 1.9.9 2023-03-13 12:34:54 -03:00
src adding changes for 1.9.9 2023-03-13 12:34:54 -03:00
tests adding changes for 1.9.9 2023-03-13 12:34:54 -03:00
LICENSE adding changes for 1.9.6 2023-02-15 18:40:38 -03:00
README.md adding changes for 1.9.9 2023-03-13 12:34:54 -03:00
test.sh adding changes for 1.9.0 2022-05-21 13:19:00 -03:00
xam.nimble adding changes for 1.9.9 2023-03-13 12:34:54 -03:00

xam

a multipurpose productivity library for nim

MOTIVATION

"If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to starth with."

  • Edger Dijkstra, The Humble Programmer, 1972

CHARACTERISTICS

  • no external dependencies (just nim)
  • self-documenting api (descriptive long proc names)
  • full unit testing
  • markdown documentation

based on my Java Ace project https://github.com/j-a-s-d/ace

MODULES

All the following modules are included in xam (no extra includes are required):

  • xam, general features
  • ansi, ansi related routines
  • bytes, bytes related constants
  • callbacks, common callback declarations
  • cctlds, country code top-level domains related constants
  • chars, chars related constants
  • currencies, currencies related constants
  • directories, directories related routines
  • exceptions, exceptions related routines
  • files, files related routines
  • hex, hex related constants
  • hgtlds, historical generic top-level domains related constants
  • html, html related constants and routines
  • jsons, json related constants and routines
  • languages, languages related constants
  • looping, looping related routines
  • maths, math related constants and routines
  • multiplatform, multiplatform aliases (only harmless ones)
  • nimlang, nimlang related constants and routines
  • semanticversion, semantic version object
  • seqs, sequences related routines
  • set, sequences related routines
  • sizes, sizes related constants and routines
  • strings, strings related constants and routines
  • structures, structures related routines
  • temp, temporary files related constants and routines
  • time, time related constants and routines

Also check my projects which use xam as a dependency:

  • rodster, my application framework for nim
  • webrod, my http server for nim
  • preprod, my customizable preprocessor for nim

HISTORY

  • 13-03-23 [1.9.9]
    • added chars hex value constants
    • added strings getLastChar routine
    • added multiplatform common native types converters
    • added multiplatform pascal-like deprecated, experimental, platform and unimplemented templates
  • 25-02-23 [1.9.8]
    • added xam used template
    • added html HTML_TAGS_COMMAND constant
    • added html HTML_ALL_TAGS and HTML_VOID_TAGS constant sequences
    • added multiplatform racket-like display and displayln output aliases
    • added multiplatform haskell-like putStr output alias
    • improved multiplatform print, println, writeln, putStrLn, puts and say aliases implementation
  • 21-02-23 [1.9.7]
    • added time DATETIME_FORMAT_MMDDYYYY, DATETIME_FORMAT_HHMMSS, DATETIME_FORMAT_MMDDYYYY_HHMMSS, DATETIME_FORMAT_DDMMYYYY_HHMMSS and DATETIME_FORMAT_YYYYMMDD_HHMMSS constants
    • added files stripFileExtension and extractFilenameWithoutExtension routines
    • added multiplatform pascal-like splitString split alias
    • improved strings hasText routine implementation
  • 15-02-23 [1.9.6]
    • added maths constrain routine
    • added strings extractInBetween routine
    • added currencies constants
  • 10-02-23 [1.9.5]
    • added maths floatInterpolate routine
    • added maths VALUE_INVERSE_PI, VALUE_INVERSE_SQRTPI and VALUE_INVERSE_SQRT3 constants
    • added cctlds constants
    • added hgtlds constants
  • 11-10-22 [1.9.4]
    • added maths VALUE_LOG2E, VALUE_LNPI, VALUE_SQRTPI, VALUE_SQRT3, VALUE_INVERSE_PHI, VALUE_EULER_MASCHERONI and VALUE_ALPHA constants
    • added html HTML_TAGS_BLINK, HTML_TAGS_BGSOUND, HTML_TAGS_CONTENT, HTML_TAGS_ISINDEX, HTML_TAGS_KEYGEN, HTML_TAGS_LISTING, HTML_TAGS_MARQUEE, HTML_TAGS_MENU, HTML_TAGS_MENUITEM, HTML_TAGS_MULTICOL, HTML_TAGS_NEXTID, HTML_TAGS_NOBR, HTML_TAGS_NOEMBED, HTML_TAGS_PLAINTEXT, HTML_TAGS_RB, HTML_TAGS_RTC, HTML_TAGS_SHADOW, HTML_TAGS_SPACER and HTML_TAGS_XMP constants
    • added multiplatform swift typealias-like alias
  • 19-07-22 [1.9.3]
    • added seqs prepend routine
    • added multiplatform zig unreachable-like code marker alias
  • 16-06-22 [1.9.2]
    • added jsons wrapInJArray overloads supporting native types
    • added jsons JObjectBuilder setAll and putAll methods supporting json object
    • added jsons JObjectBuilder constructor overloads
    • added jsons JArrayBuilder addAll and appendAll methods supporting native types
    • added jsons JArrayBuilder addValues and appendValues methods supporting json array
    • added jsons JArrayBuilder constructor overloads
  • 24-05-22 [1.9.1]
    • added exceptions ExceptionRef type
    • changed seqs peek and slice methods not to require a var sequence to operate
  • 21-05-22 [1.9.0]
    • added seqs date time and json node sequences definitions and constructors
    • added callbacks date time callback definition
    • changed "namespaced let code" constants to "namespaced regular const" to allow optionally declaration (ex. let ALL_HTML_COLORS*: tuple = HTML_COLORS) of the let
    • added multiplatform delphi/cppbuilder/fpc-like FreeAndNil alias
    • added multiplatform c/cpp/etc-like argc arguments count and argc arguments vector alias
    • added multiplatform c#/javascript/swift/powershell/etc-like null coalescing operator
  • 17-05-22 [1.8.1]
    • added files extractFileExtension and checkFileExtension routines
    • added directories ensureDir routine
  • 04-05-22 [1.8.0]
    • added structures routines
    • added languages constants
  • 25-04-22 [1.7.4]
    • added jsons size fluent methods to JsonArrayBuilder and JsonObjectBuilder
  • 24-04-22 [1.7.3]
    • added jsons ensureJsonNode routine
    • added jsons addAll and appendAll methods for JsonArrayBuilder supporting varargs[JsonNode]
    • improved sizes implementation
  • 02-03-22 [1.7.2]
    • added files filesExist, filesDontExist and removeFiles routines
    • added directories routines
  • 23-01-22 [1.7.1]
    • added semanticversion isValidSemanticVersionString routine
  • 15-01-22 [1.7.0]
    • added sets common types definitions
    • added strings STRINGS_BACKTICK and STRINGS_DIAERESIS constants
  • 03-01-22 [1.6.2]
    • added xam exchange template
    • inlined strings piped, tabbed, spaced and lined routines
  • 02-01-22 [1.6.1]
    • added xam withIt template
    • added strings piped, tabbed, spaced and lined routines
  • 26-12-21 [1.6.0]
    • added xam noop, truthy and falsy dummy functions
    • added nimlang constants and routines
    • added math VALUE_TAU constant
    • added callbacks void proc callback definitions
    • added seqs append, isEmpty and hasContent routines
    • added strings stripLeft, stripRight, isEmpty and areEmpty routines
    • added multiplatform ruby-like unless template
    • added multiplatform pyhton/boo/gdscript-like pass template
    • added multiplatform some pascal/c#/js-like string manipulation templates
  • 28-08-21 [1.5.0]
    • added time constants and routines
    • added chronometer into time
    • included datetime into time
  • 01-08-21 [1.4.2]
    • added jsons ensureJObject and ensureJArray routines
  • 24-07-21 [1.4.1]
    • added semanticversion isMajorNewerThan, isMinorNewerThan and isPatchNewerThan routines
  • 14-07-21 [1.4.0]
    • added callbacks taker and treater callback definitions
    • added looping forever, times and json array each/meach templates
    • added multiplatform type aliases
    • added seqs treat routine
    • added strings between routine
  • 11-07-21 [1.3.0]
    • added callbacks json node callback definition
    • added seqs remove routines
    • added seqs concrete-type sequence constructors
    • added strings csv routines
    • improved the markdown documentation for jsons and seqs
  • 30-05-21 [1.2.0]
    • added files routines
  • 26-05-21 [1.1.1]
    • added exceptions throw procedure overload with empty message
    • added exceptions tryIt template
  • 22-05-21 [1.1.0]
    • added temp constants and routines
    • added semanticversion equalsTo, isNewerThan and isOlderThan string overloads
  • 23-04-21 [1.0.1]
    • adjusted the primary source structure since nimble check did not recognized the includes
  • 06-04-21 [1.0.0]
    • improved the markdown documentation for multiplatform and jsons
    • added multiplatform more "nil constant"-like aliases
  • 05-04-21 [0.9.2]
    • added test.sh shell script file
    • added "namespaced let code" constants for all "strongnamed const data" constants in the packages ansi, bytes, chars, datetime, hex, html, sizes and strings
  • 04-04-21 [0.9.1]
    • improved the markdown documentation for jsons
    • refactored ansi into individual includes
  • 03-04-21 [0.9.0]
    • improved the markdown documentation for jsons
    • added jsons model and builders clear routines
    • added jsons model len routine
    • added jsons object builder put routines
  • 31-03-21 [0.8.1]
    • improved the markdown documentation for seqs
    • improved seqs js stack-like slice support
  • 30-03-21 [0.8.0]
    • improved the markdown documentation for seqs
    • added seqs common types definitions
    • added seqs csv routines
    • added used pragma to all the templates provided
  • 28-03-21 [0.7.3]
    • improved the markdown documentation for semanticversion and jsons
    • added looping meach template
  • 26-03-21 [0.7.2]
    • improved the markdown documentation for xam, ansi, bytes, callbacks, chars, datetime, exceptions, hex, html, looping, math, sizes and strings
    • added exceptions throw routine
  • 21-03-21 [0.7.1]
    • added the markdown documentation structure
    • added multiplatform c/pascal/basic-like string concatenation template
  • 15-03-21 [0.7.0]
    • added xam use template
    • refactored xam
    • added multiplatform shutdown routines
    • added multiplatform pascal-like variable assignation template
  • 08-03-21 [0.6.0]
    • added xam isUndefined, inCompileTime and inRunTime templates
    • refactored multiplatform into individual includes
    • added multiplatform introspection aliases
  • 07-03-21 [0.5.0]
    • added jsons serialization and deserialization in model
    • added jsons mandatory untyped fields in model
  • 03-03-21 [0.4.2]
    • added multiplatform sugar's fat arrow functions syntax reexport
    • added xam inlined template
  • 28-02-21 [0.4.1]
    • added jsons fluent api for model
    • refactored xam into individual includes
    • refactored seqs into individual includes
    • refactored strings into individual includes
  • 27-02-21 [0.4.0]
    • refactored hmtl into individual includes
  • 26-02-21 [0.3.3]
    • added jsons loadJsonNodeFromFile and saveJsonNodeToFile routines
    • added exceptions catch routine
  • 23-02-21 [0.3.2]
    • added jsons jmeInvalidNode error for model
  • 22-02-21 [0.3.1]
    • refactored maths into individual includes
    • included parsing into maths
    • added jsons tryParseJson routine
  • 21-02-21 [0.3.0]
    • refactored jsons into individual includes
    • published jsons obtainNode* routines
    • added jsons incremental builders for objects and arrays
    • added jsons objects modelling validation
  • 14-02-21 [0.2.1]
    • added exceptions silent routine
    • added multiplatform c/cpp-like boolean operators templates
  • 13-02-21 [0.2.0]
    • added jsons constants and routines
  • 08-02-21 [0.1.4]
    • added datetime constants and routines
    • added looping templates
    • added multiplatform golang-like shorthand variable declaration template
  • 06-02-21 [0.1.3]
    • added seqstack extract routine
    • improved seqstack drop routine
    • improved xam pragmas
  • 04-02-21 [0.1.2]
    • added maths common degrees constants
  • 02-02-21 [0.1.1]
    • added maths floatIsNaN routine
  • 28-01-21 [0.1.0]
    • first public release
  • 14-01-21 [0.0.1]
    • started coding