IntrohiveExpressionLanguage
IEL is a programming language built primarily for embedding into ruby software. It is designed to be a safe language for end users to use. It is in the functional style of languages like lisp which makes it very appropriate for expression evaluation. It also makes more complex logic easy to implement as users can define their own functions and call them. Its standard library contains functions to manipulate data and control execution flow.
Installation
Add this line to your application's Gemfile:
gem 'introhive_expression_language'
And then execute:
$ bundle
Or install it yourself as:
$ gem install introhive_expression_language
Development
After checking out the repo, run bin/setup to install dependencies. Then, run bundle exec rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. See the Versioning section for instructions on releasing a new version.
Versioning
Every change to this gem — including bug fixes, new features, and dependency updates — requires a version bump in lib/introhive_expression_language/version.rb before merging.
This project follows Semantic Versioning:
| Version segment | When to increment |
|---|---|
x (major) |
Breaking changes to the public API (e.g. removing or renaming functions in Evaluator, EvaluationContext, or StdLib) |
y (minor) |
New backwards-compatible functionality (e.g. new stdlib functions, new evaluator features, new public Ruby API) |
z (patch) |
Backwards-compatible fixes, dependency updates, Ruby version bumps, tooling changes |
Steps to release
- Bump the version in
lib/introhive_expression_language/version.rb - Run
bundle installto updateGemfile.lock - Commit both files and merge the PR
- Run
bundle exec rake releaseto tag, push, and publish the.gem
After the new version is published, update the introhive_expression_language reference in any downstream projects to point to the new version.
Continuous Integration
This project uses GitHub Actions for continuous integration. The CI workflow runs on every push and pull request to the master branch. You can view the status of builds and tests in the Actions tab.