Class: Jekyll::Archimate::ArchimateCache
- Inherits:
-
Object
- Object
- Jekyll::Archimate::ArchimateCache
- Includes:
- Singleton
- Defined in:
- lib/jekyll/archimate/archimate_cache.rb
Instance Method Summary collapse
- #cache_valid?(archimate_file) ⇒ Boolean
- #default_archimate_file ⇒ Object
- #default_archimate_file=(archimate_file) ⇒ Object
-
#initialize ⇒ ArchimateCache
constructor
A new instance of ArchimateCache.
- #model(archimate_file = nil) ⇒ Object
- #update_cache(archimate_file) ⇒ Object
Constructor Details
#initialize ⇒ ArchimateCache
Returns a new instance of ArchimateCache.
10 11 12 13 |
# File 'lib/jekyll/archimate/archimate_cache.rb', line 10 def initialize @cache = {} @default_archimate_file = nil end |
Instance Method Details
#cache_valid?(archimate_file) ⇒ Boolean
15 16 17 18 19 |
# File 'lib/jekyll/archimate/archimate_cache.rb', line 15 def cache_valid?(archimate_file) path = archimate_file.path @cache.key?(path) && @cache[path].archimate_file.modified_time.to_i == archimate_file.modified_time.to_i end |
#default_archimate_file ⇒ Object
28 29 30 |
# File 'lib/jekyll/archimate/archimate_cache.rb', line 28 def default_archimate_file @default_archimate_file || @cache.keys.first end |
#default_archimate_file=(archimate_file) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/jekyll/archimate/archimate_cache.rb', line 32 def default_archimate_file=(archimate_file) unless @cache.key?(archimate_file.path) raise( "Default ArchiMate file does not exist in cache: #{archimate_file.relative_path}" ) end @default_archimate_file = archimate_file end |
#model(archimate_file = nil) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/jekyll/archimate/archimate_cache.rb', line 21 def model(archimate_file = nil) archimate_file ||= default_archimate_file raise "No ArchiMate file has been detected." unless archimate_file update_cache(archimate_file) unless cache_valid?(archimate_file) @cache[archimate_file.path].model end |
#update_cache(archimate_file) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/jekyll/archimate/archimate_cache.rb', line 41 def update_cache(archimate_file) # update the cache Jekyll.logger.info " loading ArchiMate #{archimate_file.relative_path}" load_start_time = Time.new model = ::Archimate.read(archimate_file.path) load_finish_time = Time.new Jekyll.logger.info format(" %.1f seconds", (load_finish_time - load_start_time)) @cache[archimate_file.path] = ArchimateFileCacheInfo.new(archimate_file, model) end |