eac_tools 0.96.2 → 0.97.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +36 -35
- data/lib/eac_tools/version.rb +1 -1
- data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +24 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/documents_owner.rb +30 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base/file_resource_name.rb +37 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base.rb +17 -0
- data/sub/{avm-eac_rails_base1/lib/avm/eac_rails_base1 → avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0}/instances/apache_host.rb +5 -4
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_path.rb +12 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +33 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_target.rb +37 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb +92 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb +28 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +64 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb +101 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/theme.rb +41 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build.rb +60 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +28 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/base.rb +21 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb +55 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs/document_builder.rb +63 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb +35 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb +21 -0
- data/sub/{avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/processes.rb → avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros.rb} +2 -2
- data/sub/{avm-eac_rails_base1/lib/avm/eac_rails_base1 → avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0}/instances.rb +1 -1
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/catcher.rb +47 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/error.rb +18 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging.rb +11 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +28 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators.rb +11 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb +45 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/theme.rb +46 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +49 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/media.rb +28 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/title.rb +31 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document.rb +56 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +58 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document/build.rb +51 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document.rb +30 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/documents.rb +28 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/ignore_errors_option.rb +44 -0
- data/sub/{avm-eac_rails_base1/lib/avm/eac_rails_base1/instances → avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources}/runners.rb +2 -2
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources.rb +11 -0
- data/sub/{avm-eac_rails_base1/lib/avm/eac_rails_base1 → avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0}/version.rb +2 -2
- data/sub/{avm-eac_rails_base1/lib/avm/eac_rails_base1.rb → avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0.rb} +1 -1
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/file_formats/base_spec.rb +13 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +81 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec_files/pre_processed_root_body.adoc +25 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec.rb +22 -0
- 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
- 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
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/body.adoc +11 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/title +1 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/body.adoc +11 -0
- 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
- 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
- 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
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/title +1 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_media/a_media_file +1 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_theme/main.css +1 -0
- 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
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/index.html +1 -0
- 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
- 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
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/index.html +1 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/index.html +1 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec.rb +8 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc +11 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/title +1 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/theme/main.css +1 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb +16 -0
- data/sub/avm-eac_asciidoctor_base0/spec/spec_helper/eac_asciidoctor_base0_stubs.rb +55 -0
- data/sub/{avm-eac_rails_base1 → avm-eac_asciidoctor_base0}/spec/spec_helper.rb +4 -0
- data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc +11 -0
- data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/title +1 -0
- data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/theme/main.css +1 -0
- metadata +81 -39
- data/sub/avm-eac_rails_base1/avm-eac_rails_base1.gemspec +0 -22
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/apache_base.rb +0 -16
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/apache_path.rb +0 -21
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/base.rb +0 -50
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/deploy.rb +0 -23
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/processes/daemon.rb +0 -39
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/processes/tasks_scheduler.rb +0 -27
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/bundle.rb +0 -28
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/code_runner.rb +0 -28
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/log.rb +0 -45
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/logs/clear.rb +0 -27
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/logs.rb +0 -19
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/rails_server.rb +0 -34
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/tasks_scheduler/systemd_unit.rb +0 -48
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/tasks_scheduler.rb +0 -19
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/systemd_unit/service.rb +0 -72
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/systemd_unit/tasks_scheduler_command.rb +0 -31
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/systemd_unit.rb +0 -59
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner_with/bundle.rb +0 -27
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner_with/rails_environment.rb +0 -47
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/sources/base.rb +0 -43
- data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/instances/apache_path/extra_content.conf +0 -5
- data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/instances/systemd_unit/tasks_scheduler.service +0 -12
- data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/instances/systemd_unit/tasks_scheduler_command.sh +0 -6
- /data/sub/{avm-eac_rails_base1 → avm-eac_asciidoctor_base0}/Gemfile +0 -0
- /data/sub/{avm-eac_rails_base1 → avm-eac_asciidoctor_base0}/spec/rubocop_spec.rb +0 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'asciidoctor'
|
4
|
+
require 'avm/eac_asciidoctor_base0/instances/macros'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module EacAsciidoctorBase0
|
9
|
+
module Instances
|
10
|
+
class Build
|
11
|
+
class Document
|
12
|
+
require_sub __FILE__, include_modules: true
|
13
|
+
|
14
|
+
enable_simple_cache
|
15
|
+
enable_speaker
|
16
|
+
common_constructor :build, :parent_document, :source_document
|
17
|
+
delegate :subpath, to: :source_document
|
18
|
+
|
19
|
+
# @param other [Avm::EacAsciidoctorBase0::Instances::Build::Document]
|
20
|
+
# @return [String]
|
21
|
+
def href_to_other_body(other)
|
22
|
+
other.body_target_path.relative_path_from(body_target_path.dirname)
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Enumerable<String>]
|
26
|
+
def body_source_lines
|
27
|
+
if source_document.body_path.file?
|
28
|
+
source_document.body_path.read.each_line
|
29
|
+
else
|
30
|
+
default_body_source_lines
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# @param basename [String]
|
35
|
+
# @return [Avm::EacAsciidoctorBase0::Instances::Build::Document, nil]
|
36
|
+
def child(basename)
|
37
|
+
basename = basename.to_s
|
38
|
+
children.find { |c| c.source_document.root_path.basename.to_path == basename }
|
39
|
+
end
|
40
|
+
|
41
|
+
# @param basename [String]
|
42
|
+
# @return [Avm::EacAsciidoctorBase0::Instances::Build::Document]
|
43
|
+
def child!(basename)
|
44
|
+
child(basename) || raise("Child not found with basename \"#{basename}\"")
|
45
|
+
end
|
46
|
+
|
47
|
+
# @return [Pathname]
|
48
|
+
def convert_base_dir
|
49
|
+
source_document.root_path
|
50
|
+
end
|
51
|
+
|
52
|
+
# @return [Enumerable<String>]
|
53
|
+
def default_body_source_lines
|
54
|
+
macro_lines(:default_body)
|
55
|
+
end
|
56
|
+
|
57
|
+
# @param name [String]
|
58
|
+
# @return [Array<String>]
|
59
|
+
def macro_lines(name, arguments = [])
|
60
|
+
::Avm::EacAsciidoctorBase0::Instances::Macros.const_get(name.to_s.camelize)
|
61
|
+
.new(self, arguments).result
|
62
|
+
end
|
63
|
+
|
64
|
+
def perform
|
65
|
+
perform_self
|
66
|
+
perform_children
|
67
|
+
end
|
68
|
+
|
69
|
+
def perform_self
|
70
|
+
infov 'Building', source_document.subpath
|
71
|
+
body_target_write
|
72
|
+
copy_media_directory
|
73
|
+
end
|
74
|
+
|
75
|
+
def perform_children
|
76
|
+
children.each(&:perform)
|
77
|
+
end
|
78
|
+
|
79
|
+
# @return [String]
|
80
|
+
def pre_processed_body_source_content
|
81
|
+
(
|
82
|
+
header_lines + [''] + body_source_lines
|
83
|
+
.flat_map { |line| pre_process_line(line.rstrip) }
|
84
|
+
).map { |line| "#{line.rstrip}\n" }.join
|
85
|
+
end
|
86
|
+
|
87
|
+
def tree_documents_count
|
88
|
+
children.inject(1) { |a, e| a + e.tree_documents_count }
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def children_uncached
|
94
|
+
source_document.children
|
95
|
+
.map { |source_child| self.class.new(build, self, source_child) }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_asciidoctor_base0/instances/macros'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Instances
|
9
|
+
class Build
|
10
|
+
class Theme
|
11
|
+
TARGET_SUBPATH = '_theme'
|
12
|
+
|
13
|
+
common_constructor :build
|
14
|
+
|
15
|
+
# @return [void]
|
16
|
+
def perform
|
17
|
+
copy_theme_to_target
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Pathname]
|
21
|
+
def target_path
|
22
|
+
build.target_directory.join(TARGET_SUBPATH)
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Pathname]
|
26
|
+
def target_stylesheet_path
|
27
|
+
target_path
|
28
|
+
.join(Avm::EacAsciidoctorBase0::Sources::Base::Theme::THEME_STYLESHEET_BASENAME)
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
|
33
|
+
# @return [void]
|
34
|
+
def copy_theme_to_target
|
35
|
+
build.source.copy_theme_directory_to(target_path)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_asciidoctor_base0/documents_owner'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'eac_ruby_utils/fs/clearable_directory'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module EacAsciidoctorBase0
|
9
|
+
module Instances
|
10
|
+
class Build
|
11
|
+
require_sub __FILE__
|
12
|
+
include ::Avm::EacAsciidoctorBase0::DocumentsOwner
|
13
|
+
enable_speaker
|
14
|
+
enable_simple_cache
|
15
|
+
enable_listable
|
16
|
+
lists.add_symbol :option, :target_directory
|
17
|
+
common_constructor :instance, :options, default: [{}] do
|
18
|
+
self.options = self.class.lists.option.hash_keys_validate!(options.symbolize_keys)
|
19
|
+
end
|
20
|
+
|
21
|
+
SOURCE_EXTNAMES = %w[.adoc .asc].freeze
|
22
|
+
|
23
|
+
def perform
|
24
|
+
infov 'Documents to build', root_document.tree_documents_count
|
25
|
+
target_directory.clear
|
26
|
+
theme.perform
|
27
|
+
root_document.perform
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [Pathname]
|
31
|
+
def default_target_directory
|
32
|
+
source.path.join('build/site')
|
33
|
+
end
|
34
|
+
|
35
|
+
def root_document
|
36
|
+
::Avm::EacAsciidoctorBase0::Instances::Build::Document
|
37
|
+
.new(self, nil, source.root_document)
|
38
|
+
end
|
39
|
+
|
40
|
+
# @return [Avm::EacAsciidoctorBase0::Sources::Base]
|
41
|
+
def source
|
42
|
+
instance.application.local_source
|
43
|
+
end
|
44
|
+
|
45
|
+
def target_directory
|
46
|
+
::EacRubyUtils::Fs::ClearableDirectory.new(
|
47
|
+
options[OPTION_TARGET_DIRECTORY] || default_target_directory
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
# @return [Avm::EacAsciidoctorBase0::Instances::Build::Theme]
|
54
|
+
def theme_uncached
|
55
|
+
::Avm::EacAsciidoctorBase0::Instances::Build::Theme.new(self)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_webapp_base0/instances/deploy'
|
4
|
+
require 'avm/eac_asciidoctor_base0/sources/base'
|
5
|
+
require 'avm/eac_asciidoctor_base0/instances/build'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module EacAsciidoctorBase0
|
9
|
+
module Instances
|
10
|
+
class Deploy < ::Avm::EacWebappBase0::Instances::Deploy
|
11
|
+
def build_content
|
12
|
+
::Avm::EacAsciidoctorBase0::Instances::Build.new(
|
13
|
+
instance,
|
14
|
+
::Avm::EacAsciidoctorBase0::Instances::Build::OPTION_TARGET_DIRECTORY => build_dir
|
15
|
+
).perform
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def project_uncached
|
21
|
+
::Avm::EacAsciidoctorBase0::Sources::Base.new(
|
22
|
+
instance.source_instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH)
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module EacAsciidoctorBase0
|
7
|
+
module Instances
|
8
|
+
module Macros
|
9
|
+
class Base
|
10
|
+
enable_abstract_methods
|
11
|
+
common_constructor :document, :arguments, default: [[]]
|
12
|
+
|
13
|
+
# @return [Array<String>]
|
14
|
+
def result
|
15
|
+
raise_abstract_method __method__
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_asciidoctor_base0/instances/macros/base'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Instances
|
9
|
+
module Macros
|
10
|
+
class Breadcrumbs < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
11
|
+
NODE_SEPARATOR = ' » '
|
12
|
+
ROOT_DOCUMENT_TITLE = 'Home'
|
13
|
+
|
14
|
+
# @return [Array<String>]
|
15
|
+
def result
|
16
|
+
trail_nodes.join(NODE_SEPARATOR)
|
17
|
+
end
|
18
|
+
|
19
|
+
def trail_nodes
|
20
|
+
r = []
|
21
|
+
current = document
|
22
|
+
while current.present?
|
23
|
+
r.unshift(Node.new(document, current))
|
24
|
+
current = current.parent_document
|
25
|
+
end
|
26
|
+
r
|
27
|
+
end
|
28
|
+
|
29
|
+
class Node
|
30
|
+
common_constructor :current, :document
|
31
|
+
|
32
|
+
# @return [String]
|
33
|
+
def address
|
34
|
+
current.href_to_other_body(document)
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [String]
|
38
|
+
def title
|
39
|
+
if document.parent_document.present?
|
40
|
+
document.source_document.title
|
41
|
+
else
|
42
|
+
ROOT_DOCUMENT_TITLE
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [String]
|
47
|
+
def to_s
|
48
|
+
"link:#{address}[#{title}]"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_asciidoctor_base0/instances/macros/base'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Instances
|
9
|
+
module Macros
|
10
|
+
class ChildDocs < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
11
|
+
class DocumentBuilder
|
12
|
+
common_constructor :child_docs, :document, :depth, default: [0]
|
13
|
+
compare_by :title, :address
|
14
|
+
|
15
|
+
# @return [Pathname]
|
16
|
+
def address
|
17
|
+
root_document.href_to_other_body(document)
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Array] Document's children mapped to document builders.
|
21
|
+
def children
|
22
|
+
document.children.map { |c| self.class.new(child_docs, c, depth + 1) }.sort
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Boolean]
|
26
|
+
def lines_for_children?
|
27
|
+
child_docs.maximum_depth.negative? || child_docs.maximum_depth <= depth
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [String]
|
31
|
+
def link
|
32
|
+
"link:#{address}[#{title}]"
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [Array<String>]
|
36
|
+
def result
|
37
|
+
children.flat_map do |child|
|
38
|
+
r = [child.self_line]
|
39
|
+
r += child.result if lines_for_children?
|
40
|
+
r
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [Avm::EacAsciidoctorBase0::Instances::Build::Document]
|
45
|
+
def root_document
|
46
|
+
child_docs.document
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [String]
|
50
|
+
def self_line
|
51
|
+
"#{'*' * depth} #{link}"
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [String]
|
55
|
+
def title
|
56
|
+
document.source_document.title
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_asciidoctor_base0/instances/macros/base'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Instances
|
9
|
+
module Macros
|
10
|
+
class ChildDocs < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
11
|
+
DEFAULT_MAXIMUM_DEPTH = -1
|
12
|
+
|
13
|
+
# @return [Array<String>]
|
14
|
+
def result
|
15
|
+
document_builder_class.new(self, document).result
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Integer]
|
19
|
+
def maximum_depth
|
20
|
+
arguments[0].if_present(DEFAULT_MAXIMUM_DEPTH, &:to_i)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# @return [Class]
|
26
|
+
def document_builder_class
|
27
|
+
::Avm::EacAsciidoctorBase0::Instances::Macros::ChildDocs::DocumentBuilder
|
28
|
+
end
|
29
|
+
|
30
|
+
require_sub __FILE__
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_asciidoctor_base0/instances/macros/base'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Instances
|
9
|
+
module Macros
|
10
|
+
class DefaultBody < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
11
|
+
RESULT_LINES = ['== Índice', '', '//#child_docs'].freeze
|
12
|
+
|
13
|
+
# @return [Array<String>]
|
14
|
+
def result
|
15
|
+
RESULT_LINES
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_asciidoctor_base0/logging/error'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Logging
|
9
|
+
class Catcher < ::SimpleDelegator
|
10
|
+
CATCH_LEVEL = ::Logger::ERROR
|
11
|
+
LOGGER_METHODS = %i[unknown fatal error warn info debug].freeze
|
12
|
+
|
13
|
+
class << self
|
14
|
+
# @param [String]
|
15
|
+
# @return [Integer]
|
16
|
+
def level_by_method(method_name)
|
17
|
+
::Logger.const_get(method_name.to_s.underscore.upcase)
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Hash<Symbol, Integer]
|
21
|
+
def methods_levels
|
22
|
+
LOGGER_METHODS.to_h { |method_name| [method_name, level_by_method(method_name)] }
|
23
|
+
end
|
24
|
+
|
25
|
+
def on
|
26
|
+
real_logger = ::Asciidoctor::LoggerManager.logger
|
27
|
+
begin
|
28
|
+
::Asciidoctor::LoggerManager.logger = new(real_logger)
|
29
|
+
yield
|
30
|
+
ensure
|
31
|
+
::Asciidoctor::LoggerManager.logger = real_logger
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
methods_levels.each do |method_name, level|
|
37
|
+
define_method method_name do |*args, &block|
|
38
|
+
__getobj__.send(method_name, *args, &block)
|
39
|
+
return unless level >= CATCH_LEVEL
|
40
|
+
|
41
|
+
raise ::Avm::EacAsciidoctorBase0::Logging::Error.new(level, *args, &block)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module EacAsciidoctorBase0
|
7
|
+
module Logging
|
8
|
+
class Error < ::RuntimeError
|
9
|
+
attr_reader :level
|
10
|
+
|
11
|
+
def initialize(level, *args)
|
12
|
+
@level = level
|
13
|
+
super(*args)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/source_generators/base'
|
4
|
+
require 'eac_templates/core_ext'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module EacAsciidoctorBase0
|
9
|
+
module SourceGenerators
|
10
|
+
class Base < ::Avm::SourceGenerators::Base
|
11
|
+
OPTIONS = {}.freeze
|
12
|
+
|
13
|
+
enable_speaker
|
14
|
+
enable_simple_cache
|
15
|
+
|
16
|
+
class << self
|
17
|
+
def option_list
|
18
|
+
OPTIONS.inject(super) { |a, e| a.option(*e) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def perform
|
23
|
+
template.apply(self, target_path)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'asciidoctor'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Sources
|
9
|
+
class Base
|
10
|
+
class InstanceToBuild
|
11
|
+
AUTHOR_EMAIL = 'author@local.net'
|
12
|
+
AUTHOR_NAME = 'Local Author'
|
13
|
+
AUTHOR_NAME_INITIALS = 'L.A.'
|
14
|
+
|
15
|
+
common_constructor :source
|
16
|
+
|
17
|
+
# @return [Struct]
|
18
|
+
def application
|
19
|
+
::Struct.new(:local_source).new(source)
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [String]
|
23
|
+
def author_email
|
24
|
+
AUTHOR_EMAIL
|
25
|
+
end
|
26
|
+
|
27
|
+
# @return [String]
|
28
|
+
def author_name
|
29
|
+
AUTHOR_NAME
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [String]
|
33
|
+
def author_name_initials
|
34
|
+
AUTHOR_NAME_INITIALS
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [String]
|
38
|
+
def web_url
|
39
|
+
"file://#{source.path.expand_path.join('build', 'index.html')}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'asciidoctor'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacAsciidoctorBase0
|
8
|
+
module Sources
|
9
|
+
class Base
|
10
|
+
module Theme
|
11
|
+
CONFIGURATION_THEME_KEY = 'theme'
|
12
|
+
DEFAULT_THEME_DIRECTORY_SUBPATH = 'theme'
|
13
|
+
THEME_STYLESHEET_BASENAME = 'main.css'
|
14
|
+
|
15
|
+
# @param target_directory_path [Pathname]
|
16
|
+
def copy_theme_directory_to(target_directory_path)
|
17
|
+
target_directory_path.parent.mkpath
|
18
|
+
::FileUtils.copy_entry(theme_directory, target_directory_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @return [Pathname]
|
22
|
+
def default_theme_directory
|
23
|
+
path.join(DEFAULT_THEME_DIRECTORY_SUBPATH)
|
24
|
+
end
|
25
|
+
|
26
|
+
# @return [Pathname]
|
27
|
+
def theme_directory
|
28
|
+
theme_directory_by_configuration || default_theme_directory
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [Pathname]
|
32
|
+
def theme_directory_by_configuration
|
33
|
+
configuration_entry(CONFIGURATION_THEME_KEY).value.if_present do |v|
|
34
|
+
v.to_pathname.expand_path(path)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Pathname]
|
39
|
+
def theme_stylesheet_path
|
40
|
+
theme_directory.join(THEME_STYLESHEET_BASENAME)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|