Sha256: ae588d242fcb8906169eb516d2097aaedf1d139935394e01a8fefeb22893581b

Contents?: true

Size: 876 Bytes

Versions: 4

Compression:

Stored size: 876 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
      basename
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
apidoco-1.6.0 lib/apidoco/folder_parser.rb
apidoco-1.5.6 lib/apidoco/folder_parser.rb
apidoco-1.5.5 lib/apidoco/folder_parser.rb
apidoco-1.5.4 lib/apidoco/folder_parser.rb