gonzedge/rambling-trie

View on GitHub
lib/rambling/trie/stringifyable.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module Rambling
  module Trie
    # Provides the +String+ representation behavior for the trie data structure.
    module Stringifyable
      # String representation of the current node, if it is a terminal node.
      # @return [String] the string representation of the current node.
      # @raise [InvalidOperation] if node is not terminal or is root.
      def as_word
        if letter && !terminal?
          raise Rambling::Trie::InvalidOperation,
            'Cannot represent branch as a word'
        end

        to_s
      end

      # String representation of the current node.
      # @return [String] the string representation of the current node.
      def to_s
        parent.to_s + letter.to_s
      end
    end
  end
end