unist utility to remove positions from a tree
Efficient implementation of Levenshtein algorithm with locale-specific collator support.
Fast deep equal
TypeScript definitions and runtime utilities for the Positron API
Fastest deep equal comparison for React. Great for React.memo & shouldComponentUpdate. Also really fast general-purpose deep comparison.
React is a JavaScript library for building user interfaces.
Property based testing framework for JavaScript (like QuickCheck)
Validate XML, Parse XML, Build XML without C/C++ based libraries
CSV parser and writer
fast-csv formatting module
fast-csv parsing package
Dependency-free RFC 3986 URI toolbox
deterministic `JSON.stringify()` - a faster version of substack's json-stable-strigify without jsonify
Build XML from JSON without C/C++ based libraries
A fast and minimal alternative to globby and fast-glob
fork of fast-memoize and support esm
Force V8 to use fast properties for an object
Parse HTTP Content-Type header according to RFC 7231
Build and manage the fast-json-stringify instances for the fastify framework
Stringify your JSON at max speed
PNG image decoder and encoder written entirely in JavaScript
Fast Javascript text diff
A tiny and fast text wrap library which takes ANSI escapes into account.
It's a very fast and efficient glob library for Node.js
Bloom filters are fast, compact, probabalistic data structures that allow set filtering with a configurable rate of false positives. This plugin adds .bloom_filter.uniq, .bloom_filter.only([collection]), and .bloom_filter.except([collection]) to the available routes methods in Pacer.
Creates a Set class with methods that allow you to construct and opperate on set instances. A 'Bignum' instance is used internally to store each element of the set. This allows very fast operations when comparing two set instances. Member elements can be represented as positive small integers, or characters. Sets can be constructed with integers, strings, characters, ranges, and arrays. When characters are used, the ordinate value sets the element bit of the internal Bignum.
|> Distributed locks with "prioritized lock acquisition queue" capabilities based on the Redis Database. |> Each lock request is put into the request queue (each lock is hosted by its own queue separately from other queues) and processed in order of their priority (FIFO). |> Each lock request lives some period of time (RTTL) (with requeue capabilities) which guarantees the request queue will never be stacked. |> In addition to the classic `queued` (FIFO) strategy RQL supports `random` (RANDOM) lock obtaining strategy when any acquirer from the lock queue can obtain the lock regardless the position in the queue. |> Provides flexible invocation flow, parametrized limits (lock request ttl, lock ttl, queue ttl, lock attempts limit, fast failing, etc), logging and instrumentation.
Rangeable is a language-neutral, generic, integer-coordinate closed-interval set container. It pairs hashable elements with their merged disjoint integer ranges and answers three queries: by-element ranges, by-position active set, and by-range transition events. The Ruby reference implementation follows the Rangeable RFC normatively, including idempotent containment fast-path, lazy boundary-event indexing, and first-insert deterministic ordering.
== Description ["Kiwi is a versatile entity component system focussing on fast iteration and a nice api.\n", "\n", "To get started, read the [usage guide](#usage) below.\n", "\n", "[](https://github.com/Jomy10/kiwi-ecs-ruby/actions/workflows/tests.yml)\n", "\n", "## Installation\n", "\n", "The library is available from [ruby gems](https://rubygems.org/gems/kiwi-ecs):\n", "\n", "```sh\n", "gem install kiwi-ecs\n", "```\n", "\n", "To use it in your ruby source files:\n", "\n", "```ruby\n", "require 'kiwi-ecs'\n", "```\n", "\n", "## Usage\n", "\n", "### The world\n", "\n", "The world is the main object that controls the ecs.\n", "\n", "```ruby\n", "world = Kiwi::World.new\n", "```\n", "\n", "### Components\n", "\n", "Creating a component is as simple as declaring a struct:\n", "\n", "```ruby\n", "Position = Struct.new :x, :y\n", "```\n", "\n", "Classes can also be used instead of structs\n", "\n", "```ruby\n", "class Velocity\n", " attr_accessor :x\n", " attr_accessor :y\n", "end\n", "```\n", "\n", "### Entities\n", "\n", "An entity is spawned with a set of components:\n", "\n", "```ruby\n", "entityId = world.spawn(Position.new(10, 10))\n", "\n", "world.spawn(Position.new(3, 5), Velocity.new(1.5, 0.0))\n", "```\n", "\n", "The `world.spawn(*components)` function will return the id of the spawned entity.\n", "\n", "Killing an entity can be done using `world.kill(entityId)`:\n", "\n", "```ruby\n", "world.kill(entityId)\n", "```\n", "\n", "### Systems\n", "\n", "#### Queries\n", "\n", "Queries can be constructed as follows:\n", "\n", "```ruby\n", "# Query all position componentss\n", "world.query(Position) do |pos|\n", " puts pos\n", "end\n", "\n", "# Query all entities having a position and a velocity component, and their entity ids\n", "world.query_with_ids(Position, Velocity) do |id, pos, vel|\n", " # ...\n", "end\n", "```\n", "\n", "### Flags\n", "\n", "Entities can be tagged using flags\n", "\n", "#### Defining flags\n", "\n", "A flag is an integer\n", "\n", "```ruby\n", "module Flags\n", " Player = 0\n", " Enemy = 1\n", "end\n", "```\n", "\n", "#### Setting flags\n", "\n", "```ruby\n", "id = world.spawn\n", "\n", "world.set_flag(id, Flags::Player)\n", "```\n", "\n", "#### Removing a flag\n", "\n", "```ruby\n", "world.remove_flag(id, Flags::Player)\n", "```\n", "\n", "#### Checking wether an entity has a flag\n", "\n", "```ruby\n", "world.has_flag(id, Flags::Player)\n", "```\n", "\n", "#### Filtering queries with flags\n", "\n", "```ruby\n", "world.query_with_ids(Pos)\n", " .filter do |id, pos|\n", " world.has_flag(id, Flags::Player)\n", " end\n", " .each do |id, pos|\n", " # Do something with the filtered query\n", " end\n", "```\n", "\n", "The `hasFlags` function is also available for when you want to check multiple flags.\n", "\n", "## Road map\n", "\n", "- [ ] System groups\n", "\n", "## Contributing\n", "\n", "Contributors are welcome to open an issue requesting new features or fixes or opening a pull request for them.\n", "\n", "## License\n", "\n", "The library is licensed under LGPLv3.\n"]
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.