eac_tools 0.111.1 → 0.113.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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +47 -48
  3. data/eac_tools.gemspec +6 -6
  4. data/lib/eac_tools/version.rb +1 -1
  5. data/sub/avm-eac_asciidoctor_base0/Gemfile +8 -0
  6. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +24 -0
  7. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/documents_owner.rb +27 -0
  8. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base/file_resource_name.rb +34 -0
  9. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base.rb +14 -0
  10. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_host.rb +17 -0
  11. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_path.rb +10 -0
  12. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +28 -0
  13. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_source.rb +49 -0
  14. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_target.rb +35 -0
  15. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/children.rb +47 -0
  16. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb +90 -0
  17. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb +27 -0
  18. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +62 -0
  19. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb +49 -0
  20. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/theme.rb +38 -0
  21. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build.rb +61 -0
  22. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +24 -0
  23. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/base.rb +19 -0
  24. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb +52 -0
  25. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs/document_builder.rb +60 -0
  26. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb +30 -0
  27. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb +18 -0
  28. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/todo.rb +18 -0
  29. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/catcher.rb +44 -0
  30. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/error.rb +16 -0
  31. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +24 -0
  32. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb +44 -0
  33. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/theme.rb +45 -0
  34. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +42 -0
  35. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/media.rb +27 -0
  36. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/title.rb +30 -0
  37. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document.rb +55 -0
  38. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +55 -0
  39. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document/build.rb +49 -0
  40. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document.rb +26 -0
  41. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/documents.rb +26 -0
  42. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/ignore_errors_option.rb +42 -0
  43. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners.rb +11 -0
  44. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +7 -0
  45. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0.rb +11 -0
  46. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/file_formats/base_spec.rb +11 -0
  47. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +79 -0
  48. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec_files/pre_processed_root_body.adoc +25 -0
  49. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec.rb +19 -0
  50. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/_media/a_media_file +1 -0
  51. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/_media/a_media_file +1 -0
  52. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/body.adoc +11 -0
  53. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/title +1 -0
  54. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/body.adoc +11 -0
  55. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/_media/a_media_file +1 -0
  56. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/body.adoc +11 -0
  57. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/title +1 -0
  58. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/title +1 -0
  59. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_media/a_media_file +1 -0
  60. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_theme/main.css +1 -0
  61. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/_media/a_media_file +1 -0
  62. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/index.html +1 -0
  63. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/_media/a_media_file +1 -0
  64. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/index.html +1 -0
  65. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/index.html +1 -0
  66. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/index.html +1 -0
  67. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec.rb +5 -0
  68. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc +11 -0
  69. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/title +1 -0
  70. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/theme/main.css +1 -0
  71. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb +13 -0
  72. data/sub/avm-eac_asciidoctor_base0/spec/rubocop_spec.rb +3 -0
  73. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper/eac_asciidoctor_base0_stubs.rb +55 -0
  74. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper.rb +7 -0
  75. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc +11 -0
  76. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/title +1 -0
  77. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/theme/main.css +1 -0
  78. metadata +95 -22
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'asciidoctor'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Sources
8
+ class Document
9
+ module Media
10
+ MEDIA_DIRECTORY_BASENAME = '_media'
11
+
12
+ def copy_media_directory_to(target_directory_path)
13
+ return unless media_directory.directory?
14
+
15
+ target_directory_path.parent.mkpath
16
+ ::FileUtils.copy_entry(media_directory, target_directory_path)
17
+ end
18
+
19
+ # @return [Pathname]
20
+ def media_directory
21
+ root_path.join(MEDIA_DIRECTORY_BASENAME)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'asciidoctor'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Sources
8
+ class Document
9
+ module Title
10
+ TITLE_BASENAME = 'title'
11
+
12
+ # @return [String]
13
+ def default_title
14
+ root_path.basename.to_s.humanize.split(/\s+/).map(&:upcase_first).join(' ')
15
+ end
16
+
17
+ # @return [String]
18
+ def title
19
+ title_path.exist? ? title_path.read.strip : default_title
20
+ end
21
+
22
+ # @return [Pathname]
23
+ def title_path
24
+ root_path.join(TITLE_BASENAME)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'asciidoctor'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Sources
8
+ class Document
9
+ enable_simple_cache
10
+ enable_speaker
11
+ require_sub __FILE__, include_modules: true
12
+ common_constructor :source, :parent_document, :basename
13
+
14
+ # Absolute path to the Asciidoctor file.
15
+ #
16
+ # @return [Pathname]
17
+ def body_path
18
+ root_path.join(
19
+ ::Avm::EacAsciidoctorBase0::Sources::Base::CONTENT_DOCUMENT_BASENAME
20
+ )
21
+ end
22
+
23
+ # @return [Avm::EacAsciidoctorBase0::Instances::Build::Document]
24
+ def build_document
25
+ source.build.document(subpath)
26
+ end
27
+
28
+ # Absolute path to the document's source root.
29
+ #
30
+ # @return [Pathname]
31
+ def root_path
32
+ source.content_directory.join(subpath)
33
+ end
34
+
35
+ # @return [Pathname]
36
+ def subpath
37
+ parent_document.if_present('.'.to_pathname) { |pd| pd.subpath.join(basename) }
38
+ end
39
+
40
+ # @return [String]
41
+ def to_s
42
+ subpath.to_path
43
+ end
44
+
45
+ private
46
+
47
+ def children_uncached
48
+ root_path.children.select(&:directory?)
49
+ .reject { |path| path.basename.to_path == MEDIA_DIRECTORY_BASENAME }
50
+ .map { |path| self.class.new(source, self, path.basename) }
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'os'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Sources
8
+ module Runners
9
+ class Build
10
+ include ::Avm::EacAsciidoctorBase0::Sources::Runners::IgnoreErrorsOption
11
+
12
+ runner_with :help do
13
+ desc 'Build the project'
14
+ arg_opt '-d', '--target-dir', 'Directory to build'
15
+ bool_opt '--open', 'Show the result.'
16
+ end
17
+
18
+ private
19
+
20
+ # @return [Avm::EacAsciidoctorBase0::Instances::Build]
21
+ def build_uncached
22
+ source.build(target_directory: parsed.target_dir)
23
+ end
24
+
25
+ def default_target_directory
26
+ runner_context.call(:project).root.join('build')
27
+ end
28
+
29
+ def open
30
+ return unless parsed.open?
31
+
32
+ infom "Opening \"#{open_path}\"..."
33
+ ::EacRubyUtils::Envs.local.command(OS.open_file_command, open_path).system!
34
+ end
35
+
36
+ def open_path
37
+ build.root_document.body_target_path
38
+ end
39
+
40
+ # @return [void]
41
+ def run_without_rescue
42
+ start_banner
43
+ build.perform
44
+ open
45
+ end
46
+
47
+ def start_banner
48
+ runner_context.call(:source_banner)
49
+ infov 'Target directory', build.target_directory
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'os'
4
+
5
+ module Avm
6
+ module EacAsciidoctorBase0
7
+ module Sources
8
+ module Runners
9
+ class Document
10
+ class Build
11
+ include ::Avm::EacAsciidoctorBase0::Sources::Runners::IgnoreErrorsOption
12
+
13
+ runner_with :help do
14
+ bool_opt '-O', '--open'
15
+ end
16
+
17
+ protected
18
+
19
+ def run_without_rescue
20
+ %w[build open ending].each { |p| send("run_#{p}") }
21
+ end
22
+
23
+ private
24
+
25
+ def build_document_uncached
26
+ document.build_document
27
+ end
28
+
29
+ def run_build
30
+ build_document.perform_self
31
+ end
32
+
33
+ def run_ending
34
+ success 'Done'
35
+ end
36
+
37
+ def run_open
38
+ return unless parsed.open?
39
+
40
+ infov 'Opening', build_document.body_target_path
41
+ ::EacRubyUtils::Envs.local.command(OS.open_file_command,
42
+ build_document.body_target_path).system!
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacAsciidoctorBase0
5
+ module Sources
6
+ module Runners
7
+ class Document
8
+ runner_with :help, :subcommands do
9
+ pos_arg :subpath
10
+ subcommands
11
+ end
12
+ delegate :subpath, to: :parsed
13
+ for_context :document, :subpath
14
+
15
+ private
16
+
17
+ # @return [Avm::EacAsciidoctorBase0::Sources::Document]
18
+ # @raise [KeyError]
19
+ def document_uncached
20
+ source.document(subpath)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacAsciidoctorBase0
5
+ module Sources
6
+ module Runners
7
+ class Documents
8
+ runner_with :help
9
+
10
+ def run
11
+ infov 'Documents', documents.count
12
+ documents.each do |document|
13
+ infov ' * ', document
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def documents_uncached
20
+ source.documents
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacAsciidoctorBase0
5
+ module Sources
6
+ module Runners
7
+ module IgnoreErrorsOption
8
+ common_concern do
9
+ acts_as_abstract :run_without_rescue
10
+
11
+ include ::EacCli::Runner
12
+
13
+ runner_definition do
14
+ bool_opt '-g', '--ignore-errors'
15
+ end
16
+ end
17
+
18
+ # @return [Boolean]
19
+ delegate :ignore_errors?, to: :parsed
20
+
21
+ # @return [void]
22
+ def run
23
+ catcher_send { run_without_rescue }
24
+ rescue ::Avm::EacAsciidoctorBase0::Logging::Error => e
25
+ fatal_error e
26
+ end
27
+
28
+ protected
29
+
30
+ # @return [Proc]
31
+ def catcher_send(&block)
32
+ if ignore_errors?
33
+ block.call
34
+ else
35
+ ::Avm::EacAsciidoctorBase0::Logging::Catcher.on(&block)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacAsciidoctorBase0
5
+ module Sources
6
+ module Runners
7
+ require_sub __FILE__
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacAsciidoctorBase0
5
+ VERSION = '0.27.0'
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils'
4
+ EacRubyUtils::RootModuleSetup.perform __FILE__
5
+
6
+ module Avm
7
+ module EacAsciidoctorBase0
8
+ end
9
+ end
10
+
11
+ require 'avm/eac_webapp_base0'
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Avm::EacAsciidoctorBase0::FileFormats::Base do
4
+ include_examples 'avm_file_format_file_resource_name', {
5
+ 'content/title' => 'Content[/]',
6
+ 'content/body.adoc' => 'Content[/]',
7
+ 'content/abc/title' => 'Content[/abc]',
8
+ 'content/abc/body.adoc' => 'Content[/abc]',
9
+ 'content/abc/sub/body.adoc' => 'Content[/abc/sub]'
10
+ }
11
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Avm::EacAsciidoctorBase0::Instances::Build::Document do
4
+ let(:app_director) { eac_asciidoctor_base0_stubs }
5
+ let(:build) { Avm::EacAsciidoctorBase0::Instances::Build.new(app_director.instance) }
6
+ let(:fixtures_dir) { __dir__.to_pathname.join('document_spec_files') }
7
+ let(:instance) { build_doc_child(build.root_document, :c1, :c1_1, :c1_1_1) } # rubocop:disable Naming/VariableNumber
8
+ let(:target_file) { fixtures_dir.join('pre_processed_root_body.adoc') }
9
+ let(:source) { app_director.source }
10
+ let(:doc_template) do
11
+ r = temp_dir
12
+ FileUtils.copy_entry(source.root_document.root_path, r)
13
+ r
14
+ end
15
+ let(:pre_processed_body_source_content) do
16
+ sanitize_body_source(instance.pre_processed_body_source_content)
17
+ end
18
+
19
+ before do
20
+ copy_template_hash(
21
+ source.root_document,
22
+ c1: {
23
+ c1_1: { # rubocop:disable Naming/VariableNumber
24
+ c1_1_1: { # rubocop:disable Naming/VariableNumber
25
+ c1_1_1_1: {}, # rubocop:disable Naming/VariableNumber
26
+ c1_1_1_2: {} # rubocop:disable Naming/VariableNumber
27
+ },
28
+ c1_1_2: { # rubocop:disable Naming/VariableNumber
29
+ c1_1_2_1: {}, # rubocop:disable Naming/VariableNumber
30
+ c1_1_2_2: {} # rubocop:disable Naming/VariableNumber
31
+ }
32
+ }
33
+ },
34
+ c2: {
35
+ c2_1: {} # rubocop:disable Naming/VariableNumber
36
+ }
37
+ )
38
+ end
39
+
40
+ it do
41
+ expect(pre_processed_body_source_content).to eq(target_file.read)
42
+ end
43
+
44
+ # @return [Avm::EacAsciidoctorBase0::Sources::Document]
45
+ def copy_template_doc(parent, basename)
46
+ parent.assert_argument(Avm::EacAsciidoctorBase0::Sources::Document, 'parent')
47
+
48
+ root_target = parent.root_path.join(basename.to_s)
49
+ FileUtils.copy_entry(doc_template, root_target)
50
+ root_target.join('title').write(root_target.basename.to_path)
51
+ Avm::EacAsciidoctorBase0::Sources::Document.new(parent.source, parent,
52
+ root_target.basename)
53
+ end
54
+
55
+ # @return [Array<Avm::EacAsciidoctorBase0::Sources::Document>]
56
+ def copy_template_hash(parent, hash)
57
+ parent.assert_argument(Avm::EacAsciidoctorBase0::Sources::Document, 'parent')
58
+ hash.assert_argument(Hash, 'hash')
59
+
60
+ hash.map do |k, v|
61
+ r = copy_template_doc(parent, k)
62
+ copy_template_hash(r, v)
63
+ r
64
+ end
65
+ end
66
+
67
+ # @return [Avm::EacAsciidoctorBase0::Instances::Build::Document]
68
+ def build_doc_child(build_doc, *path)
69
+ basename = path.shift.to_s
70
+ r = build_doc.child!(basename)
71
+ path.any? ? build_doc_child(r, *path) : r
72
+ end
73
+
74
+ # @param source [String]
75
+ # @return [String]
76
+ def sanitize_body_source(source)
77
+ source.gsub(/^:stylesheet:\s*.+\s*$/, ':stylesheet: ../../../../theme/main.css')
78
+ end
79
+ end
@@ -0,0 +1,25 @@
1
+ :stylesheet: ../../../../theme/main.css
2
+ = c1_1_1
3
+ The Author <theauthor@example.net>
4
+ :Author Initials: T.A.
5
+ :toc: left
6
+ :icons:
7
+ :numbered:
8
+ :source-highlighter: rouge
9
+ :website: https://www.example.net
10
+
11
+ [.normal]
12
+ link:../../../index.html[Home] » link:../../index.html[c1] » link:../index.html[c1_1] » link:index.html[c1_1_1]
13
+
14
+ == Child Documents
15
+
16
+ * link:c1_1_1_1/index.html[c1_1_1_1]
17
+ * link:c1_1_1_2/index.html[c1_1_1_2]
18
+
19
+ == First Section
20
+
21
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
22
+
23
+ == Second Section
24
+
25
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Avm::EacAsciidoctorBase0::Instances::Build do
4
+ let(:app_director) { eac_asciidoctor_base0_stubs }
5
+ let(:fs_comparator) { EacFs::Comparator.new.truncate_file('*.html') }
6
+ let(:instance) { described_class.new(app_director.instance) }
7
+
8
+ include_examples 'source_target_fixtures', __FILE__ do
9
+ def source_data(source_file)
10
+ FileUtils.copy_entry(source_file, app_director.source.path)
11
+ instance.perform
12
+ fs_comparator.build(instance.target_directory)
13
+ end
14
+
15
+ def target_data(target_file)
16
+ fs_comparator.build(target_file.to_pathname)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ == Child Documents
2
+
3
+ //#child_docs
4
+
5
+ == First Section
6
+
7
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
8
+
9
+ == Second Section
10
+
11
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.
@@ -0,0 +1,11 @@
1
+ == Child Documents
2
+
3
+ //#child_docs
4
+
5
+ == First Section
6
+
7
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
8
+
9
+ == Second Section
10
+
11
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.
@@ -0,0 +1,11 @@
1
+ == Child Documents
2
+
3
+ //#child_docs
4
+
5
+ == First Section
6
+
7
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
8
+
9
+ == Second Section
10
+
11
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.
@@ -0,0 +1 @@
1
+ @import "https://darshandsoni.com/asciidoctor-skins/css/adoc-colony.css";
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Avm::EacAsciidoctorBase0::SourceGenerators::Base do
4
+ include_examples 'avm_source_generated', __FILE__, 'EacAsciidoctorBase0'
5
+ end
@@ -0,0 +1,11 @@
1
+ == Child Documents
2
+
3
+ //#child_docs
4
+
5
+ == First Section
6
+
7
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sapien.
8
+
9
+ == Second Section
10
+
11
+ Nam faucibus quis dui at laoreet. Pellentesque ut sapien est.
@@ -0,0 +1 @@
1
+ @import "https://darshandsoni.com/asciidoctor-skins/css/adoc-colony.css";
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Avm::EacAsciidoctorBase0::Sources::Base do
4
+ include_examples 'in_avm_registry', 'sources'
5
+
6
+ describe '#instance' do
7
+ let(:source) { eac_asciidoctor_base0_stubs.source }
8
+
9
+ it do
10
+ expect(source.instance).to be_a(Avm::EacAsciidoctorBase0::Instances::Base)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ EacRubyUtils::Rspec.default_setup.describe_rubocop