Skip to content

zovafit/voxpop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Voxpop

Voxpop generates text from declarative grammars.

It is roughly a version of Calyx ported to Elixir.

Installation

If available in Hex, the package can be installed as:

  1. Add voxpop to your list of dependencies in mix.exs:

    def deps do [{:voxpop, "~> 0.0.2"}] end

Usage

The API is still currently in flux while I work some things out, but in the general case, you do things like this:

iex> Voxpop.generate %Voxpop.Grammar.Definition{start: "Hello {greeting}!", rules: %{greeting: "world"}}
"Hello World"

Your rules can have multiple options which will be randomly chosen:

%Voxpop.Grammar.Definition{start: "Hello {group}!", rules: %{group: ["comrades", "folks", "friends"]}}

There is also a DSL, if you'd prefer to define your grammar as part of a module:

defmodule MyGrammar do
  use Voxpop.Grammar

  start "{greeting} {group}!"
  rule :greeting, "Hello"
  rule :group, "World"
end

MyGrammar.evaluate

You can also evaluate using a run-time defined start rule:

MyGrammar.evaluate("{group}, {greeting}!")

Plans

The plan is to make Voxpop powerful enough that it can generate text for sophisticated applications like chat user interfaces. That is going to take a few steps:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages