eac_templates 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4693c8bc468202051ac7c3ea070b1c3d11d29de84f009caa168a11a5dd85bb7a
4
- data.tar.gz: b247d9ce2cb2b5959e9a3f18a7f9f6ddd62e2ce21c7d8a47001ecc1f67527d14
3
+ metadata.gz: a7a7b07116547967179751347b5600225f96205ee1b1da0fc7bb35d795439fdc
4
+ data.tar.gz: 04cbf8ec7ee2fd753d25a171925bf1d45f61850c2c0ae5f794894f1494be60c6
5
5
  SHA512:
6
- metadata.gz: 8742d8c59890381772209cbbda1c7b5aa07145279c3eb37767c786be91b13a5a403b36f85b00e33157b63d4b39f8d6f5e2142ece147235da20546a4c83d3bfe5
7
- data.tar.gz: 8d8269d321709f68bfa6adee7cda5969076cf26688b7f0265fac48f985e3efb16590aff6f0b80eee9ef38192ccc07986029ca67fbbae3d24250f8e9906814ca3
6
+ metadata.gz: 003734ea51a3c498ee9a49413c0d59a08f48be07183b88491f283eee82cae5beae103a307eb1e7d4c98cfb48c8c720cdf0f4c1b32ebf7ea5861de76d4aeeed16
7
+ data.tar.gz: 48876f4adbbb31f1e34d1593b931c5ac6c62b3525cd626c05aecb1a64adc7eacde058fb46a6a74038de2b3de0a0b866b4c9ba6199f7cde355856fb48e59f831d
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/interface_methods'
5
+ require 'eac_templates/abstract/fs_object'
6
+ require 'eac_templates/variables/directory'
7
+
8
+ module EacTemplates
9
+ module Abstract
10
+ class Directory < ::EacTemplates::Abstract::FsObject
11
+ enable_abstract_methods
12
+ delegate(*::EacTemplates::InterfaceMethods::DIRECTORY - %i[child chidren], to: :applier)
13
+
14
+ # @param basename [Pathname]
15
+ # @return [EacTemplates::Abstract::FsObject
16
+ def build_child(child_basename, child_type)
17
+ child_basename = child_basename.to_pathname
18
+ child_type = type_list.value_validate!(child_type)
19
+ category_module.const_get(child_type.to_s.camelize)
20
+ .new(owner, self, child_basename, options)
21
+ end
22
+
23
+ # @param basename [Pathname]
24
+ # @return [EacTemplates::Abstract::FsObject]
25
+ def child(basename)
26
+ basename = basename.to_pathname
27
+ children.find { |c| c.basename == basename } ||
28
+ raise_not_found("No child found with basename \"#{basename}\"")
29
+ end
30
+
31
+ # @return [Enumerable<EacTemplates::Abstract::FsObject>]
32
+ def children
33
+ children_basenames.map { |c_basename, c_type| build_child(c_basename, c_type) }
34
+ end
35
+
36
+ # @return [Hash<Pathname, Symbol>]
37
+ def children_basenames
38
+ raise_abstract_method __method__
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/interface_methods'
5
+ require 'eac_templates/abstract/fs_object'
6
+ require 'eac_templates/variables/file'
7
+
8
+ module EacTemplates
9
+ module Abstract
10
+ class File < ::EacTemplates::Abstract::FsObject
11
+ enable_abstract_methods
12
+ delegate(*::EacTemplates::InterfaceMethods::FILE - %i[content path], to: :applier)
13
+
14
+ # @return [String]
15
+ def content
16
+ path.read
17
+ end
18
+
19
+ # @return [Pathname]
20
+ def path
21
+ raise_abstract_method __method__
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/fs_object_by_pathname'
5
+ require 'eac_templates/abstract/not_found_error'
6
+
7
+ module EacTemplates
8
+ module Abstract
9
+ class FsObject
10
+ class << self
11
+ # @param obj [Object]
12
+ # @return [EacTemplates::Abstract::FsObject, EacTemplates::Abstracts::FsObjectByPathname]
13
+ def assert(obj)
14
+ if obj.is_a?(self)
15
+ obj
16
+ else
17
+ ::EacTemplates::Abstract::FsObjectByPathname.new(obj)
18
+ end
19
+ end
20
+
21
+ # @param owner [Object]
22
+ # @param parent_object [Object, nil]
23
+ # @param subpath [Pathname]
24
+ # @return [EacTemplates::Abstract::FsObject]
25
+ def by_subpath(owner, parent_object, subpath, options = {})
26
+ r = nil
27
+ subpath.to_pathname.each_filename do |basename|
28
+ r = new(owner, parent_object, basename, options)
29
+ parent_object = r
30
+ end
31
+ r || raise("Subpath is empty: #{subpath}")
32
+ end
33
+ end
34
+
35
+ enable_abstract_methods
36
+ enable_simple_cache
37
+ enable_listable
38
+ lists.add_symbol :option, :source_set
39
+ lists.add_symbol :type, :directory, :file
40
+ common_constructor :owner, :parent_object, :basename, :options, default: [{}] do
41
+ self.basename = basename.present? ? basename.to_pathname : ::Pathname.new('')
42
+ self.options = ::EacTemplates::Abstract::FsObject.lists.option.hash_keys_validate!(options)
43
+ end
44
+
45
+ # @return [EacTemplates::Variables::Directory, EacTemplates::Variables::File]
46
+ def applier
47
+ applier_class.new(self)
48
+ end
49
+
50
+ # @return [Class]
51
+ def applier_class
52
+ ::EacTemplates::Variables.const_get(type.to_s.camelize)
53
+ end
54
+
55
+ # @return [Module]
56
+ def category_module
57
+ self.class.module_parent
58
+ end
59
+
60
+ # @return [Pathname]
61
+ def path_for_search
62
+ if parent_object.present?
63
+ parent_object.path_for_search.join(basename)
64
+ else
65
+ path_for_search_prefix.join(basename)
66
+ end
67
+ end
68
+
69
+ # @return [Pathname]
70
+ def path_for_search_prefix
71
+ raise_abstract_method __method__
72
+ end
73
+
74
+ def raise_not_found(message)
75
+ raise ::EacTemplates::Abstract::NotFoundError, message
76
+ end
77
+
78
+ # @return [EacTemplates::Sources::Set]
79
+ def source_set
80
+ options[OPTION_SOURCE_SET] || ::EacTemplates::Sources::Set.default
81
+ end
82
+
83
+ # @return [Symbol]
84
+ def type
85
+ type_list.value_validate!(self.class.name.demodulize.underscore.to_sym)
86
+ end
87
+
88
+ # @return [EacRubyUtils::Listable::SymbolList]
89
+ def type_list
90
+ ::EacTemplates::Abstract::FsObject.lists.type
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacTemplates
6
+ module Abstract
7
+ class FsObjectByPathname
8
+ common_constructor :path do
9
+ self.path = path.to_pathname
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacTemplates
4
+ module Abstract
5
+ class NotFoundError < ::RuntimeError
6
+ end
7
+ end
8
+ end
@@ -2,10 +2,10 @@
2
2
 
3
3
  module EacTemplates
4
4
  module InterfaceMethods
5
- COMMON = %w[apply path].freeze
6
- ONLY_DIRECTORY = %w[child children].freeze
5
+ COMMON = %i[apply path].freeze
6
+ ONLY_DIRECTORY = %i[child children].freeze
7
7
  DIRECTORY = COMMON + ONLY_DIRECTORY
8
- ONLY_FILE = %w[apply_to_file content variables].freeze
8
+ ONLY_FILE = %i[apply_to_file content variables].freeze
9
9
  FILE = COMMON + ONLY_FILE
10
10
  ALL = COMMON + ONLY_DIRECTORY + ONLY_FILE
11
11
  end
@@ -1,14 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/directory'
4
5
  require 'eac_templates/interface_methods'
5
6
  require 'eac_templates/modules/ancestor/fs_object'
6
7
 
7
8
  module EacTemplates
8
9
  module Modules
9
10
  class Ancestor
10
- class Directory < ::EacTemplates::Modules::Ancestor::FsObject
11
- delegate(*::EacTemplates::InterfaceMethods::ONLY_DIRECTORY, to: :source_object)
11
+ class Directory < ::EacTemplates::Abstract::Directory
12
+ include ::EacTemplates::Modules::Ancestor::FsObject
13
+ delegate :children_basenames, to: :source_object
12
14
  end
13
15
  end
14
16
  end
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/file'
4
5
  require 'eac_templates/interface_methods'
5
6
  require 'eac_templates/modules/ancestor/fs_object'
6
7
 
7
8
  module EacTemplates
8
9
  module Modules
9
10
  class Ancestor
10
- class File < ::EacTemplates::Modules::Ancestor::FsObject
11
- delegate(*::EacTemplates::InterfaceMethods::ONLY_FILE, to: :source_object)
11
+ class File < ::EacTemplates::Abstract::File
12
+ include ::EacTemplates::Modules::Ancestor::FsObject
12
13
  end
13
14
  end
14
15
  end
@@ -6,25 +6,18 @@ require 'eac_templates/interface_methods'
6
6
  module EacTemplates
7
7
  module Modules
8
8
  class Ancestor
9
- class FsObject
10
- enable_simple_cache
11
- common_constructor :base
12
- delegate(*::EacTemplates::InterfaceMethods::COMMON, :found?, to: :source_object)
9
+ module FsObject
10
+ delegate :found?, :path, to: :source_object
13
11
 
14
- # @return [Symbol]
15
- def object_type
16
- self.class.name.demodulize.underscore.to_sym
17
- end
18
-
19
- # @return [Pathname, nil]
20
- def path
21
- source_object.found? ? source_object.send(:real_paths).first : nil
12
+ # @return [Pathname]
13
+ def path_for_search_prefix
14
+ owner.path_for_search
22
15
  end
23
16
 
24
17
  private
25
18
 
26
19
  def source_object_uncached
27
- base.source_set.send(object_type, base.path_for_search)
20
+ owner.source_set.send(type, path_for_search)
28
21
  end
29
22
  end
30
23
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
4
  require 'eac_templates/interface_methods'
5
+ require 'eac_templates/abstract/not_found_error'
5
6
 
6
7
  module EacTemplates
7
8
  module Modules
@@ -20,12 +21,14 @@ module EacTemplates
20
21
 
21
22
  # @return [EacTemplates::Modules::Directory]
22
23
  def directory
23
- ::EacTemplates::Modules::Ancestor::Directory.new(self)
24
+ @directory ||= ::EacTemplates::Modules::Ancestor::Directory
25
+ .new(self, nil, nil, source_set: source_set)
24
26
  end
25
27
 
26
28
  # @return [EacTemplates::Modules::File]
27
29
  def file
28
- @file ||= ::EacTemplates::Modules::Ancestor::File.new(self)
30
+ @file ||= ::EacTemplates::Modules::Ancestor::File
31
+ .new(self, nil, nil, source_set: source_set)
29
32
  end
30
33
 
31
34
  # @return [Pathname]
@@ -39,7 +42,7 @@ module EacTemplates
39
42
  return file if file.found?
40
43
  return directory if directory.found?
41
44
 
42
- raise "No template found: #{path_for_search}"
45
+ raise ::EacTemplates::Abstract::NotFoundError, "No template found: #{path_for_search}"
43
46
  end
44
47
 
45
48
  require_sub __FILE__
@@ -1,23 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/directory'
4
5
  require 'eac_templates/sources/fs_object'
5
- require 'eac_templates/variables/directory'
6
6
 
7
7
  module EacTemplates
8
8
  module Sources
9
- class Directory < ::EacTemplates::Sources::FsObject
10
- delegate :apply, :child, :children, :path, to: :applier
9
+ class Directory < ::EacTemplates::Abstract::Directory
10
+ include ::EacTemplates::Sources::FsObject
11
11
 
12
- # @return [Class]
13
- def applier_class
14
- ::EacTemplates::Variables::Directory
12
+ # @return [Hash<Pathname, Symbol>]
13
+ def children_basenames
14
+ r = {}
15
+ real_paths.each do |real_path|
16
+ real_path.children.each do |child|
17
+ next if r.key?(child.basename)
18
+
19
+ r[child.basename] = real_path_type(child)
20
+ end
21
+ end
22
+ r
15
23
  end
16
24
 
17
- # @param path [Pathname]
18
- # @return [Boolean]
19
- def select_path?(path)
20
- super && path.directory?
25
+ # @return [Pathname]
26
+ def real_path_type(path)
27
+ if path.file?
28
+ :file
29
+ elsif path.directory?
30
+ :directory
31
+ else
32
+ raise "Path \"#{path}\" is not a file nor a directory"
33
+ end
21
34
  end
22
35
  end
23
36
  end
@@ -1,24 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/file'
4
5
  require 'eac_templates/sources/fs_object'
5
- require 'eac_templates/variables/file'
6
6
 
7
7
  module EacTemplates
8
8
  module Sources
9
- class File < ::EacTemplates::Sources::FsObject
10
- delegate :apply, :apply_to_file, :content, :path, :variables, to: :applier
11
-
12
- # @return [Class]
13
- def applier_class
14
- ::EacTemplates::Variables::File
15
- end
16
-
17
- # @param path [Pathname]
18
- # @return [Boolean]
19
- def select_path?(path)
20
- super && path.file?
21
- end
9
+ class File < ::EacTemplates::Abstract::File
10
+ include ::EacTemplates::Sources::FsObject
22
11
  end
23
12
  end
24
13
  end
@@ -1,14 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/not_found_error'
4
5
 
5
6
  module EacTemplates
6
7
  module Sources
7
- class FsObject
8
- enable_abstract_methods
9
- enable_simple_cache
10
- common_constructor :source_set, :subpath do
11
- self.subpath = subpath.to_pathname
8
+ module FsObject
9
+ PATH_FOR_SEARCH_PREFIX = ::Pathname.new('')
10
+
11
+ common_concern do
12
+ enable_abstract_methods
13
+ enable_simple_cache
12
14
  end
13
15
 
14
16
  # @return [Boolean]
@@ -16,20 +18,18 @@ module EacTemplates
16
18
  real_paths.any?
17
19
  end
18
20
 
19
- protected
20
-
21
- # @return [Class]
22
- def applier_class
23
- raise_abstract_method __method__
21
+ # @return [Pathname]
22
+ def path
23
+ real_paths.first
24
24
  end
25
25
 
26
- # @return [EacTemplates::Variables::SourceFile]
27
- def applier_uncached
28
- raise "No #{self.class.name.downcase} found for \"#{subpath}\"" unless found?
29
-
30
- applier_class.new(real_paths.first)
26
+ # @return [Pathname]
27
+ def path_for_search_prefix
28
+ PATH_FOR_SEARCH_PREFIX
31
29
  end
32
30
 
31
+ protected
32
+
33
33
  # @return [Array<Pathname>]
34
34
  def real_paths_uncached
35
35
  source_set.included_paths.lazy.map { |source_single| source_single_search(source_single) }
@@ -39,13 +39,13 @@ module EacTemplates
39
39
  # @param path [Pathname]
40
40
  # @return [Boolean]
41
41
  def select_path?(path)
42
- path.present?
42
+ path.present? && path.send("#{type}?")
43
43
  end
44
44
 
45
45
  # @param source_single [EacTemplates::Sources::Single]
46
46
  # @return [Pathname, nil]
47
47
  def source_single_search(source_single)
48
- r = source_single.search(subpath)
48
+ r = source_single.search(path_for_search)
49
49
  select_path?(r) ? r : nil
50
50
  end
51
51
  end
@@ -4,6 +4,7 @@ require 'active_support/core_ext/object/blank'
4
4
  require 'eac_templates/sources/directory'
5
5
  require 'eac_templates/sources/file'
6
6
  require 'eac_templates/sources/internal_set'
7
+ require 'eac_templates/abstract/not_found_error'
7
8
 
8
9
  module EacTemplates
9
10
  module Sources
@@ -17,13 +18,13 @@ module EacTemplates
17
18
  # @param subpath [Pathname]
18
19
  # @return [EacTemplates::Sources::Directory]
19
20
  def directory(subpath)
20
- ::EacTemplates::Sources::Directory.new(self, subpath)
21
+ ::EacTemplates::Sources::Directory.by_subpath(self, nil, subpath, source_set: self)
21
22
  end
22
23
 
23
24
  # @param subpath [Pathname]
24
25
  # @return [EacTemplates::Sources::Directory]
25
26
  def file(subpath)
26
- ::EacTemplates::Sources::File.new(self, subpath)
27
+ ::EacTemplates::Sources::File.by_subpath(self, nil, subpath, source_set: self)
27
28
  end
28
29
 
29
30
  def template(subpath, required = true)
@@ -46,8 +47,8 @@ module EacTemplates
46
47
  private
47
48
 
48
49
  def raise_template_not_found(subpath)
49
- raise "Template not found for subpath \"#{subpath}\"" \
50
- " (Included paths: #{included_paths.to_a.join(::File::PATH_SEPARATOR)})"
50
+ raise ::EacTemplates::Abstract::NotFoundError, 'Template not found for subpath ' \
51
+ "\"#{subpath}\" (Included paths: #{included_paths.to_a.join(::File::PATH_SEPARATOR)})"
51
52
  end
52
53
  end
53
54
  end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/variables/providers'
5
+
6
+ module EacTemplates
7
+ module Variables
8
+ class Content
9
+ VARIABLE_DELIMITER = ::Regexp.quote('%%')
10
+ VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze
11
+
12
+ class << self
13
+ # @param path [Pathname]
14
+ # @return [EacTemplates::Variables::Content]
15
+ def from_file(path)
16
+ new(path.to_pathname.read)
17
+ end
18
+ end
19
+
20
+ enable_simple_cache
21
+ common_constructor :content
22
+
23
+ # +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
24
+ def apply(variables_source)
25
+ variables_provider = ::EacTemplates::Variables::Providers.build(variables_source)
26
+ variables.inject(content) do |a, e|
27
+ a.gsub(variable_pattern(e), variables_provider.variable_value(e).to_s)
28
+ end
29
+ end
30
+
31
+ def apply_to_file(variables_source, output_file_path)
32
+ output_file_path.to_pathname.write(apply(variables_source))
33
+ end
34
+
35
+ private
36
+
37
+ def variables_uncached
38
+ content.scan(VARIABLE_PATTERN).map(&:first).map do |name|
39
+ sanitize_variable_name(name)
40
+ end.to_set
41
+ end
42
+
43
+ def sanitize_variable_name(variable_name)
44
+ variable_name.to_s.downcase
45
+ end
46
+
47
+ def variable_pattern(name)
48
+ /#{VARIABLE_DELIMITER}#{::Regexp.quote(name)}#{VARIABLE_DELIMITER}/i
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,16 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'eac_templates/abstract/not_found_error'
4
+ require 'eac_templates/abstract/directory'
3
5
  require 'eac_templates/variables/file'
4
6
  require 'eac_templates/variables/fs_object'
5
7
 
6
8
  module EacTemplates
7
9
  module Variables
8
10
  class Directory
9
- attr_reader :path
10
-
11
- def initialize(path)
12
- @path = path.is_a?(::Pathname) ? path : ::Pathname.new(path.to_s)
11
+ common_constructor :abstract_directory do
12
+ self.abstract_directory = ::EacTemplates::Abstract::Directory.assert(abstract_directory)
13
13
  end
14
+ delegate :path, to: :abstract_directory
14
15
 
15
16
  def apply(variables_source, directory)
16
17
  ::EacTemplates::Variables::FsObject.new(self, '.', directory, variables_source).apply
@@ -21,7 +22,8 @@ module EacTemplates
21
22
  return ::EacTemplates::Variables::File.new(child_path) if ::File.file?(child_path)
22
23
  return ::EacTemplates::Variables::Directory.new(child_path) if ::File.directory?(child_path)
23
24
 
24
- raise "Child \"#{subpath}\" from \"#{path}\" not found"
25
+ raise ::EacTemplates::Abstract::NotFoundError,
26
+ "Child \"#{subpath}\" from \"#{path}\" not found"
25
27
  end
26
28
 
27
29
  def children
@@ -1,49 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/file'
5
+ require 'eac_templates/variables/content'
4
6
  require 'eac_templates/variables/providers'
5
7
 
6
8
  module EacTemplates
7
9
  module Variables
8
10
  class File
9
- VARIABLE_DELIMITER = ::Regexp.quote('%%')
10
- VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze
11
-
12
11
  enable_simple_cache
13
- common_constructor :path do
14
- self.path = path.to_pathname
15
- end
16
-
17
- # +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
18
- def apply(variables_source)
19
- variables_provider = ::EacTemplates::Variables::Providers.build(variables_source)
20
- variables.inject(content) do |a, e|
21
- a.gsub(variable_pattern(e), variables_provider.variable_value(e).to_s)
22
- end
23
- end
24
-
25
- def apply_to_file(variables_source, output_file_path)
26
- output_file_path.to_pathname.write(apply(variables_source))
12
+ common_constructor :abstract_file do
13
+ self.abstract_file = ::EacTemplates::Abstract::File.assert(abstract_file)
27
14
  end
15
+ delegate :path, to: :abstract_file
16
+ delegate :apply, :apply_to_file, :content, :variables, to: :content_applier
28
17
 
29
18
  private
30
19
 
31
- def variables_uncached
32
- content.scan(VARIABLE_PATTERN).map(&:first).map do |name|
33
- sanitize_variable_name(name)
34
- end.to_set
35
- end
36
-
37
- def content_uncached
38
- path.read
39
- end
40
-
41
- def sanitize_variable_name(variable_name)
42
- variable_name.to_s.downcase
43
- end
44
-
45
- def variable_pattern(name)
46
- /#{VARIABLE_DELIMITER}#{::Regexp.quote(name)}#{VARIABLE_DELIMITER}/i
20
+ # @return [EacTemplates::Variables::Content]
21
+ def content_applier_uncached
22
+ ::EacTemplates::Variables::Content.from_file(path)
47
23
  end
48
24
  end
49
25
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTemplates
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_templates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-30 00:00:00.000000000 Z
11
+ date: 2023-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_config
@@ -59,6 +59,11 @@ extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
61
  - lib/eac_templates.rb
62
+ - lib/eac_templates/abstract/directory.rb
63
+ - lib/eac_templates/abstract/file.rb
64
+ - lib/eac_templates/abstract/fs_object.rb
65
+ - lib/eac_templates/abstract/fs_object_by_pathname.rb
66
+ - lib/eac_templates/abstract/not_found_error.rb
62
67
  - lib/eac_templates/core_ext.rb
63
68
  - lib/eac_templates/interface_methods.rb
64
69
  - lib/eac_templates/modules.rb
@@ -84,6 +89,7 @@ files:
84
89
  - lib/eac_templates/sources/set.rb
85
90
  - lib/eac_templates/sources/single.rb
86
91
  - lib/eac_templates/variables.rb
92
+ - lib/eac_templates/variables/content.rb
87
93
  - lib/eac_templates/variables/directory.rb
88
94
  - lib/eac_templates/variables/file.rb
89
95
  - lib/eac_templates/variables/fs_object.rb