Skip to content
Program Exercise Markup Language parser, as a Ruby gem
Ruby Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

PEML: The Program Exercise Markup Language

This repository contains the "peml" ruby gem, a parser for PEML.

The Programming Exercise Markup Language (PEML) (feedback on name choice is welcome!) is intended to be a simple, easy format for CS and IT instructors of all kinds (college, community college, high school, whatever) to describe programming assignments and activities. We want it to be so easy (and obvious) to use that instructors won't see it as a technological or notational barrier to expressing their assignments.

We intend for this format to be something that authors of automated grading tools can adopt, so they can provide a very easy, low-energy onboarding path for existing instructors to get programming activities into such tools. As a result, this notation leans heavily on supporting authors and streamlining common cases, even if this may require more work on the part of tool developers--the goal is to make it super easy for authors of programming activities, not to fit into a specific auto-grader or simplify tasks for tool writers.

For full details on PEML, see:


Add this line to your application's Gemfile:

gem 'peml', :github => 'CSSPLICE/peml'

And then execute:

$ bundle

Or install it using the gem command (may require you to clone the repository and build your own local copy of the gem to install).


require 'peml'

Peml.load("string containing a PEML description")
=> nested hash representation of exercise

=> nested has representation of the exercise

Eventually, we'll also add support for:

require 'peml'

=> string containing exercise rendered in PEML format

=> string containing exercise rendered in PEML format

... but these don't work yet.


Bug reports and pull requests are welcome on GitHub at

You can’t perform that action at this time.