class AcosOpenApiHelper::PageEngine

Public Class Methods

new(data, basePath, output_path, swaggerfile) click to toggle source
# File lib/acos_jekyll_openapi.rb, line 46
def initialize(data, basePath, output_path, swaggerfile)
    @data = data
    @output_path = output_path
    @swaggerfile = swaggerfile
    @basePath = basePath
end

Public Instance Methods

generate() click to toggle source
# File lib/acos_jekyll_openapi.rb, line 53
def generate
    puts "Generating pages..."
    cnt = 0
    puts "Open API version %s in .json file" % (@data.key?("openapi") ? @data['openapi'] : @data['swagger'])
    docTitle = (@data["info"]["title"])    
    _components = @data.key?("components")  ? "components" :"definitions"
    docFile = docTitle.gsub(/\+|\s+|{|}|\//, "_").downcase
    puts "Document title : %s" % docTitle
    sidebar =  "%s_sidebar" % docFile
    menu = AcosOpenApiHelper::SidebarMenu.new()

    if File.exists?("%s/%s_index.md" % [@output_path, docFile] )
        _indexMenu = AcosOpenApiHelper::MenuItem.new("Overview %s " % docTitle, "%s_index" % docFile)
        menu.add(_indexMenu)
        cnt = cnt + 1
    else
        puts "No index file found for %s" % docFile
    end

    @data['paths'].each do |path|
        _path = path[0] #path of swagger method
        _methods = @data['paths'][_path]
        #(path, basePath, output_path, swaggerfile, sidebar, docFile, component)
        writer =  AcosOpenApiHelper::PageCreator.new(_path, @basePath, @output_path, @swaggerfile, sidebar, docFile, _components)
        writer.write
        _permalink = AcosOpenApiHelper::PermalinkGenerator.create(_path, @swaggerfile)
        _menuItem = AcosOpenApiHelper::MenuItem.new(_path, _permalink)
        menu.add(_menuItem)
        cnt = cnt + 1
    end
    # Adding component page for models
    #createComponents(basePath, title, sidebar, swaggerfile, docFile)
    AcosOpenApiHelper::PageCreator.createComponents(@basePath, docTitle, sidebar, @swaggerfile, docFile, _components)
    _componentMenu = AcosOpenApiHelper::MenuItem.new("%s Models" % docTitle, "%s_components" % docFile)
    menu.add(_componentMenu)
    cnt = cnt + 1

    puts "Done generating %s pages..." % cnt
    puts "Writing menu"
    menu.write("%s/_data/sidebars" % @basePath, sidebar, docTitle)
end