Skip to content
A Ruby implementation of parts of the Elixir standard library
Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
CHANGELOG.md
MIT-LICENSE
README.md
Rakefile
elixir.rb.gemspec
gem.deps.rb

README.md

Elixir.rb

Build Status

The Elixir standard library in Ruby!

So far there are partial implementations of the following Elixir modules:

  • Agent
  • Atom
  • Base
  • Dict
  • Enum
  • File
  • Float
  • Integer
  • List
  • OptionParser
  • Path
  • Range
  • Set
  • Stream
  • String
  • System
  • Task
  • Tuple
  • Version

Requirements

Ruby 2.2+

Installation

gem install elixir.rb

Examples

Stream.unfold/2

require 'elixir/stream'

include Elixir

Fib = Stream.unfold [0, 1] do |a, b|
  [a, [b, a + b]]
end

Fib.size
#=> Infinity

Fib.take 5
#=> [0, 1, 1, 2, 3]

Agent and Task

require 'elixir/agent'
require 'elixir/task'

include Elixir

status, agent = Agent.start { 0 }
#=> [:ok, #<Concurrent::Atomic:...>]

Agent.cast(agent) { |value| value + 42 }
#=> :ok

Agent.get agent, &:next
#=> 43

task = Task.async do
  sleep 0.5

  Agent.get agent, &:itself
end
#<Concurrent::IVar:...>

Task.await task
#=> 42

Development

Install Elixir.rb and its deps:

git clone https://github.com/havenwood/elixir.rb
cd elixir.rb
gem install -g --no-lock

Run the tests:

RUBYGEMS_GEMDEPS="-" rake
You can’t perform that action at this time.