Class: Awestruct::Dependencies
- Inherits:
-
Object
- Object
- Awestruct::Dependencies
- Defined in:
- lib/awestruct/dependencies.rb
Instance Attribute Summary collapse
-
#dependencies ⇒ Object
readonly
Returns the value of attribute dependencies.
-
#dependents ⇒ Object
readonly
Returns the value of attribute dependents.
-
#page ⇒ Object
readonly
Returns the value of attribute page.
Class Method Summary collapse
Instance Method Summary collapse
- #<<(dep) ⇒ Object
- #add_dependency(dep) ⇒ Object
- #add_dependent(dep) ⇒ Object
- #clear ⇒ Object
- #find_page_by_path(path) ⇒ Object
-
#initialize(page) ⇒ Dependencies
constructor
A new instance of Dependencies.
- #load! ⇒ Object
- #persist! ⇒ Object
- #remove_dependent(dep) ⇒ Object
Constructor Details
#initialize(page) ⇒ Dependencies
Returns a new instance of Dependencies.
38 39 40 41 42 |
# File 'lib/awestruct/dependencies.rb', line 38 def initialize(page) @page = page @dependencies = Set.new @dependents = Set.new end |
Instance Attribute Details
#dependencies ⇒ Object (readonly)
Returns the value of attribute dependencies.
6 7 8 |
# File 'lib/awestruct/dependencies.rb', line 6 def dependencies @dependencies end |
#dependents ⇒ Object (readonly)
Returns the value of attribute dependents.
7 8 9 |
# File 'lib/awestruct/dependencies.rb', line 7 def dependents @dependents end |
#page ⇒ Object (readonly)
Returns the value of attribute page.
5 6 7 |
# File 'lib/awestruct/dependencies.rb', line 5 def page @page end |
Class Method Details
.pop_page ⇒ Object
24 25 26 27 28 29 |
# File 'lib/awestruct/dependencies.rb', line 24 def self.pop_page page = @pages.pop if ( @pages.empty? && ! page.nil? ) page.dependencies.persist! end end |
.push_page(page) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/awestruct/dependencies.rb', line 15 def self.push_page(page) if ( top_page.nil? ) page.dependencies.clear else top_page.dependencies.add_dependency( page ) end @pages.push( page ) end |
.top_page ⇒ Object
10 11 12 13 |
# File 'lib/awestruct/dependencies.rb', line 10 def self.top_page @pages ||= [] @pages.first end |
.track_dependency(dep) ⇒ Object
32 33 34 35 36 |
# File 'lib/awestruct/dependencies.rb', line 32 def self.track_dependency(dep) return if top_page.nil? return if top_page == dep top_page.dependencies.add_dependency(dep) end |
Instance Method Details
#<<(dep) ⇒ Object
44 45 46 |
# File 'lib/awestruct/dependencies.rb', line 44 def <<(dep) add_dependency( dep ) end |
#add_dependency(dep) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/awestruct/dependencies.rb', line 48 def add_dependency(dep) return if @page.do_not_track_dependencies return if @page.output_path.nil? return if dep == @page @dependencies << dep dep.dependencies.add_dependent( page ) end |
#add_dependent(dep) ⇒ Object
56 57 58 |
# File 'lib/awestruct/dependencies.rb', line 56 def add_dependent(dep) @dependents << dep end |
#clear ⇒ Object
64 65 66 67 |
# File 'lib/awestruct/dependencies.rb', line 64 def clear @dependencies.clear @dependents.each{|d| d.remove_dependent( page ) } end |
#find_page_by_path(path) ⇒ Object
96 97 98 |
# File 'lib/awestruct/dependencies.rb', line 96 def find_page_by_path(path) page.site.pages_by_relative_source_path[ path ] end |
#load! ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/awestruct/dependencies.rb', line 80 def load! return if page.output_path.nil? || page.output_path == '' file = File.join( @page.site.config.dir, '.awestruct', 'dependency-cache', page.output_path ) #puts "load #{file}" if ( File.exist?( file ) ) File.open( file, 'r' ) do |file| file.lines.each do |line| d = find_page_by_path( line.strip ) add_dependency( d ) unless d.nil? end end return true end false end |
#persist! ⇒ Object
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/awestruct/dependencies.rb', line 69 def persist! return if page.output_path.nil? || page.output_path == '' file = File.join( @page.site.config.dir, '.awestruct', 'dependency-cache', page.output_path ) FileUtils.mkdir_p( File.dirname( file ) ) File.open( file, 'w' ) do |file| @dependencies.collect{|e| e.relative_source_path }.uniq.each do |d| file.puts d unless d.nil? end end end |
#remove_dependent(dep) ⇒ Object
60 61 62 |
# File 'lib/awestruct/dependencies.rb', line 60 def remove_dependent(dep) @dependents.delete( dep ) end |