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