Sha256: 8de2aba040023c12b2cb1d3244d8746993d2c5530a32db8bec56d257a4c0e221

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

class SdocAll
  class Rails < Base
    def initialize(raw_config)
      raw_config ||= {}
      raw_config = {:version => raw_config} unless raw_config.is_a?(Hash)

      if raw_config[:version]
        unless self.class.versions.include?(raw_config[:version])
          raise ConfigError.new("you don't have rails #{raw_config[:version]} installed")
        end
      else
        if self.class.versions.empty?
          raise ConfigError.new("you don't have any rails versions installed")
        end
      end

      @config = {
        :version => raw_config.delete(:version) || self.class.versions.last,
      }

      raise_unknown_options_if_not_blank!(raw_config)
    end

    def add_tasks(options = {})
      version = config[:version]
      path = sources_path + version

      unless path.directory?
        Base.remove_if_present(path)
        sources_path
        Base.with_env 'VERSION', version do
          Base.system('rails', path, '--freeze')
        end
      end
      self.class.used_sources << path

      paths = FileList.new
      Base.chdir(path) do
        File.open('vendor/rails/railties/lib/tasks/documentation.rake') do |f|
          true until f.readline['Rake::RDocTask.new("rails")']
          until (line = f.readline.strip) == '}'
            if line['rdoc.rdoc_files.include']
              paths.include(line[/'(.*)'/, 1])
            elsif line['rdoc.rdoc_files.exclude']
              paths.exclude(line[/'(.*)'/, 1])
            end
          end
        end
        paths.resolve
      end
      Base.add_task(
        :src_path => path,
        :doc_path => "rails-#{version}",
        :paths => paths.to_a,
        :title => "rails-#{version}"
      )
    end

    module ClassMethods
      def versions
        [].tap do |versions|
          Gem.source_index.search(Gem::Dependency.new('rails', :all)).each do |spec|
            versions << spec.version
          end
        end.sort.map(&:to_s)
      end
    end
    extend ClassMethods
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sdoc_all-1.0.4 lib/sdoc_all/parts/rails.rb