class Apidoco::FolderParser

Parse a folder and find all the sub folders and files

Attributes

directory[RW]
parents[RW]

Public Class Methods

new(directory, parents: []) click to toggle source
# File lib/apidoco/folder_parser.rb, line 6
def initialize(directory, parents: [])
  self.directory = directory
  self.parents = parents
end

Public Instance Methods

as_json() click to toggle source
# File lib/apidoco/folder_parser.rb, line 11
def as_json
  {
    is_folder: true,
    name: basename,
    children: children.select(&:published?).yield_self(&method(:sorter)).map(&:as_json)
  }
end
basename() click to toggle source
# File lib/apidoco/folder_parser.rb, line 19
def basename
  directory.basename.to_s.titleize
end
children() click to toggle source
# File lib/apidoco/folder_parser.rb, line 23
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
published?() click to toggle source
# File lib/apidoco/folder_parser.rb, line 34
def published?
  true
end
sort_order() click to toggle source
# File lib/apidoco/folder_parser.rb, line 38
def sort_order
  basename
end

Private Instance Methods

sorter(files) click to toggle source
# File lib/apidoco/folder_parser.rb, line 44
def sorter(files)
  files.sort do |a, b|
    if a.sort_order.class == b.sort_order.class
      a.sort_order <=> b.sort_order
    elsif a.sort_order.is_a?(String)
      -1
    else
      1
    end
  end
end