| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- require 'bundler/setup'
- Bundler.require :docs
- require 'active_support'
- require 'active_support/core_ext'
- I18n.enforce_available_locales = true
- module Docs
- require 'docs/core/autoload_helper'
- extend AutoloadHelper
- mattr_reader :root_path
- @@root_path = File.expand_path '..', __FILE__
- autoload :URL, 'docs/core/url'
- autoload_all 'docs/core'
- autoload_all 'docs/filters/core', 'filter'
- autoload_all 'docs/scrapers'
- autoload_all 'docs/storage'
- autoload_all 'docs/subscribers'
- mattr_accessor :store_class
- self.store_class = FileStore
- mattr_accessor :store_path
- self.store_path = File.expand_path '../public/docs', @@root_path
- class DocNotFound < NameError; end
- def self.all
- Dir["#{root_path}/docs/scrapers/**/*.rb"].
- map { |file| File.basename(file, '.rb') }.
- sort!.
- map(&method(:find)).
- reject(&:abstract)
- end
- def self.find(name)
- const = name.camelize
- const_get(const)
- rescue NameError => error
- if error.name.to_s == const
- raise DocNotFound.new("failed to locate doc class '#{name}'", name)
- else
- raise error
- end
- end
- def self.generate_page(name, page_id)
- find(name).store_page(store, page_id)
- end
- def self.generate(name)
- find(name).store_pages(store)
- end
- def self.generate_manifest
- Manifest.new(store, all).store
- end
- def self.store
- store_class.new(store_path)
- end
- extend Instrumentable
- def self.install_report(*names)
- names.each do |name|
- const_get("#{name}_subscriber".camelize).subscribe_to(self)
- end
- end
- end
|