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