Skip to content
Novus Examples
rb658 B

Ruby — Stack (Enumerable, blocks, custom error)

A realistic Ruby snippet: a Stack class that mixes in Enumerable, yields blocks, raises a custom error class, and uses string interpolation and symbol-to-proc — for testing highlighters, RuboCop, and parsers.

Preview — first 40 linesrb
# frozen_string_literal: true

# A generic stack: a class that mixes in Enumerable, uses blocks,
# and raises a custom error.
class Stack
  include Enumerable

  class EmptyError < StandardError; end

  def initialize
    @items = []
  end

  def push(item)
    @items.push(item)
    self
  end

  def pop
    raise EmptyError, "stack is empty" if @items.empty?

    @items.pop
  end

  def each(&block)
    @items.reverse_each(&block)
  end

  def size
    @items.size
  end
end

stack = Stack.new
%w[alpha beta gamma].each { |word| stack.push(word) }

puts "top: #{stack.pop}"
puts "remaining: #{stack.map(&:upcase).join(', ')}"
puts "size: #{stack.size}"

Specifications

Language
Ruby
Kind
realistic snippet
Lines
39
Encoding
UTF-8
Line Endings
LF

Testing contract

Expected to pass
Scenario
Run the file and confirm the iteration order the Enumerable mixin produces.
Expected result
It prints `top: gamma`, then `remaining: BETA, ALPHA`, then `size: 2`. The order is the assertion that matters: `each` is defined with `reverse_each`, so `map` walks the stack top-down, and popping an empty Stack raises `Stack::EmptyError` rather than returning nil.

What is a .rb file?

Ruby (.rb) is a plain-text source file for the Ruby programming language — a dynamically typed, object-oriented scripting language known for expressive, readable syntax and blocks. Everything is an object, and it is widely used for web development (Rails), scripting, and automation.

How to use this file

Use an example .rb file to test syntax highlighters, the Ruby interpreter, linters and formatters (RuboCop), and parser or language-detection tooling.

How to use this file for testing

“Ruby — Stack (Enumerable, blocks, custom error)” is a deterministic Novus Examples fixture for Syntax highlighting, Code parsing, Editor testing. Idiomatic hello-world programs and realistic snippets across sixteen languages, exercising comments, string escapes, interpolation, numeric literals, and language keywords — for testing syntax highlighters, editor themes, and tree-sitter grammars.

Documented properties for this file: Ruby · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

This is a short, known-correct source file. Run it through your syntax highlighter, linter, formatter, tree-sitter grammar, or parser, and open it in the in-browser editor to tweak and re-download. Each snippet exercises comments, string escapes, literals, and language keywords.

Code examples

ruby stack.rb

Generated by generation/code_samples.py. Free for any use, no attribution required — license.