Class: Doc::Documentor
- Inherits:
-
Object
- Object
- Doc::Documentor
- Defined in:
- lib/doc/documentor.rb
Instance Attribute Summary collapse
-
#base_dir ⇒ Object
readonly
Returns the value of attribute base_dir.
-
#clean_after ⇒ Object
readonly
Returns the value of attribute clean_after.
-
#configurators ⇒ Object
readonly
Returns the value of attribute configurators.
-
#docs_dir ⇒ Object
readonly
Returns the value of attribute docs_dir.
-
#min_update_interval ⇒ Object
readonly
Returns the value of attribute min_update_interval.
-
#public_dir ⇒ Object
readonly
Returns the value of attribute public_dir.
-
#sources_dir ⇒ Object
readonly
Returns the value of attribute sources_dir.
-
#started ⇒ Object
readonly
Returns the value of attribute started.
-
#title ⇒ Object
readonly
Returns the value of attribute title.
Instance Method Summary collapse
- #build(update = false) ⇒ Object
- #config(update = false) ⇒ Object
-
#initialize(*arguments, &block) ⇒ Documentor
constructor
A new instance of Documentor.
Constructor Details
#initialize(*arguments, &block) ⇒ Documentor
Returns a new instance of Documentor.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/doc/documentor.rb', line 8 def initialize(*arguments, &block) @started = Time.now config = RootConfig.new(self, *arguments, &block) config.([], [:title, :min_update_interval, :clean_after, :public_dir]) @title = config[:title] || 'ruby documentation' @min_update_interval = config[:min_update_interval] || 1.hour @clean_after = config[:clean_after] @configurators = config.configurators @base_dir = FSPath('.'). @sources_dir = base_dir / 'sources' @docs_dir = base_dir / 'docs' if config[:public_dir] config[:public_dir] = FSPath(config[:public_dir]).cleanpath.to_s if config[:public_dir] == '.' raise ConfigError.new(self, "can't use base dir: #{config[:public_dir].inspect}") end if config[:public_dir].split(FSPath::SEPARATOR_PAT).include?('..') raise ConfigError.new(self, ".. in public_dir: #{config[:public_dir].inspect}") end end @public_dir = base_dir / (config[:public_dir] || 'public') end |
Instance Attribute Details
#base_dir ⇒ Object (readonly)
Returns the value of attribute base_dir.
7 8 9 |
# File 'lib/doc/documentor.rb', line 7 def base_dir @base_dir end |
#clean_after ⇒ Object (readonly)
Returns the value of attribute clean_after.
6 7 8 |
# File 'lib/doc/documentor.rb', line 6 def clean_after @clean_after end |
#configurators ⇒ Object (readonly)
Returns the value of attribute configurators.
6 7 8 |
# File 'lib/doc/documentor.rb', line 6 def configurators @configurators end |
#docs_dir ⇒ Object (readonly)
Returns the value of attribute docs_dir.
7 8 9 |
# File 'lib/doc/documentor.rb', line 7 def docs_dir @docs_dir end |
#min_update_interval ⇒ Object (readonly)
Returns the value of attribute min_update_interval.
6 7 8 |
# File 'lib/doc/documentor.rb', line 6 def min_update_interval @min_update_interval end |
#public_dir ⇒ Object (readonly)
Returns the value of attribute public_dir.
7 8 9 |
# File 'lib/doc/documentor.rb', line 7 def public_dir @public_dir end |
#sources_dir ⇒ Object (readonly)
Returns the value of attribute sources_dir.
7 8 9 |
# File 'lib/doc/documentor.rb', line 7 def sources_dir @sources_dir end |
#started ⇒ Object (readonly)
Returns the value of attribute started.
7 8 9 |
# File 'lib/doc/documentor.rb', line 7 def started @started end |
#title ⇒ Object (readonly)
Returns the value of attribute title.
6 7 8 |
# File 'lib/doc/documentor.rb', line 6 def title @title end |
Instance Method Details
#build(update = false) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/doc/documentor.rb', line 49 def build(update = false) root_task = config(update) root_task.run if clean_after candidates = [] candidates += sources_dir.children if sources_dir.directory? candidates += docs_dir.children if docs_dir.directory? candidates.each do |dir| if started - dir.mtime > clean_after dir.rmtree_verbose end end end end |
#config(update = false) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/doc/documentor.rb', line 34 def config(update = false) last_updated_path = base_dir / '.last_updated' update ||= last_updated_path.exist? ? (Time.now > last_updated_path.mtime + min_update_interval) : true configurators.with_progress('configuring and updating').each do |configurator| configurator.configure(update) end last_updated_path.touch if update RootMerger.new(self, { :title => title, :tasks => configurators.with_progress('generating tasks').map(&:tasks).flatten }) end |