# frozen_string_literal: true module Docs class Entry class Invalid < StandardError; end attr_accessor :name, :type, :path def initialize(name = nil, path = nil, type = nil) self.name = name self.path = path self.type = type unless root? raise Invalid, 'missing name' if !name || name.empty? raise Invalid, 'missing path' if !path || path.empty? raise Invalid, 'missing type' if !type || type.empty? end end def ==(other) other.name == name && other.path == path && other.type == type end def name=(value) @name = value.try :strip end def type=(value) @type = value.try :strip end def root? path == 'index' end def as_json { name: name, path: path, type: type } end end end