eac_templates 0.3.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/searcher'
4
-
5
- module EacTemplates
6
- class FromGem
7
- class << self
8
- def include_all(searcher = nil)
9
- ::Gem::Specification.each { |gemspec| new(gemspec, searcher).include }
10
- end
11
- end
12
-
13
- TEMPLATES_DIR_SUBPATH = 'template'
14
-
15
- common_constructor :gemspec, :searcher, default: [nil] do
16
- self.searcher ||= ::EacTemplates::Searcher.default
17
- end
18
-
19
- # @return [Boolean]
20
- delegate :exist?, to: :path
21
-
22
- # @return [Pathname]
23
- def include
24
- return nil unless exist?
25
-
26
- searcher.included_paths << path
27
- path
28
- end
29
-
30
- # @return [Pathname]
31
- def path
32
- gemspec.gem_dir.to_pathname.join(TEMPLATES_DIR_SUBPATH)
33
- end
34
- end
35
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/object/blank'
4
- require 'eac_templates/directory'
5
- require 'eac_templates/file'
6
-
7
- module EacTemplates
8
- class Searcher
9
- class << self
10
- def default
11
- @default ||= new
12
- end
13
- end
14
-
15
- def template(subpath, required = true)
16
- path = template_path(subpath)
17
- if path.blank?
18
- return nil unless required
19
-
20
- raise_template_not_found(subpath)
21
- end
22
- return ::EacTemplates::File.new(path) if ::File.file?(path)
23
- return ::EacTemplates::Directory.new(path) if ::File.directory?(path)
24
-
25
- raise 'Invalid branching'
26
- end
27
-
28
- # @return The absolute path of template if found, +nil+ otherwise.
29
- def template_path(subpath)
30
- included_paths.each do |included_path|
31
- r = search_template_in_included_path(included_path, subpath)
32
- return r if r
33
- end
34
- nil
35
- end
36
-
37
- def included_paths
38
- @included_paths ||= ::Set.new
39
- end
40
-
41
- private
42
-
43
- def raise_template_not_found(subpath)
44
- raise "Template not found for subpath \"#{subpath}\"" \
45
- " (Included paths: #{included_paths.to_a.join(::File::PATH_SEPARATOR)})"
46
- end
47
-
48
- def search_template_in_included_path(included_path, subpath)
49
- path = ::File.join(included_path, subpath)
50
- ::File.exist?(path) ? path : nil
51
- end
52
- end
53
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module EacTemplates
4
- class VariableNotFoundError < StandardError; end
5
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/variable_not_found_error'
4
-
5
- module EacTemplates
6
- module VariableProviders
7
- class Base
8
- attr_reader :source
9
-
10
- def initialize(source)
11
- @source = source
12
- end
13
-
14
- def variable_value(name)
15
- return variable_fetch(name) if variable_exist?(name)
16
-
17
- raise VariableNotFoundError, "Variable \"#{name}\" not found in #{source}"
18
- end
19
- end
20
- end
21
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/node'
4
- require 'eac_templates/variable_providers/base'
5
-
6
- module EacTemplates
7
- module VariableProviders
8
- class ConfigReader < ::EacTemplates::VariableProviders::Base
9
- class << self
10
- def accept?(variables_source)
11
- return false unless variables_source.respond_to?(:entry)
12
-
13
- entry = variables_source.entry(:any_value)
14
- entry.respond_to?(:value) && entry.respond_to?(:found?)
15
- end
16
- end
17
-
18
- def variable_exist?(name)
19
- source.entry(name).found?
20
- end
21
-
22
- def variable_fetch(name)
23
- source.entry(name).value
24
- end
25
- end
26
- end
27
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/variable_providers/base'
4
-
5
- module EacTemplates
6
- module VariableProviders
7
- class EntriesReader < ::EacTemplates::VariableProviders::Base
8
- class << self
9
- def accept?(variables_source)
10
- variables_source.respond_to?(:read_entry)
11
- end
12
- end
13
-
14
- def variable_exist?(_name)
15
- true
16
- end
17
-
18
- def variable_fetch(name)
19
- source.read_entry(name)
20
- end
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/variable_providers/base'
4
-
5
- module EacTemplates
6
- module VariableProviders
7
- class Generic < ::EacTemplates::VariableProviders::Base
8
- class << self
9
- def accept?(variables_source)
10
- variables_source.is_a?(::Object)
11
- end
12
- end
13
-
14
- def variable_exist?(name)
15
- source.respond_to?(name)
16
- end
17
-
18
- def variable_fetch(name)
19
- source.send(name)
20
- end
21
- end
22
- end
23
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/variable_providers/base'
4
-
5
- module EacTemplates
6
- module VariableProviders
7
- class Hash < ::EacTemplates::VariableProviders::Base
8
- class << self
9
- def accept?(variables_source)
10
- variables_source.is_a?(::Hash)
11
- end
12
- end
13
-
14
- def initialize(source)
15
- super(source.with_indifferent_access)
16
- end
17
-
18
- def variable_exist?(name)
19
- source.key?(name)
20
- end
21
-
22
- def variable_fetch(name)
23
- source.fetch(name)
24
- end
25
- end
26
- end
27
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module EacTemplates
6
- module VariableProviders
7
- require_sub __FILE__
8
-
9
- PROVIDERS = %w[config_reader entries_reader hash generic].map do |name|
10
- "eac_templates/variable_providers/#{name}".camelize.constantize
11
- end
12
-
13
- class << self
14
- def build(variables_source)
15
- PROVIDERS.each do |provider|
16
- return provider.new(variables_source) if provider.accept?(variables_source)
17
- end
18
-
19
- raise "Variables provider not found for #{variables_source}"
20
- end
21
- end
22
- end
23
- end