Sha256: 349d6fb458be0bb506a62e89b1f29a447ac547734b2aa1e8566ea68dd4812418

Contents?: true

Size: 945 Bytes

Versions: 37

Compression:

Stored size: 945 Bytes

Contents

# 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

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
makit-0.0.66 lib/makit/tree.rb
makit-0.0.65 lib/makit/tree.rb
makit-0.0.64 lib/makit/tree.rb
makit-0.0.63 lib/makit/tree.rb
makit-0.0.62 lib/makit/tree.rb
makit-0.0.61 lib/makit/tree.rb
makit-0.0.60 lib/makit/tree.rb
makit-0.0.59 lib/makit/tree.rb
makit-0.0.58 lib/makit/tree.rb
makit-0.0.56 lib/makit/tree.rb
makit-0.0.55 lib/makit/tree.rb
makit-0.0.54 lib/makit/tree.rb
makit-0.0.48 lib/makit/tree.rb
makit-0.0.40 lib/makit/tree.rb
makit-0.0.39 lib/makit/tree.rb
makit-0.0.38 lib/makit/tree.rb
makit-0.0.37 lib/makit/tree.rb
makit-0.0.36 lib/makit/tree.rb
makit-0.0.26 lib/makit/tree.rb
makit-0.0.25 lib/makit/tree.rb