eac_templates 0.3.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/eac_templates/abstract/directory.rb +42 -0
  3. data/lib/eac_templates/abstract/file.rb +25 -0
  4. data/lib/eac_templates/abstract/fs_object.rb +94 -0
  5. data/lib/eac_templates/abstract/fs_object_by_pathname.rb +13 -0
  6. data/lib/eac_templates/abstract/not_found_error.rb +8 -0
  7. data/lib/eac_templates/core_ext.rb +1 -1
  8. data/lib/eac_templates/interface_methods.rb +12 -0
  9. data/lib/eac_templates/modules/ancestor/directory.rb +17 -0
  10. data/lib/eac_templates/modules/ancestor/file.rb +16 -0
  11. data/lib/eac_templates/modules/ancestor/fs_object.rb +25 -0
  12. data/lib/eac_templates/modules/ancestor.rb +51 -0
  13. data/lib/eac_templates/modules/base.rb +35 -0
  14. data/lib/eac_templates/modules.rb +9 -0
  15. data/lib/eac_templates/patches/module/template.rb +2 -3
  16. data/lib/eac_templates/sources/directory.rb +37 -0
  17. data/lib/eac_templates/sources/file.rb +13 -0
  18. data/lib/eac_templates/sources/from_all_gems.rb +4 -0
  19. data/lib/eac_templates/sources/from_gem.rb +37 -0
  20. data/lib/eac_templates/sources/fs_object.rb +53 -0
  21. data/lib/eac_templates/sources/internal_set.rb +22 -0
  22. data/lib/eac_templates/sources/set.rb +55 -0
  23. data/lib/eac_templates/sources/single.rb +29 -0
  24. data/lib/eac_templates/sources.rb +9 -0
  25. data/lib/eac_templates/variables/content.rb +52 -0
  26. data/lib/eac_templates/variables/directory.rb +49 -0
  27. data/lib/eac_templates/variables/file.rb +26 -0
  28. data/lib/eac_templates/variables/fs_object.rb +65 -0
  29. data/lib/eac_templates/variables/not_found_error.rb +7 -0
  30. data/lib/eac_templates/variables/providers/base.rb +23 -0
  31. data/lib/eac_templates/variables/providers/config_reader.rb +29 -0
  32. data/lib/eac_templates/variables/providers/entries_reader.rb +25 -0
  33. data/lib/eac_templates/variables/providers/generic.rb +25 -0
  34. data/lib/eac_templates/variables/providers/hash.rb +29 -0
  35. data/lib/eac_templates/variables/providers.rb +25 -0
  36. data/lib/eac_templates/variables.rb +9 -0
  37. data/lib/eac_templates/version.rb +1 -1
  38. metadata +39 -30
  39. data/lib/eac_templates/directory.rb +0 -108
  40. data/lib/eac_templates/file.rb +0 -48
  41. data/lib/eac_templates/from_all_gems.rb +0 -4
  42. data/lib/eac_templates/from_gem.rb +0 -35
  43. data/lib/eac_templates/searcher.rb +0 -53
  44. data/lib/eac_templates/variable_not_found_error.rb +0 -5
  45. data/lib/eac_templates/variable_providers/base.rb +0 -21
  46. data/lib/eac_templates/variable_providers/config_reader.rb +0 -27
  47. data/lib/eac_templates/variable_providers/entries_reader.rb +0 -23
  48. data/lib/eac_templates/variable_providers/generic.rb +0 -23
  49. data/lib/eac_templates/variable_providers/hash.rb +0 -27
  50. data/lib/eac_templates/variable_providers.rb +0 -23
@@ -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
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/abstract/not_found_error'
4
+ require 'eac_templates/abstract/directory'
5
+ require 'eac_templates/variables/file'
6
+ require 'eac_templates/variables/fs_object'
7
+
8
+ module EacTemplates
9
+ module Variables
10
+ class Directory
11
+ common_constructor :abstract_directory do
12
+ self.abstract_directory = ::EacTemplates::Abstract::Directory.assert(abstract_directory)
13
+ end
14
+ delegate :path, to: :abstract_directory
15
+
16
+ def apply(variables_source, directory)
17
+ ::EacTemplates::Variables::FsObject.new(self, '.', directory, variables_source).apply
18
+ end
19
+
20
+ def child(subpath)
21
+ child_path = ::File.join(path, subpath)
22
+ return ::EacTemplates::Variables::File.new(child_path) if ::File.file?(child_path)
23
+ return ::EacTemplates::Variables::Directory.new(child_path) if ::File.directory?(child_path)
24
+
25
+ raise ::EacTemplates::Abstract::NotFoundError,
26
+ "Child \"#{subpath}\" from \"#{path}\" not found"
27
+ end
28
+
29
+ def children
30
+ path.children.map do |path_child|
31
+ child(path_child.basename.to_path)
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def apply_fs_object(source_relative, target)
38
+ if ::File.directory?(source_absolute(source_relative))
39
+ apply_directory(source_relative, target)
40
+ elsif ::File.file?(source_absolute(source_relative))
41
+ end
42
+ end
43
+
44
+ def source_absolute(source_relative)
45
+ ::File.expand_path(source_relative, path)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_templates/abstract/file'
5
+ require 'eac_templates/variables/content'
6
+ require 'eac_templates/variables/providers'
7
+
8
+ module EacTemplates
9
+ module Variables
10
+ class File
11
+ enable_simple_cache
12
+ common_constructor :abstract_file do
13
+ self.abstract_file = ::EacTemplates::Abstract::File.assert(abstract_file)
14
+ end
15
+ delegate :path, to: :abstract_file
16
+ delegate :apply, :apply_to_file, :content, :variables, to: :content_applier
17
+
18
+ private
19
+
20
+ # @return [EacTemplates::Variables::Content]
21
+ def content_applier_uncached
22
+ ::EacTemplates::Variables::Content.from_file(path)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/variables/file'
4
+
5
+ module EacTemplates
6
+ module Variables
7
+ class FsObject
8
+ TEMPLATE_EXTNAME = '.template'
9
+
10
+ common_constructor :source_directory, :source_relative, :target_root_directory,
11
+ :variables_source
12
+
13
+ def apply
14
+ if file?
15
+ apply_file
16
+ elsif directory?
17
+ apply_directory
18
+ else
19
+ raise "Unknown filesystem type: #{source_absolute}"
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def apply_directory
26
+ ::FileUtils.mkdir_p(target_absolute)
27
+ Dir.entries(source_absolute).each do |entry|
28
+ child(entry).apply unless %w[. ..].include?(entry)
29
+ end
30
+ end
31
+
32
+ def apply_file
33
+ if ::File.extname(source_absolute) == TEMPLATE_EXTNAME
34
+ ::EacTemplates::Variables::File.new(source_absolute).apply_to_file(
35
+ variables_source, target_absolute
36
+ )
37
+ else
38
+ ::FileUtils.cp(source_absolute, target_absolute)
39
+ end
40
+ end
41
+
42
+ def child(entry)
43
+ self.class.new(source_directory, ::File.join(source_relative, entry),
44
+ target_root_directory, variables_source)
45
+ end
46
+
47
+ def file?
48
+ ::File.file?(source_absolute)
49
+ end
50
+
51
+ def directory?
52
+ ::File.directory?(source_absolute)
53
+ end
54
+
55
+ def source_absolute
56
+ ::File.expand_path(source_relative, source_directory.path)
57
+ end
58
+
59
+ def target_absolute
60
+ ::File.expand_path(source_relative, target_root_directory)
61
+ .gsub(/#{::Regexp.quote(TEMPLATE_EXTNAME)}\z/, '')
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacTemplates
4
+ module Variables
5
+ class NotFoundError < StandardError; end
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/variables/not_found_error'
4
+
5
+ module EacTemplates
6
+ module Variables
7
+ module Providers
8
+ class Base
9
+ attr_reader :source
10
+
11
+ def initialize(source)
12
+ @source = source
13
+ end
14
+
15
+ def variable_value(name)
16
+ return variable_fetch(name) if variable_exist?(name)
17
+
18
+ raise VariableNotFoundError, "Variable \"#{name}\" not found in #{source}"
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_config/node'
4
+ require 'eac_templates/variables/providers/base'
5
+
6
+ module EacTemplates
7
+ module Variables
8
+ module Providers
9
+ class ConfigReader < ::EacTemplates::Variables::Providers::Base
10
+ class << self
11
+ def accept?(variables_source)
12
+ return false unless variables_source.respond_to?(:entry)
13
+
14
+ entry = variables_source.entry(:any_value)
15
+ entry.respond_to?(:value) && entry.respond_to?(:found?)
16
+ end
17
+ end
18
+
19
+ def variable_exist?(name)
20
+ source.entry(name).found?
21
+ end
22
+
23
+ def variable_fetch(name)
24
+ source.entry(name).value
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/variables/providers/base'
4
+
5
+ module EacTemplates
6
+ module Variables
7
+ module Providers
8
+ class EntriesReader < ::EacTemplates::Variables::Providers::Base
9
+ class << self
10
+ def accept?(variables_source)
11
+ variables_source.respond_to?(:read_entry)
12
+ end
13
+ end
14
+
15
+ def variable_exist?(_name)
16
+ true
17
+ end
18
+
19
+ def variable_fetch(name)
20
+ source.read_entry(name)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/variables/providers/base'
4
+
5
+ module EacTemplates
6
+ module Variables
7
+ module Providers
8
+ class Generic < ::EacTemplates::Variables::Providers::Base
9
+ class << self
10
+ def accept?(variables_source)
11
+ variables_source.is_a?(::Object)
12
+ end
13
+ end
14
+
15
+ def variable_exist?(name)
16
+ source.respond_to?(name)
17
+ end
18
+
19
+ def variable_fetch(name)
20
+ source.send(name)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/variables/providers/base'
4
+
5
+ module EacTemplates
6
+ module Variables
7
+ module Providers
8
+ class Hash < ::EacTemplates::Variables::Providers::Base
9
+ class << self
10
+ def accept?(variables_source)
11
+ variables_source.is_a?(::Hash)
12
+ end
13
+ end
14
+
15
+ def initialize(source)
16
+ super(source.with_indifferent_access)
17
+ end
18
+
19
+ def variable_exist?(name)
20
+ source.key?(name)
21
+ end
22
+
23
+ def variable_fetch(name)
24
+ source.fetch(name)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacTemplates
6
+ module Variables
7
+ module Providers
8
+ require_sub __FILE__
9
+
10
+ PROVIDERS = %w[config_reader entries_reader hash generic].map do |name|
11
+ "eac_templates/variables/providers/#{name}".camelize.constantize
12
+ end
13
+
14
+ class << self
15
+ def build(variables_source)
16
+ PROVIDERS.each do |provider|
17
+ return provider.new(variables_source) if provider.accept?(variables_source)
18
+ end
19
+
20
+ raise "Variables provider not found for #{variables_source}"
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacTemplates
6
+ module Variables
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTemplates
4
- VERSION = '0.3.2'
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.3.2
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: 2022-09-04 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
@@ -16,40 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.11'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.11.1
19
+ version: '0.12'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.11'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.11.1
26
+ version: '0.12'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: eac_ruby_utils
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '0.102'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 0.102.1
33
+ version: '0.112'
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
38
  - - "~>"
48
39
  - !ruby/object:Gem::Version
49
- version: '0.102'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.102.1
40
+ version: '0.112'
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: eac_ruby_gem_support
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -71,11 +59,19 @@ extensions: []
71
59
  extra_rdoc_files: []
72
60
  files:
73
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
74
67
  - lib/eac_templates/core_ext.rb
75
- - lib/eac_templates/directory.rb
76
- - lib/eac_templates/file.rb
77
- - lib/eac_templates/from_all_gems.rb
78
- - lib/eac_templates/from_gem.rb
68
+ - lib/eac_templates/interface_methods.rb
69
+ - lib/eac_templates/modules.rb
70
+ - lib/eac_templates/modules/ancestor.rb
71
+ - lib/eac_templates/modules/ancestor/directory.rb
72
+ - lib/eac_templates/modules/ancestor/file.rb
73
+ - lib/eac_templates/modules/ancestor/fs_object.rb
74
+ - lib/eac_templates/modules/base.rb
79
75
  - lib/eac_templates/patches.rb
80
76
  - lib/eac_templates/patches/module.rb
81
77
  - lib/eac_templates/patches/module/erb_template.rb
@@ -83,14 +79,27 @@ files:
83
79
  - lib/eac_templates/patches/object.rb
84
80
  - lib/eac_templates/patches/object/erb_template.rb
85
81
  - lib/eac_templates/patches/object/template.rb
86
- - lib/eac_templates/searcher.rb
87
- - lib/eac_templates/variable_not_found_error.rb
88
- - lib/eac_templates/variable_providers.rb
89
- - lib/eac_templates/variable_providers/base.rb
90
- - lib/eac_templates/variable_providers/config_reader.rb
91
- - lib/eac_templates/variable_providers/entries_reader.rb
92
- - lib/eac_templates/variable_providers/generic.rb
93
- - lib/eac_templates/variable_providers/hash.rb
82
+ - lib/eac_templates/sources.rb
83
+ - lib/eac_templates/sources/directory.rb
84
+ - lib/eac_templates/sources/file.rb
85
+ - lib/eac_templates/sources/from_all_gems.rb
86
+ - lib/eac_templates/sources/from_gem.rb
87
+ - lib/eac_templates/sources/fs_object.rb
88
+ - lib/eac_templates/sources/internal_set.rb
89
+ - lib/eac_templates/sources/set.rb
90
+ - lib/eac_templates/sources/single.rb
91
+ - lib/eac_templates/variables.rb
92
+ - lib/eac_templates/variables/content.rb
93
+ - lib/eac_templates/variables/directory.rb
94
+ - lib/eac_templates/variables/file.rb
95
+ - lib/eac_templates/variables/fs_object.rb
96
+ - lib/eac_templates/variables/not_found_error.rb
97
+ - lib/eac_templates/variables/providers.rb
98
+ - lib/eac_templates/variables/providers/base.rb
99
+ - lib/eac_templates/variables/providers/config_reader.rb
100
+ - lib/eac_templates/variables/providers/entries_reader.rb
101
+ - lib/eac_templates/variables/providers/generic.rb
102
+ - lib/eac_templates/variables/providers/hash.rb
94
103
  - lib/eac_templates/version.rb
95
104
  homepage:
96
105
  licenses: []
@@ -1,108 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/file'
4
-
5
- module EacTemplates
6
- class Directory
7
- TEMPLATE_EXTNAME = '.template'
8
-
9
- attr_reader :path
10
-
11
- def initialize(path)
12
- @path = path.is_a?(::Pathname) ? path : ::Pathname.new(path.to_s)
13
- end
14
-
15
- def apply(variables_source, directory)
16
- TemplateNode.new(self, '.', directory, variables_source).apply
17
- end
18
-
19
- def child(subpath)
20
- child_path = ::File.join(path, subpath)
21
- return ::EacTemplates::File.new(child_path) if ::File.file?(child_path)
22
- return ::EacTemplates::Directory.new(child_path) if ::File.directory?(child_path)
23
-
24
- raise "Child \"#{subpath}\" from \"#{path}\" not found"
25
- end
26
-
27
- def children
28
- path.children.map do |path_child|
29
- child(path_child.basename.to_path)
30
- end
31
- end
32
-
33
- private
34
-
35
- def apply_fs_object(source_relative, target)
36
- if ::File.directory?(source_absolute(source_relative))
37
- apply_directory(source_relative, target)
38
- elsif ::File.file?(source_absolute(source_relative))
39
- end
40
- end
41
-
42
- def source_absolute(source_relative)
43
- ::File.expand_path(source_relative, path)
44
- end
45
-
46
- class TemplateNode
47
- attr_reader :source_directory, :source_relative, :target_root_directory, :variables_source
48
-
49
- def initialize(source_directory, source_relative, target_root_directory, variables_source)
50
- @source_directory = source_directory
51
- @source_relative = source_relative
52
- @target_root_directory = target_root_directory
53
- @variables_source = variables_source
54
- end
55
-
56
- def apply
57
- if file?
58
- apply_file
59
- elsif directory?
60
- apply_directory
61
- else
62
- raise "Unknown filesystem type: #{source_absolute}"
63
- end
64
- end
65
-
66
- private
67
-
68
- def apply_directory
69
- ::FileUtils.mkdir_p(target_absolute)
70
- Dir.entries(source_absolute).each do |entry|
71
- child(entry).apply unless %w[. ..].include?(entry)
72
- end
73
- end
74
-
75
- def apply_file
76
- if ::File.extname(source_absolute) == TEMPLATE_EXTNAME
77
- ::EacTemplates::File.new(source_absolute).apply_to_file(
78
- variables_source, target_absolute
79
- )
80
- else
81
- ::FileUtils.cp(source_absolute, target_absolute)
82
- end
83
- end
84
-
85
- def child(entry)
86
- TemplateNode.new(source_directory, ::File.join(source_relative, entry),
87
- target_root_directory, variables_source)
88
- end
89
-
90
- def file?
91
- ::File.file?(source_absolute)
92
- end
93
-
94
- def directory?
95
- ::File.directory?(source_absolute)
96
- end
97
-
98
- def source_absolute
99
- ::File.expand_path(source_relative, source_directory.path)
100
- end
101
-
102
- def target_absolute
103
- ::File.expand_path(source_relative, target_root_directory)
104
- .gsub(/#{::Regexp.quote(TEMPLATE_EXTNAME)}\z/, '')
105
- end
106
- end
107
- end
108
- end
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
- require 'eac_templates/variable_providers'
5
-
6
- module EacTemplates
7
- class File
8
- VARIABLE_DELIMITER = ::Regexp.quote('%%')
9
- VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze
10
-
11
- enable_simple_cache
12
- common_constructor :path do
13
- self.path = path.to_pathname
14
- end
15
-
16
- # +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
17
- def apply(variables_source)
18
- variables_provider = ::EacTemplates::VariableProviders.build(variables_source)
19
- variables.inject(content) do |a, e|
20
- a.gsub(variable_pattern(e), variables_provider.variable_value(e).to_s)
21
- end
22
- end
23
-
24
- def apply_to_file(variables_source, output_file_path)
25
- output_file_path.to_pathname.write(apply(variables_source))
26
- end
27
-
28
- private
29
-
30
- def variables_uncached
31
- content.scan(VARIABLE_PATTERN).map(&:first).map do |name|
32
- sanitize_variable_name(name)
33
- end.to_set
34
- end
35
-
36
- def content_uncached
37
- path.read
38
- end
39
-
40
- def sanitize_variable_name(variable_name)
41
- variable_name.to_s.downcase
42
- end
43
-
44
- def variable_pattern(name)
45
- /#{VARIABLE_DELIMITER}#{::Regexp.quote(name)}#{VARIABLE_DELIMITER}/i
46
- end
47
- end
48
- end
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/from_gem'
4
- ::EacTemplates::FromGem.include_all