eac_tools 0.41.0 → 0.42.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +23 -23
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/avm.gemspec +4 -4
  5. data/sub/avm/lib/avm/applications/base.rb +24 -3
  6. data/sub/avm/lib/avm/entries/entry.rb +5 -0
  7. data/sub/avm/lib/avm/instances/base.rb +5 -12
  8. data/sub/avm/lib/avm/instances/ids.rb +30 -0
  9. data/sub/avm/lib/avm/rspec/setup.rb +8 -0
  10. data/sub/avm/lib/avm/sources/base/instance.rb +2 -14
  11. data/sub/avm/lib/avm/version.rb +1 -1
  12. data/sub/avm/spec/spec_helper.rb +1 -1
  13. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +1 -1
  14. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +18 -0
  15. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_macro_value.rb +59 -0
  16. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +50 -0
  17. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/{sources → instances}/build/document.rb +11 -11
  18. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/{sources → instances}/build.rb +8 -3
  19. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +3 -3
  20. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +5 -3
  21. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +1 -1
  22. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +32 -0
  23. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec_files/pre_processed_root_body.adoc +15 -0
  24. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec.rb +44 -0
  25. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/{sources → instances}/build_spec_files/doc1.html +0 -0
  26. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/{sources → instances}/build_spec_files/doc2/doc2_1.html +0 -0
  27. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/{sources → instances}/build_spec_files/doc2.html +0 -0
  28. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/{sources → instances}/build_spec_files/index.html +0 -0
  29. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc +1 -0
  30. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb +14 -0
  31. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper.rb +1 -4
  32. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc +1 -0
  33. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +2 -2
  34. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/dependencies.rb +27 -0
  35. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/gemfile_lock.rb +27 -0
  36. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/options.rb +30 -0
  37. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb +52 -0
  38. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base.rb +1 -66
  39. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
  40. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +2 -1
  41. data/sub/eac_cli/eac_cli.gemspec +2 -2
  42. data/sub/eac_cli/lib/eac_cli/config/entry.rb +4 -0
  43. data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
  44. data/sub/eac_config/eac_config.gemspec +2 -2
  45. data/sub/eac_config/lib/eac_config/entry/not_found_error.rb +13 -0
  46. data/sub/eac_config/lib/eac_config/entry.rb +7 -0
  47. data/sub/eac_config/lib/eac_config/version.rb +1 -1
  48. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +9 -0
  49. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +15 -6
  50. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +5 -1
  51. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  52. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +9 -2
  53. metadata +27 -29
  54. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/build_spec.rb +0 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4a759c572f8acfb951cb1952ae3b1b1800bac5dada73d1907e8e8e2df9fa9e5
4
- data.tar.gz: 4c5804436ac869605af3be470557cee27131fbe0be2d6f2191f778210d7c60cd
3
+ metadata.gz: 0cc7fffb0a2dc335ea8d9bb791d3aac22b783dbf2556d7812ece97708fee0be9
4
+ data.tar.gz: 23081d70c8762bca09ee9389b361f3b0fed45f30a09c7649f9caaf28948559f3
5
5
  SHA512:
6
- metadata.gz: dbe1a9779ef9fa3a6d11c4d47bd47d9a5812d7af616669ff01a503233c563f15d64ca857b3536ea89e3b767d28c8ea13f56b0615c4183cf965729433bffd0310
7
- data.tar.gz: a2f36c26ff611a47052fcf57a31a9644c408160ae27dc637d0ebdbd8c3477fe564dcc56bc7ce38076d3be7ef6e6a6619cd1aab7e70db4fe19b3da55e20dbff04
6
+ metadata.gz: 10510fc8717ce648a96da24ca0796ac2bc0f4b57424dc7efad470b86cd71585b3fbf8dd9df03818a6b4f2d739accc8f7758925d65f9bbfdf04dec360bf82fca4
7
+ data.tar.gz: 17442df47bb3b1944d1ce2a4b0b976aaf36edb54e6c13aad74655fc32295159caa5e31835a08b2853ea63b4db2f5311f6823af588ec2b649ca3d27f4a1dd0ea0
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.41.0)
5
- avm (~> 0.54)
6
- avm-eac_asciidoctor_base0 (~> 0.9)
4
+ eac_tools (0.42.0)
5
+ avm (~> 0.55)
6
+ avm-eac_asciidoctor_base0 (~> 0.10)
7
7
  avm-eac_generic_base0 (~> 0.8)
8
8
  avm-eac_latex_base0 (~> 0.3)
9
9
  avm-eac_php_base0 (~> 0.3)
@@ -11,11 +11,11 @@ PATH
11
11
  avm-eac_rails_base1 (~> 0.7)
12
12
  avm-eac_redmine_base0 (~> 0.16)
13
13
  avm-eac_redmine_plugin_base0 (~> 0.3)
14
- avm-eac_ruby_base1 (~> 0.26, >= 0.26.2)
14
+ avm-eac_ruby_base1 (~> 0.27)
15
15
  avm-eac_webapp_base0 (~> 0.12, >= 0.12.2)
16
16
  avm-eac_wordpress_base0 (~> 0.2, >= 0.2.1)
17
17
  avm-tools (~> 0.142, >= 0.142.4)
18
- eac_ruby_utils (~> 0.106, >= 0.106.1)
18
+ eac_ruby_utils (~> 0.107)
19
19
 
20
20
  PATH
21
21
  remote: sub/aranha-parsers
@@ -33,10 +33,10 @@ PATH
33
33
  PATH
34
34
  remote: sub/avm-eac_asciidoctor_base0
35
35
  specs:
36
- avm-eac_asciidoctor_base0 (0.9.0)
36
+ avm-eac_asciidoctor_base0 (0.10.0)
37
37
  asciidoctor (~> 2.0, >= 2.0.18)
38
38
  avm-eac_webapp_base0 (~> 0.12, >= 0.12.2)
39
- eac_ruby_utils (~> 0.106, >= 0.106.1)
39
+ eac_ruby_utils (~> 0.107)
40
40
  os (~> 1.1, >= 1.1.4)
41
41
  rouge (~> 3.30)
42
42
 
@@ -108,10 +108,10 @@ PATH
108
108
  PATH
109
109
  remote: sub/avm-eac_ruby_base1
110
110
  specs:
111
- avm-eac_ruby_base1 (0.26.2)
112
- avm (~> 0.54)
111
+ avm-eac_ruby_base1 (0.27.0)
112
+ avm (~> 0.55)
113
113
  avm-eac_generic_base0 (~> 0.8)
114
- eac_ruby_utils (~> 0.106, >= 0.106.1)
114
+ eac_ruby_utils (~> 0.107)
115
115
 
116
116
  PATH
117
117
  remote: sub/avm-eac_webapp_base0
@@ -173,14 +173,14 @@ PATH
173
173
  PATH
174
174
  remote: sub/avm
175
175
  specs:
176
- avm (0.54.0)
176
+ avm (0.55.0)
177
177
  aranha-parsers (~> 0.14, >= 0.14.4)
178
- eac_cli (~> 0.28)
179
- eac_config (~> 0.11, >= 0.11.1)
178
+ eac_cli (~> 0.29)
179
+ eac_config (~> 0.12)
180
180
  eac_docker (~> 0.5)
181
- eac_fs (~> 0.13)
181
+ eac_fs (~> 0.14)
182
182
  eac_git (~> 0.13)
183
- eac_ruby_utils (~> 0.106, >= 0.106.1)
183
+ eac_ruby_utils (~> 0.107)
184
184
  eac_templates (~> 0.3, >= 0.3.2)
185
185
  filesize (~> 0.2)
186
186
  htmlbeautifier (~> 1.4, >= 1.4.2)
@@ -189,17 +189,17 @@ PATH
189
189
  PATH
190
190
  remote: sub/eac_cli
191
191
  specs:
192
- eac_cli (0.28.0)
192
+ eac_cli (0.29.0)
193
193
  colorize (~> 0.8, >= 0.8.1)
194
- eac_config (~> 0.11, >= 0.11.1)
195
- eac_ruby_utils (~> 0.103)
194
+ eac_config (~> 0.12)
195
+ eac_ruby_utils (~> 0.107)
196
196
 
197
197
  PATH
198
198
  remote: sub/eac_config
199
199
  specs:
200
- eac_config (0.11.1)
201
- addressable (~> 2.8)
202
- eac_ruby_utils (~> 0.102)
200
+ eac_config (0.12.0)
201
+ addressable (~> 2.8, >= 2.8.1)
202
+ eac_ruby_utils (~> 0.107)
203
203
 
204
204
  PATH
205
205
  remote: sub/eac_docker
@@ -235,7 +235,7 @@ PATH
235
235
  PATH
236
236
  remote: sub/eac_ruby_utils
237
237
  specs:
238
- eac_ruby_utils (0.106.1)
238
+ eac_ruby_utils (0.107.0)
239
239
  activesupport (>= 4, < 7)
240
240
  addressable (~> 2.8, >= 2.8.1)
241
241
  bundler
@@ -370,7 +370,7 @@ GEM
370
370
  tzinfo (2.0.5)
371
371
  concurrent-ruby (~> 1.0)
372
372
  unicode-display_width (1.6.1)
373
- zeitwerk (2.6.1)
373
+ zeitwerk (2.6.4)
374
374
  zlib (2.1.1)
375
375
 
376
376
  PLATFORMS
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.41.0'
4
+ VERSION = '0.42.0'
5
5
  end
data/sub/avm/avm.gemspec CHANGED
@@ -13,12 +13,12 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
15
  s.add_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.4'
16
- s.add_dependency 'eac_cli', '~> 0.28'
17
- s.add_dependency 'eac_config', '~> 0.11', '>= 0.11.1'
16
+ s.add_dependency 'eac_cli', '~> 0.29'
17
+ s.add_dependency 'eac_config', '~> 0.12'
18
18
  s.add_dependency 'eac_docker', '~> 0.5'
19
- s.add_dependency 'eac_fs', '~> 0.13'
19
+ s.add_dependency 'eac_fs', '~> 0.14'
20
20
  s.add_dependency 'eac_git', '~> 0.13'
21
- s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
21
+ s.add_dependency 'eac_ruby_utils', '~> 0.107'
22
22
  s.add_dependency 'eac_templates', '~> 0.3', '>= 0.3.2'
23
23
  s.add_dependency 'filesize', '~> 0.2'
24
24
  s.add_dependency 'htmlbeautifier', '~> 1.4', '>= 1.4.2'
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/entries/base'
4
+ require 'avm/instances/ids'
4
5
  require 'avm/registry'
5
6
  require 'eac_ruby_utils/core_ext'
6
7
 
@@ -22,23 +23,43 @@ module Avm
22
23
  end
23
24
 
24
25
  def instance(suffix)
25
- ::Avm::Instances::Base.new(self, suffix)
26
+ stereotype.instance_class.new(self, suffix)
26
27
  end
27
28
 
28
29
  def name
29
30
  entry(::Avm::Instances::EntryKeys::NAME).read
30
31
  end
31
32
 
33
+ # @return [String]
34
+ def local_instance_id
35
+ ::Avm::Instances::Ids.build(id, local_instance_suffix)
36
+ end
37
+
38
+ # @return [Pathname]
39
+ def local_source_path
40
+ local_source_path_entry.value!.to_pathname
41
+ end
42
+
43
+ # @return [EacConfig::Entry]
44
+ def local_source_path_entry
45
+ ::EacConfig::Node.context.current.entry([local_instance_id, 'install', 'path'])
46
+ end
47
+
48
+ # @return [String]
49
+ def local_instance_suffix
50
+ LOCAL_INSTANCE_SUFFIX
51
+ end
52
+
32
53
  private
33
54
 
34
55
  # @return [Avm::Instances::Base]
35
56
  def local_instance_uncached
36
- instance(LOCAL_INSTANCE_SUFFIX)
57
+ instance(local_instance_suffix)
37
58
  end
38
59
 
39
60
  # @return [Avm::Sources::Base]
40
61
  def local_source_uncached
41
- ::Avm::Registry.sources.detect(local_instance.install_path)
62
+ ::Avm::Registry.sources.detect(local_source_path)
42
63
  end
43
64
  end
44
65
  end
@@ -46,6 +46,11 @@ module Avm
46
46
  optional_value || read
47
47
  end
48
48
 
49
+ def value!
50
+ optional_value.if_present { |v| return v }
51
+ context_entry.value!
52
+ end
53
+
49
54
  def write(value)
50
55
  context_entry.value = value
51
56
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/instances/ids'
3
4
  require 'avm/with/application_stereotype'
4
5
  require 'avm/with/extra_subcommands'
5
6
  require 'eac_ruby_utils/require_sub'
@@ -23,18 +24,9 @@ module Avm
23
24
 
24
25
  class << self
25
26
  def by_id(id)
26
- application_id, suffix = parse_id(id)
27
+ parsed_id = ::Avm::Instances::Ids.parse!(id)
27
28
  require 'avm/applications/base'
28
- new(::Avm::Applications::Base.new(application_id), suffix)
29
- end
30
-
31
- private
32
-
33
- def parse_id(id)
34
- m = ID_PATTERN.match(id)
35
- return [m[1], m[2]] if m
36
-
37
- raise "ID Pattern no matched: \"#{id}\""
29
+ new(::Avm::Applications::Base.new(parsed_id.application_id), parsed_id.instance_suffix)
38
30
  end
39
31
  end
40
32
 
@@ -42,8 +34,9 @@ module Avm
42
34
  self.suffix = suffix.to_s
43
35
  end
44
36
 
37
+ # @return [String]
45
38
  def id
46
- "#{application.id}_#{suffix}"
39
+ ::Avm::Instances::Ids.build(application.id, suffix)
47
40
  end
48
41
 
49
42
  def to_s
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Instances
7
+ module Ids
8
+ ID_PARTS_SEPARATOR = '_'
9
+ ID_PATTERN = /\A([a-z0-9]+(?:\-[a-z0-9]+)*)_(.+)\z/.freeze
10
+ ID_PARSER = ID_PATTERN.to_parser do |m|
11
+ ::Struct.new(:application_id, :instance_suffix).new(m[1], m[2])
12
+ end
13
+
14
+ class << self
15
+ # @param application_id [String]
16
+ # @param instance_suffix [String]
17
+ # @return [String]
18
+ def build(application_id, instance_suffix)
19
+ [application_id, instance_suffix].join(ID_PARTS_SEPARATOR)
20
+ end
21
+
22
+ # @param id [String]
23
+ # @return [String]
24
+ def parse!(id)
25
+ ID_PARSER.parse!(id)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -21,6 +21,14 @@ module Avm
21
21
  require "avm/rspec/shared_examples/#{example}"
22
22
  end
23
23
  end
24
+
25
+ # @return [self]
26
+ def stub_avm_contexts
27
+ stub_eac_config_node
28
+ stub_eac_speaker
29
+
30
+ self
31
+ end
24
32
  end
25
33
  end
26
34
  end
@@ -7,20 +7,8 @@ module Avm
7
7
  module Sources
8
8
  class Base
9
9
  module Instance
10
- DEFAULT_INSTANCE_SUFFIX = 'dev'
11
-
12
- def instance_suffix
13
- DEFAULT_INSTANCE_SUFFIX
14
- end
15
-
16
- private
17
-
18
- def application_uncached
19
- ::Avm::Applications::Base.new(path.basename)
20
- end
21
-
22
- def instance_uncached
23
- ::Avm::Instances::Base.new(application, DEFAULT_INSTANCE_SUFFIX)
10
+ def instance
11
+ application.local_instance
24
12
  end
25
13
  end
26
14
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.54.0'
4
+ VERSION = '0.55.0'
5
5
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/rspec/default_setup'
4
- ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__))
4
+ ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__)).stub_avm_contexts
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency 'asciidoctor', '~> 2.0', '>= 2.0.18'
16
16
  s.add_dependency 'avm-eac_webapp_base0', '~> 0.12', '>= 0.12.2'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.107'
18
18
  s.add_dependency 'os', '~> 1.1', '>= 1.1.4'
19
19
  s.add_dependency 'rouge', '~> 3.30'
20
20
 
@@ -10,6 +10,24 @@ module Avm
10
10
  module Instances
11
11
  class Base < ::Avm::EacWebappBase0::Instances::Base
12
12
  FILES_UNITS = {}.freeze
13
+ AUTHOR_EMAIL_ENTRY_PATH = 'install.email'
14
+ AUTHOR_NAME_ENTRY_PATH = 'install.name'
15
+ AUTHOR_NAME_INITIALS_ENTRY_PATH = 'install.name_initials'
16
+
17
+ # @return [String]
18
+ def author_email
19
+ entry(AUTHOR_EMAIL_ENTRY_PATH).value!
20
+ end
21
+
22
+ # @return [String]
23
+ def author_name
24
+ entry(AUTHOR_NAME_ENTRY_PATH).value!
25
+ end
26
+
27
+ # @return [String]
28
+ def author_name_initials
29
+ entry(AUTHOR_NAME_INITIALS_ENTRY_PATH).value!
30
+ end
13
31
  end
14
32
  end
15
33
  end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Instances
8
+ class Build
9
+ class Document
10
+ class HeaderMacroValue
11
+ enable_method_class
12
+ enable_settings_provider
13
+ enable_simple_cache
14
+ common_constructor :document
15
+
16
+ delegate :build, to: :document
17
+ delegate :instance, to: :build
18
+ delegate :author_email, :author_name, to: :instance
19
+
20
+ ATTRIBUTES = ['Author Initials', 'toc', 'icons', 'numbered', 'website'].freeze
21
+ TOC = 'left'
22
+ ICONS = ''
23
+ NUMBERED = ''
24
+
25
+ def attributes_lines
26
+ ATTRIBUTES.map do |attr|
27
+ [":#{attr}:", attribute_value(attr)].reject(&:blank?).join(' ')
28
+ end
29
+ end
30
+
31
+ def attribute_value(attr)
32
+ setting_value(attr.variableize)
33
+ end
34
+
35
+ def author_initials
36
+ instance.author_name_initials
37
+ end
38
+
39
+ def author_line
40
+ "#{author_name} <#{author_email}>"
41
+ end
42
+
43
+ def result
44
+ result_lines.join("\n")
45
+ end
46
+
47
+ def result_lines
48
+ [author_line] + attributes_lines
49
+ end
50
+
51
+ def website
52
+ instance.web_url
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Instances
8
+ class Build
9
+ class Document
10
+ class PreProcessLine
11
+ enable_method_class
12
+ enable_simple_cache
13
+
14
+ MACRO_PARSER = %r{\A\s*//\#(\S+.*)}.to_parser do |m|
15
+ m[1]
16
+ end
17
+
18
+ common_constructor :document, :line
19
+
20
+ def result
21
+ if macro?
22
+ macro_value
23
+ else
24
+ line
25
+ end
26
+ end
27
+
28
+ def macro?
29
+ macro_name.present?
30
+ end
31
+
32
+ def macro_parser
33
+ MACRO_PARSER
34
+ end
35
+
36
+ def macro_value
37
+ document.send("#{macro_name}_macro_value")
38
+ end
39
+
40
+ private
41
+
42
+ def macro_name_uncached
43
+ macro_parser.parse(line)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'asciidoctor'
4
+ require 'eac_ruby_utils/core_ext'
4
5
 
5
6
  module Avm
6
7
  module EacAsciidoctorBase0
7
- module Sources
8
+ module Instances
8
9
  class Build
9
10
  class Document
11
+ require_sub __FILE__
12
+
10
13
  ROOT_BODY_TARGET_BASENAME = 'index'
11
14
 
12
15
  enable_simple_cache
@@ -31,14 +34,6 @@ module Avm
31
34
  ).basename_sub('.*') { |b| "#{b}.html" }
32
35
  end
33
36
 
34
- def mydebug
35
- root_source_path.print_debug(title: 'Document')
36
- children.count.print_debug(label: 'children.count')
37
- body_source_path.print_debug(label: 'body_source')
38
- body_source_path.file?.print_debug(label: 'body_source.file?')
39
- body_target_path.print_debug(label: 'body_target')
40
- end
41
-
42
37
  def perform
43
38
  perform_self
44
39
  perform_children
@@ -46,8 +41,8 @@ module Avm
46
41
 
47
42
  def perform_self
48
43
  infov 'Building', root_source_path
49
- ::Asciidoctor.convert_file(
50
- body_source_path.to_path,
44
+ ::Asciidoctor.convert(
45
+ pre_processed_body_source_content,
51
46
  to_file: body_target_path.to_path, safe: :unsafe, mkdirs: true
52
47
  )
53
48
  end
@@ -56,6 +51,11 @@ module Avm
56
51
  children.each(&:perform)
57
52
  end
58
53
 
54
+ # @return [String]
55
+ def pre_processed_body_source_content
56
+ body_source_path.read.each_line.map { |line| pre_process_line(line.rstrip) + "\n" }.join
57
+ end
58
+
59
59
  def tree_documents_count
60
60
  children.inject(1) { |a, e| a + e.tree_documents_count }
61
61
  end
@@ -5,14 +5,14 @@ require 'eac_ruby_utils/fs/clearable_directory'
5
5
 
6
6
  module Avm
7
7
  module EacAsciidoctorBase0
8
- module Sources
8
+ module Instances
9
9
  class Build
10
10
  require_sub __FILE__
11
11
  enable_speaker
12
12
  enable_simple_cache
13
13
  enable_listable
14
14
  lists.add_symbol :option, :target_directory
15
- common_constructor :source, :options, default: [{}] do
15
+ common_constructor :instance, :options, default: [{}] do
16
16
  self.options = self.class.lists.option.hash_keys_validate!(options.symbolize_keys)
17
17
  end
18
18
 
@@ -29,7 +29,12 @@ module Avm
29
29
  end
30
30
 
31
31
  def root_document
32
- ::Avm::EacAsciidoctorBase0::Sources::Build::Document.new(self, nil, nil)
32
+ ::Avm::EacAsciidoctorBase0::Instances::Build::Document.new(self, nil, nil)
33
+ end
34
+
35
+ # @return [Avm::EacAsciidoctorBase0::Sources::Base]
36
+ def source
37
+ instance.application.local_source
33
38
  end
34
39
 
35
40
  def target_directory
@@ -2,16 +2,16 @@
2
2
 
3
3
  require 'avm/eac_webapp_base0/instances/deploy'
4
4
  require 'avm/eac_asciidoctor_base0/sources/base'
5
- require 'avm/eac_asciidoctor_base0/sources/build'
5
+ require 'avm/eac_asciidoctor_base0/instances/build'
6
6
 
7
7
  module Avm
8
8
  module EacAsciidoctorBase0
9
9
  module Instances
10
10
  class Deploy < ::Avm::EacWebappBase0::Instances::Deploy
11
11
  def build_content
12
- ::Avm::EacAsciidoctorBase0::Sources::Build.new(
12
+ ::Avm::EacAsciidoctorBase0::Instances::Build.new(
13
13
  project,
14
- ::Avm::EacAsciidoctorBase0::Sources::Build::OPTION_TARGET_DIRECTORY => build_dir
14
+ ::Avm::EacAsciidoctorBase0::Instances::Build::OPTION_TARGET_DIRECTORY => build_dir
15
15
  ).perform
16
16
  end
17
17
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/eac_asciidoctor_base0/sources/build'
3
+ require 'avm/eac_asciidoctor_base0/instances/build'
4
4
  require 'eac_cli/core_ext'
5
5
  require 'os'
6
6
 
@@ -24,8 +24,10 @@ module Avm
24
24
  private
25
25
 
26
26
  def build_uncached
27
- ::Avm::EacAsciidoctorBase0::Sources::Build.new(runner_context.call(:source),
28
- target_directory: parsed.target_dir)
27
+ ::Avm::EacAsciidoctorBase0::Instances::Build.new(
28
+ runner_context.call(:source).instance,
29
+ target_directory: parsed.target_dir
30
+ )
29
31
  end
30
32
 
31
33
  def default_target_directory
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacAsciidoctorBase0
5
- VERSION = '0.9.0'
5
+ VERSION = '0.10.0'
6
6
  end
7
7
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_asciidoctor_base0/sources/base'
4
+ require 'avm/eac_asciidoctor_base0/instances/build'
5
+
6
+ ::RSpec.describe ::Avm::EacAsciidoctorBase0::Instances::Build::Document do
7
+ let(:application) { ::Avm::Applications::Base.new('myapp') }
8
+ let(:application_instance) do
9
+ ::Avm::EacAsciidoctorBase0::Instances::Base
10
+ .new(application, 'stub')
11
+ end
12
+ let(:build) { ::Avm::EacAsciidoctorBase0::Instances::Build.new(application_instance) }
13
+ let(:fixtures_dir) { __dir__.to_pathname.join('document_spec_files') }
14
+ let(:instance) { build.root_document }
15
+ let(:source) { avm_source('EacAsciidoctorBase0', target_basename: application.id) }
16
+ let(:target_file) { fixtures_dir.join('pre_processed_root_body.adoc') }
17
+
18
+ before do
19
+ application.entry('stereotype').write('EacAsciidoctorBase0')
20
+ ::EacConfig::Node.context.current.entry("#{application.id}_dev.install.path")
21
+ .value = source.path.to_path
22
+ application_instance.entry('install.path').write(source.path.to_path)
23
+ application_instance.entry('install.name').write('The Author')
24
+ application_instance.entry('install.name_initials').write('T.A.')
25
+ application_instance.entry('install.email').write('theauthor@example.net')
26
+ application_instance.entry('web.url').write('https://www.example.net')
27
+ end
28
+
29
+ it do
30
+ expect(instance.pre_processed_body_source_content).to eq(target_file.read)
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ = EacAsciidoctorBase0 Generated Source =
2
+ The Author <theauthor@example.net>
3
+ :Author Initials: T.A.
4
+ :toc: left
5
+ :icons:
6
+ :numbered:
7
+ :website: https://www.example.net
8
+
9
+ == First Section
10
+
11
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
12
+
13
+ == Second Section
14
+
15
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.