Class: Awestruct::Dependencies

Inherits:
Object
  • Object
show all
Defined in:
lib/awestruct/dependencies.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#dependenciesObject (readonly)

Returns the value of attribute dependencies.



6
7
8
# File 'lib/awestruct/dependencies.rb', line 6

def dependencies
  @dependencies
end

#dependentsObject (readonly)

Returns the value of attribute dependents.



7
8
9
# File 'lib/awestruct/dependencies.rb', line 7

def dependents
  @dependents
end

#pageObject (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_pageObject



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_pageObject



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

#clearObject



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