class ApiSketch::Generators::Bootstrap

Public Class Methods

new(options = {}) click to toggle source

Generated folders structure is

docs - html folders and files
assets - js, css and images. Html styling
Calls superclass method ApiSketch::Generators::Base::new
# File lib/api_sketch/generators/bootstrap.rb, line 8
def initialize(options = {})
  super(options)
  @resource_template = ERB.new(File.read("#{self.templates_folder}/resource.html.erb"))
end

Public Instance Methods

filename_for(resource) click to toggle source

This is defined here because it is related for this type of generator only

# File lib/api_sketch/generators/bootstrap.rb, line 14
def filename_for(resource)
  resource.id + '.html'
end

Private Instance Methods

copy_assets() click to toggle source
# File lib/api_sketch/generators/bootstrap.rb, line 19
def copy_assets
  # copy assets from template directory
  source = File.join(self.templates_folder, 'assets')
  target = File.join(self.documentation_dir, 'assets')
  FileUtils.copy_entry(source, target)
end
create_documentation_files() click to toggle source
# File lib/api_sketch/generators/bootstrap.rb, line 32
def create_documentation_files
  @generator = self
  copy_assets
  @resources = ApiSketch::Model::Resource.all
  @resources.each do |resource|
    @resource = resource

    filename = File.join(docs_folder, filename_for(@resource))
    html_data = @resource_template.result(binding)

    dir = File.dirname(filename)
    unless File.directory?(dir)
      puts_info("\t create directory: #{dir}")
      FileUtils.mkdir_p(dir)
    end

    puts_info("\t write: #{filename}")
    File.open(filename, 'w+') { |file| file.write(html_data) }
  end

  if @resources.count > 0
    # Create index page
    index_template = ERB.new(File.read("#{self.templates_folder}/index.html.erb"))
    filename = File.join(docs_folder, "index.html")
    puts_info("\t write: #{filename}")
    File.open(filename, 'w+') { |file| file.write(index_template.result(binding)) }
  end
end
docs_folder() click to toggle source
# File lib/api_sketch/generators/bootstrap.rb, line 26
def docs_folder
  # Left assets directory outside since it may clash with generated files/folders names.
  # Put generated html pages to 'docs' folder
  "#{self.documentation_dir}/docs"
end