Sha256: f870cb0c74748223ea2f66659e0c23fbed84803dab032cd58f5f28acd6cf21f2

Contents?: true

Size: 871 Bytes

Versions: 4

Compression:

Stored size: 871 Bytes

Contents

module Apidoco
  # Parse a folder and find all the sub folders and files
  class FolderParser
    attr_accessor :directory, :parents

    def initialize(directory, parents: [])
      self.directory = directory
      self.parents = parents
    end

    def as_json
      {
        is_folder: true,
        name: basename,
        children: children.select(&:published?).sort_by(&:sort_order).map(&:as_json)
      }
    end

    def basename
      directory.basename.to_s.titleize
    end

    def children
      directory.children.map do |child|
        hierrarchy = parents + [basename]
        if child.directory?
          Apidoco::FolderParser.new(child, parents: hierrarchy)
        else
          Apidoco::FileParser.new(child, parents: hierrarchy)
        end
      end
    end

    def published?
      true
    end

    def sort_order
      999
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
apidoco-1.5.3 lib/apidoco/folder_parser.rb
apidoco-1.5.2 lib/apidoco/folder_parser.rb
apidoco-1.5.1 lib/apidoco/folder_parser.rb
apidoco-1.5.0 lib/apidoco/folder_parser.rb