lib/makit/tree.rb



# frozen_string_literal: true


# This module provides classes for the Makit gem.

module Makit
  class Tree
    def get_source_tree
      files = `git ls-files`.split("\n")
      tree = {}

      # Build a nested hash representing the file structure

      files.each do |file|
        parts = file.split("/")
        current = tree

        parts.each_with_index do |part, index|
          current[part] ||= (index == parts.length - 1 ? nil : {})
          current = current[part] unless current[part].nil?
        end
      end

      generate_tree_string(tree)
    end

    def generate_tree_string(tree, indent = "")
      result = ""
      tree.each do |key, value|
        if value.is_a?(Hash)
          result << "#{indent}#{key}/\n"
          result << generate_tree_string(value, "#{indent}  ")
        else
          result << "#{indent}#{key}\n"
        end
      end
      result
    end
  end
end