An all-plugins-included version of the Bunyan distributed and pluggable logging system. (Thanks to Benjamin Coppock for letting me steal his project name)
The Bunyan distributed and pluggable logging system
Log message formatter for the Bunyan distributed and pluggable logging system
Shared functionality of the Bunyan distributed and pluggable logging system
API for the Bunyan distributed and pluggable logging system (error, warn, info, and debug functions)
Inject errors and reports from the Erlang error logger into the Bunyan distributed and pluggable logging system
Let this node act as the target for a remote logger in the Bunyan distributed and pluggable logging system
The component that lets the Bunyan distributed and pluggable logging system write to the console and to files
The component that lets a nde forward log messages to another node in the Bunyan distributed and pluggable logging system
The component framework is meant to make it easy to decompose an application into many simple services. It does this by eliminating boilerplate code in common service patterns: source files can be just domain logic. See the GitHub repo for details.
Create fieldsets (aka structs) with validation and Phoenix form_for compatibility, making it easier to separate resource applications from your web frontend.
Diet is a DSL for writing your program logic as a sequence of trivial transformations.
See https://github.com/pragdave/diet_examples for some example code, and https://www.youtube.com/watch?v=L1-amhlGk7c for a talk that contains examples of Diet in action.
DirWalker lazily traverses one or more directory trees, depth first, returning successive file names. Provides both a `next()` and a Stream-based API.
Directory names may optionally be returned. The File.Stat structure associated with the file name may also optionally be returned.
Earmark is a pure-Elixir Markdown converter.
It is intended to be used as a library (just call Earmark.as_html), but can also be used as a command-line tool (run mix escript.build first).
Output generation is pluggable.
Read TIFF and EXIF information from a JPEG-format image.
iex> {:ok, info} = Exexif.exif_from_jpeg_buffer(buffer) iex> info.x_resolution 72 iex> info.model "DSC-RX100M2" ...> Exexif.Data.Gps.inspect info "41°23´16˝N,2°11´50˝E"
A collection of random library functions I use across multiple projects:
pipe_while_ok: Create pipelines that terminate early if any step fails to return a tuple that starts {:ok, ...}
before_returning: Like Ruby's returning, it evaluates its first argument, then evalates the do block. It alway...
Generate a simple free-standing application with an ecto layer, intended to be used as a database resource in an application written using decoupled resources.
A replacement for `mix new «project»` that generates files which I believe to be easier to read and maintain.
A template that generates blank template projects, intended to be used by folks creating their own templates.
Generate a basic umbrella project.
Jeeves is library that transforms regular modules into named or anonymous singleton or pooled GenServers. Just write your business functions, and Jeeves will convert them into an API, a server, and potentially a pooled set of workers.
This application adds a `gen` task to mix, which generates project trees.
Unlike `mix new`, it can be fully customized. You can create private variants for your own use, and publish public ones that can be shared.
A modular, open templating system, designed for use with `mix gen`.
You care about this if:
① you'd like different templates than the ones built in to mix, ② you'd like to create your own templates, or ③ you have created a package such as Phoenix or Nerves that needs its own project se...
Lets you define multiple heads for the same function:
defmodule Test do
import MultiDef
mdef fred do { :init, val } -> fred {:double, val} { :double, val } -> IO.puts(val*2) a, b -> a+b end end
IO.inspect Test.fred 1, 2 ...
Run functions periodically: each function can be called on a different schedule.
PipeWhileOk ===========
Moved to https://githib.com/pragdave/exlibris
Construct streams of values by specifying composable generator functions. For example list(tuple(like: {atom, string})) will generate a random length keyword list with random keys and values. Constraints can be applied at all levels.
Make private functions public if Mix.env is :test
A simple property-based testing framework written in pure Elixir.
Generate a stream of random-ish floats between -1 and 1 using the Perlin algorithm. When plotted, the points will tend to form a smooth curve. This is useful when generating mock values that are supposed to be "natural."
A simple implement of the Hungry Consumer model of concurrent servers.