module ApipieDSL::TasksUtils

Public Class Methods

copy_jscss(dest) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 119
def self.copy_jscss(dest)
  src = File.expand_path('../../app/public/apipie_dsl', __dir__)
  FileUtils.mkdir_p dest
  FileUtils.cp_r "#{src}/.", dest
end
generate_class_pages(version, file_base, doc, include_json = false, lang = nil, section = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 70
def self.generate_class_pages(version, file_base, doc, include_json = false, lang = nil, section = nil)
  doc[:docs][:classes].each do |class_name, class_desc|
    next unless ApipieDslHelper.in_section?(section, class_name)

    class_file_base = File.join(file_base, class_desc[:id])
    FileUtils.mkdir_p(File.dirname(class_file_base)) unless File.exist?(File.dirname(class_file_base))

    doc = ApipieDSL.docs(version, class_name, nil, lang, section)
    doc[:docs][:link_extension] = (lang ? ".#{lang}.html" : '.html')
    render_page("#{class_file_base}#{lang_ext(lang)}.html", 'class',
                doc: doc[:docs], klass: doc[:docs][:classes].first,
                language: lang, languages: ApipieDSL.configuration.languages)
    File.open("#{class_file_base}#{lang_ext(lang)}.json", 'w') { |f| f << doc.to_json } if include_json
  end
end
generate_help_page(file_base, doc, show_versions = false, lang = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 106
def self.generate_help_page(file_base, doc, show_versions = false, lang = nil)
  versions = show_versions && ApipieDSL.available_versions
  section_file = "#{file_base}/help"
  FileUtils.mkdir_p(File.dirname(section_file)) unless File.exist?(File.dirname(section_file))
  render_page("#{section_file}#{lang_ext(lang)}.html", 'custom_help',
  doc: doc[:docs], versions: versions, language: lang,
  languages: ApipieDSL.configuration.languages, section: 'help')
end
generate_index_page(file_base, doc, include_json = false, show_versions = false, lang = nil, section = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 60
def self.generate_index_page(file_base, doc, include_json = false, show_versions = false, lang = nil, section = nil)
  versions = show_versions && ApipieDSL.available_versions
  section_file = "#{file_base}/#{section}"
  FileUtils.mkdir_p(File.dirname(section_file)) unless File.exist?(File.dirname(section_file))
  render_page("#{section_file}#{lang_ext(lang)}.html",
  'index', doc: doc[:docs], versions: versions, language: lang,
           languages: ApipieDSL.configuration.languages, section: section)
  File.open("#{file_base}#{lang_ext(lang)}.json", 'w') { |f| f << doc.to_json } if include_json
end
generate_json_page(file_base, doc, lang = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 8
def self.generate_json_page(file_base, doc, lang = nil)
  FileUtils.mkdir_p(file_base) unless File.exist?(file_base)

  filename = "schema_apipie_dsl#{lang_ext(lang)}.json"
  File.open("#{file_base}/#{filename}", 'w') { |file| file.write(JSON.pretty_generate(doc)) }
end
generate_method_pages(version, file_base, doc, include_json = false, lang = nil, section = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 86
def self.generate_method_pages(version, file_base, doc, include_json = false, lang = nil, section = nil)
  doc[:docs][:classes].each do |class_name, class_params|
    next unless ApipieDslHelper.in_section?(section, class_name)

    class_params[:methods].each do |method|
      method_file_base = File.join(file_base, class_name.to_s, method[:name].to_s)
      FileUtils.mkdir_p(File.dirname(method_file_base)) unless File.exist?(File.dirname(method_file_base))

      doc = ApipieDSL.docs(version, class_name, method[:name], lang, section)
      doc[:docs][:link_extension] = (lang ? ".#{lang}.html" : '.html')
      render_page("#{method_file_base}#{lang_ext(lang)}.html", 'method',
                  doc: doc[:docs], klass: doc[:docs][:classes].first,
                  method: doc[:docs][:classes].first[:methods].first,
                  language: lang, languages: ApipieDSL.configuration.languages)

      File.open("#{method_file_base}#{lang_ext(lang)}.json", 'w') { |f| f << doc.to_json } if include_json
    end
  end
end
generate_one_page(file_base, doc, lang = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 44
def self.generate_one_page(file_base, doc, lang = nil)
  FileUtils.mkdir_p(File.dirname(file_base)) unless File.exist?(File.dirname(file_base))

  render_page("#{file_base}/#{File.basename(file_base)}-onepage#{lang_ext(lang)}.html", 'static',
              doc: doc[:docs], language: lang,
              languages: ApipieDSL.configuration.languages)
end
generate_plain_page(file_base, doc, lang = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 52
def self.generate_plain_page(file_base, doc, lang = nil)
  FileUtils.mkdir_p(File.dirname(file_base)) unless File.exist?(File.dirname(file_base))

  render_page("#{file_base}/#{File.basename(file_base)}-plain#{lang_ext(lang)}.html", 'plain',
              { doc: doc[:docs], language: lang,
                languages: ApipieDSL.configuration.languages }, nil)
end
lang_ext(lang = nil) click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 115
def self.lang_ext(lang = nil)
  lang ? ".#{lang}" : ''
end
render_page(file_name, template, variables, layout = 'apipie_dsl') click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 34
def self.render_page(file_name, template, variables, layout = 'apipie_dsl')
  File.open(file_name, 'w') do |f|
    variables.each do |var, val|
      renderer.instance_variable_set("@#{var}", val)
    end
    f.write(renderer.render(template: template.to_s,
                            layout: (layout && "apipie_dsl/#{layout}")))
  end
end
renderer() click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 15
def self.renderer
  return @renderer if @renderer

  base_paths = [File.expand_path('../../app/views/apipie_dsl/apipie_dsls', __dir__)]
  if ApipieDSL.configuration.rails?
    base_paths.unshift("#{Rails.root}/app/views") if File.directory?("#{Rails.root}/app/views")
    base_paths.unshift("#{Rails.root}/app/views/apipie_dsl/apipie_dsls") if File.directory?("#{Rails.root}/app/views/apipie_dsl/apipie_dsls")
  end
  layouts_paths = [File.expand_path('../../app/views/layouts', __dir__)]
  if ApipieDSL.configuration.rails? && File.directory?("#{Rails.root}/app/views/layouts/apipie_dsl")
    layouts_paths.unshift("#{Rails.root}/app/views/layouts")
  end
  paths = ActionView::PathSet.new(base_paths + layouts_paths)
  lookup_context = ActionView::LookupContext.new(paths)
  @renderer = ActionView::Base.with_empty_template_cache.new(lookup_context, {}, nil)
  @renderer.singleton_class.send(:include, ::ApipieDslHelper)
  @renderer
end
with_loaded_documentation() { || ... } click to toggle source
# File lib/apipie_dsl/tasks_utils.rb, line 125
def self.with_loaded_documentation
  ApipieDSL.reload_documentation
  yield
end