Freddylist Llama Save Abandoned

Luau Library for Immutable Data

Project README

⚠️ No longer maintained ⚠️

Hello all! Since I do not do much Roblox game development these days (among other reasons), I will no longer be maintaining Llama.

Thank you to all of Llama's contributors, and I am verry sorry for any inconveniences I have caused.

If you have a good alternative to Llama, email me at [email protected] so I can link to it in this readme and archive Llama.

I recommend you do not fork Llama for these reasons:

  • Runtime typechecking (present in Llama) is not really needed anymore with the advent of Luau type analysis.
  • The tests are a bit of a mess.
  • I'm sure Llama could've been designed better.
  • Many other minor reasons...

If I do return to Roblox development in the future and no alternatives have been created yet, I may create a new immutable collections library. I will then hopefully have more experience with open-source projects and software development in general.

Thank you all again!

? Llama ?

GitHub Actions Build Status Documentation
Lua Library for Immutable Data
Llama

Installation

There are a few ways to get started with Llama.

Method 1: Import model file

  1. Download the .rbxmx model file from the latest release on the Llama releases page.
  2. Insert the model anywhere in a Roblox place!

Method 2: Good ol' copy + paste

  1. Copy the src directory of Llama into your project.
  2. Rename it to Llama.
  3. Make sure you put t under the Llama directory. (this step will hopefully be resolved in the future by package managers or Luau type-checking)
  4. Use something like Rojo to sync your project to Roblox Studio!

Method 3: Git submodule

  1. Navigate to where you want to keep your submodules in Git bash.
  2. Run git submodule add https://github.com/F-RDY/llama.git.
  3. Using something like Rojo, set up your project to sync Llama/src into Roblox Studio!

Method 4: Package manager

Coming Soon™

Usage

Basic usage

To use Llama, simply require it as a module from where you installed it! It is also recommended that you set Llama.Dictionary, Llama.List, and Llama.Set to their own variables; otherwise, you'll be typing a lot!

-- Other modules...
local Llama = require(LlamaPath)

local Dictionary = Llama.Dictionary
local List = Llama.List
local Set = Llama.Set

Usage with Roact and Rodux

Rodux requires your state to be immutable, so Llama is a great choice for manipulating it!

local function reducer(state, action)
	if action.type == "Add" then
		return Dictionary.merge(state, {
			counter = counter + 1
		})
	elseif action.type == "Subtract" then
		return Dictionary.merge(state, {
			counter = counter - 1
		})
	end
end

Visit the docs for examples and API reference.

Special Thanks

What's in a name?

Llamas are members of the Camelid group of mammals along with alpacas, camels, and dromedaries, which are known for being very stubborn but reliable animals.

Open Source Agenda is not affiliated with "Freddylist Llama" Project. README Source: freddylist/llama
Stars
54
Open Issues
8
Last Commit
2 years ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating