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.
- checksums.yaml +4 -4
- data/Gemfile.lock +47 -48
- data/eac_tools.gemspec +6 -6
- data/lib/eac_tools/version.rb +1 -1
- data/sub/avm-eac_asciidoctor_base0/Gemfile +8 -0
- 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 +27 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base/file_resource_name.rb +34 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base.rb +14 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_host.rb +17 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_path.rb +10 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +28 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_source.rb +49 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_target.rb +35 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/children.rb +47 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb +90 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb +27 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +62 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb +49 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/theme.rb +38 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build.rb +61 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +24 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/base.rb +19 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb +52 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs/document_builder.rb +60 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb +30 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb +18 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/todo.rb +18 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/catcher.rb +44 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/error.rb +16 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +24 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb +44 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/theme.rb +45 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +42 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/media.rb +27 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/title.rb +30 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document.rb +55 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +55 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document/build.rb +49 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document.rb +26 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/documents.rb +26 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/ignore_errors_option.rb +42 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners.rb +11 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +7 -0
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0.rb +11 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/file_formats/base_spec.rb +11 -0
- data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +79 -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 +19 -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 +5 -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 +13 -0
- data/sub/avm-eac_asciidoctor_base0/spec/rubocop_spec.rb +3 -0
- data/sub/avm-eac_asciidoctor_base0/spec/spec_helper/eac_asciidoctor_base0_stubs.rb +55 -0
- data/sub/avm-eac_asciidoctor_base0/spec/spec_helper.rb +7 -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 +95 -22
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'asciidoctor'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacAsciidoctorBase0
|
|
7
|
+
module Instances
|
|
8
|
+
class Build
|
|
9
|
+
class Document
|
|
10
|
+
module Media
|
|
11
|
+
def copy_media_directory
|
|
12
|
+
source_document.copy_media_directory_to(media_target_path)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @return [Pathname]
|
|
16
|
+
def media_target_path
|
|
17
|
+
build.target_directory.join(
|
|
18
|
+
parent_document.present? ? source_document.subpath : '',
|
|
19
|
+
::Avm::EacAsciidoctorBase0::Sources::Document::Media::MEDIA_DIRECTORY_BASENAME
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
class Build
|
|
7
|
+
class Document
|
|
8
|
+
class PreProcessLine
|
|
9
|
+
enable_method_class
|
|
10
|
+
enable_simple_cache
|
|
11
|
+
|
|
12
|
+
ARGUMENT_SEPARATOR = ','
|
|
13
|
+
MACRO_PARSER = %r{\A\s*//\#(\S+)(?:\s+(.+))?\s*?\z}.to_parser do |m|
|
|
14
|
+
::Struct.new(:name, :arguments).new(m[1],
|
|
15
|
+
m[2].to_s.split(ARGUMENT_SEPARATOR).map(&:strip))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
common_constructor :document, :line
|
|
19
|
+
|
|
20
|
+
# @return [Array<String>]
|
|
21
|
+
def result
|
|
22
|
+
if macro?
|
|
23
|
+
macro_value
|
|
24
|
+
else
|
|
25
|
+
[line]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def macro?
|
|
30
|
+
macro_name.present?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# @return [Array<String>, nil]
|
|
34
|
+
def macro_arguments
|
|
35
|
+
parsed_macro.if_present(&:arguments)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# @return [String, nil]
|
|
39
|
+
def macro_name
|
|
40
|
+
parsed_macro.if_present(&:name)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def macro_parser
|
|
44
|
+
MACRO_PARSER
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @return [Array<String>]
|
|
48
|
+
def macro_value
|
|
49
|
+
document.macro_lines(macro_name, macro_arguments)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def parsed_macro_uncached
|
|
55
|
+
macro_parser.parse(line)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'asciidoctor'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacAsciidoctorBase0
|
|
7
|
+
module Instances
|
|
8
|
+
class Build
|
|
9
|
+
class Document
|
|
10
|
+
require_sub __FILE__, include_modules: true
|
|
11
|
+
|
|
12
|
+
enable_simple_cache
|
|
13
|
+
enable_speaker
|
|
14
|
+
common_constructor :build, :parent_document, :source_document
|
|
15
|
+
delegate :subpath, to: :source_document
|
|
16
|
+
|
|
17
|
+
# @param other [Avm::EacAsciidoctorBase0::Instances::Build::Document]
|
|
18
|
+
# @return [String]
|
|
19
|
+
def href_to_other_body(other)
|
|
20
|
+
other.body_target_path.relative_path_from(body_target_path.dirname)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# @return [Pathname]
|
|
24
|
+
def convert_base_dir
|
|
25
|
+
source_document.root_path
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @param name [String]
|
|
29
|
+
# @return [Array<String>]
|
|
30
|
+
def macro_lines(name, arguments = [])
|
|
31
|
+
::Avm::EacAsciidoctorBase0::Instances::Macros.const_get(name.to_s.camelize)
|
|
32
|
+
.new(self, arguments).result
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def perform
|
|
36
|
+
perform_self
|
|
37
|
+
perform_children
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def perform_self
|
|
41
|
+
infov 'Building', source_document.subpath
|
|
42
|
+
body_target_write
|
|
43
|
+
copy_media_directory
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
class Build
|
|
7
|
+
class Theme
|
|
8
|
+
TARGET_SUBPATH = '_theme'
|
|
9
|
+
|
|
10
|
+
common_constructor :build
|
|
11
|
+
|
|
12
|
+
# @return [void]
|
|
13
|
+
def perform
|
|
14
|
+
copy_theme_to_target
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @return [Pathname]
|
|
18
|
+
def target_path
|
|
19
|
+
build.target_directory.join(TARGET_SUBPATH)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @return [Pathname]
|
|
23
|
+
def target_stylesheet_path
|
|
24
|
+
target_path
|
|
25
|
+
.join(Avm::EacAsciidoctorBase0::Sources::Base::Theme::THEME_STYLESHEET_BASENAME)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
protected
|
|
29
|
+
|
|
30
|
+
# @return [void]
|
|
31
|
+
def copy_theme_to_target
|
|
32
|
+
build.source.copy_theme_directory_to(target_path)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
class Build
|
|
7
|
+
include ::Avm::EacAsciidoctorBase0::DocumentsOwner
|
|
8
|
+
|
|
9
|
+
enable_speaker
|
|
10
|
+
enable_simple_cache
|
|
11
|
+
enable_listable
|
|
12
|
+
lists.add_symbol :option, :target_directory
|
|
13
|
+
common_constructor :instance, :options, default: [{}] do
|
|
14
|
+
self.options = self.class.lists.option.hash_keys_validate!(options.symbolize_keys)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
SOURCE_EXTNAMES = %w[.adoc .asc].freeze
|
|
18
|
+
|
|
19
|
+
def perform
|
|
20
|
+
infov 'Documents to build', root_document.tree_documents_count
|
|
21
|
+
target_directory.clear
|
|
22
|
+
theme.perform
|
|
23
|
+
root_document.perform
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @return [Pathname]
|
|
27
|
+
def default_target_directory
|
|
28
|
+
source.path.join('build/site')
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [EacRubyUtils::Fs::ClearableDirectory]
|
|
32
|
+
def pre_processed_directory
|
|
33
|
+
::EacRubyUtils::Fs::ClearableDirectory.new(source.path.join('build/pre_processed'))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def root_document
|
|
37
|
+
::Avm::EacAsciidoctorBase0::Instances::Build::Document
|
|
38
|
+
.new(self, nil, source.root_document)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [Avm::EacAsciidoctorBase0::Sources::Base]
|
|
42
|
+
def source
|
|
43
|
+
instance.application.local_source
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def target_directory
|
|
47
|
+
::EacRubyUtils::Fs::ClearableDirectory.new(
|
|
48
|
+
options[OPTION_TARGET_DIRECTORY] || default_target_directory
|
|
49
|
+
)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
# @return [Avm::EacAsciidoctorBase0::Instances::Build::Theme]
|
|
55
|
+
def theme_uncached
|
|
56
|
+
::Avm::EacAsciidoctorBase0::Instances::Build::Theme.new(self)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
class Deploy < ::Avm::EacWebappBase0::Instances::Deploy
|
|
7
|
+
def build_content
|
|
8
|
+
::Avm::EacAsciidoctorBase0::Instances::Build.new(
|
|
9
|
+
instance,
|
|
10
|
+
::Avm::EacAsciidoctorBase0::Instances::Build::OPTION_TARGET_DIRECTORY => build_dir
|
|
11
|
+
).perform
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def project_uncached
|
|
17
|
+
::Avm::EacAsciidoctorBase0::Sources::Base.new(
|
|
18
|
+
instance.source_instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH)
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Macros
|
|
7
|
+
class Base
|
|
8
|
+
enable_abstract_methods
|
|
9
|
+
common_constructor :document, :arguments, default: [[]]
|
|
10
|
+
|
|
11
|
+
# @return [Array<String>]
|
|
12
|
+
def result
|
|
13
|
+
raise_abstract_method __method__
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Macros
|
|
7
|
+
class Breadcrumbs < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
|
8
|
+
NODE_SEPARATOR = ' » '
|
|
9
|
+
ROOT_DOCUMENT_TITLE = 'Home'
|
|
10
|
+
|
|
11
|
+
# @return [Array<String>]
|
|
12
|
+
def result
|
|
13
|
+
trail_nodes.join(NODE_SEPARATOR)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def trail_nodes
|
|
17
|
+
r = []
|
|
18
|
+
current = document
|
|
19
|
+
while current.present?
|
|
20
|
+
r.unshift(Node.new(document, current))
|
|
21
|
+
current = current.parent_document
|
|
22
|
+
end
|
|
23
|
+
r
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Node
|
|
27
|
+
common_constructor :current, :document
|
|
28
|
+
|
|
29
|
+
# @return [String]
|
|
30
|
+
def address
|
|
31
|
+
current.href_to_other_body(document)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [String]
|
|
35
|
+
def title
|
|
36
|
+
if document.parent_document.present?
|
|
37
|
+
document.source_document.title
|
|
38
|
+
else
|
|
39
|
+
ROOT_DOCUMENT_TITLE
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @return [String]
|
|
44
|
+
def to_s
|
|
45
|
+
"link:#{address}[#{title}]"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Macros
|
|
7
|
+
class ChildDocs < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
|
8
|
+
class DocumentBuilder
|
|
9
|
+
common_constructor :child_docs, :document, :depth, default: [0]
|
|
10
|
+
compare_by :title, :address
|
|
11
|
+
|
|
12
|
+
# @return [Pathname]
|
|
13
|
+
def address
|
|
14
|
+
root_document.href_to_other_body(document)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @return [Array] Document's children mapped to document builders.
|
|
18
|
+
def children
|
|
19
|
+
document.children.map { |c| self.class.new(child_docs, c, depth + 1) }.sort
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def lines_for_children?
|
|
24
|
+
child_docs.maximum_depth.negative? || child_docs.maximum_depth <= depth
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @return [String]
|
|
28
|
+
def link
|
|
29
|
+
"link:#{address}[#{title}]"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @return [Array<String>]
|
|
33
|
+
def result
|
|
34
|
+
children.flat_map do |child|
|
|
35
|
+
r = [child.self_line]
|
|
36
|
+
r += child.result if lines_for_children?
|
|
37
|
+
r
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [Avm::EacAsciidoctorBase0::Instances::Build::Document]
|
|
42
|
+
def root_document
|
|
43
|
+
child_docs.document
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [String]
|
|
47
|
+
def self_line
|
|
48
|
+
"#{'*' * depth} #{link}"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @return [String]
|
|
52
|
+
def title
|
|
53
|
+
document.source_document.title
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Macros
|
|
7
|
+
class ChildDocs < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
|
8
|
+
DEFAULT_MAXIMUM_DEPTH = -1
|
|
9
|
+
|
|
10
|
+
# @return [Array<String>]
|
|
11
|
+
def result
|
|
12
|
+
document_builder_class.new(self, document).result
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @return [Integer]
|
|
16
|
+
def maximum_depth
|
|
17
|
+
arguments[0].if_present(DEFAULT_MAXIMUM_DEPTH, &:to_i)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
# @return [Class]
|
|
23
|
+
def document_builder_class
|
|
24
|
+
::Avm::EacAsciidoctorBase0::Instances::Macros::ChildDocs::DocumentBuilder
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Macros
|
|
7
|
+
class DefaultBody < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
|
8
|
+
RESULT_LINES = ['== Índice', '', '//#child_docs'].freeze
|
|
9
|
+
|
|
10
|
+
# @return [Array<String>]
|
|
11
|
+
def result
|
|
12
|
+
RESULT_LINES
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Macros
|
|
7
|
+
class Todo < ::Avm::EacAsciidoctorBase0::Instances::Macros::Base
|
|
8
|
+
RESULT_LINES = ['[.todo]#TODO#'].freeze
|
|
9
|
+
|
|
10
|
+
# @return [Array<String>]
|
|
11
|
+
def result
|
|
12
|
+
RESULT_LINES
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Logging
|
|
6
|
+
class Catcher < ::SimpleDelegator
|
|
7
|
+
CATCH_LEVEL = ::Logger::ERROR
|
|
8
|
+
LOGGER_METHODS = %i[unknown fatal error warn info debug].freeze
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
# @param [String]
|
|
12
|
+
# @return [Integer]
|
|
13
|
+
def level_by_method(method_name)
|
|
14
|
+
::Logger.const_get(method_name.to_s.underscore.upcase)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @return [Hash<Symbol, Integer]
|
|
18
|
+
def methods_levels
|
|
19
|
+
LOGGER_METHODS.to_h { |method_name| [method_name, level_by_method(method_name)] }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def on
|
|
23
|
+
real_logger = ::Asciidoctor::LoggerManager.logger
|
|
24
|
+
begin
|
|
25
|
+
::Asciidoctor::LoggerManager.logger = new(real_logger)
|
|
26
|
+
yield
|
|
27
|
+
ensure
|
|
28
|
+
::Asciidoctor::LoggerManager.logger = real_logger
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
methods_levels.each do |method_name, level|
|
|
34
|
+
define_method method_name do |*args, &block|
|
|
35
|
+
__getobj__.send(method_name, *args, &block)
|
|
36
|
+
return unless level >= CATCH_LEVEL
|
|
37
|
+
|
|
38
|
+
raise ::Avm::EacAsciidoctorBase0::Logging::Error.new(level, *args, &block)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module SourceGenerators
|
|
6
|
+
class Base < ::Avm::SourceGenerators::Base
|
|
7
|
+
OPTIONS = {}.freeze
|
|
8
|
+
|
|
9
|
+
enable_speaker
|
|
10
|
+
enable_simple_cache
|
|
11
|
+
|
|
12
|
+
class << self
|
|
13
|
+
def option_list
|
|
14
|
+
OPTIONS.inject(super) { |a, e| a.option(*e) }
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def perform
|
|
19
|
+
template.apply(self, target_path)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'asciidoctor'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacAsciidoctorBase0
|
|
7
|
+
module Sources
|
|
8
|
+
class Base
|
|
9
|
+
class InstanceToBuild
|
|
10
|
+
AUTHOR_EMAIL = 'author@local.net'
|
|
11
|
+
AUTHOR_NAME = 'Local Author'
|
|
12
|
+
AUTHOR_NAME_INITIALS = 'L.A.'
|
|
13
|
+
|
|
14
|
+
common_constructor :source
|
|
15
|
+
|
|
16
|
+
# @return [Struct]
|
|
17
|
+
def application
|
|
18
|
+
::Struct.new(:local_source).new(source)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @return [String]
|
|
22
|
+
def author_email
|
|
23
|
+
AUTHOR_EMAIL
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @return [String]
|
|
27
|
+
def author_name
|
|
28
|
+
AUTHOR_NAME
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [String]
|
|
32
|
+
def author_name_initials
|
|
33
|
+
AUTHOR_NAME_INITIALS
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @return [String]
|
|
37
|
+
def web_url
|
|
38
|
+
"file://#{source.path.expand_path.join('build', 'index.html')}"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'asciidoctor'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacAsciidoctorBase0
|
|
7
|
+
module Sources
|
|
8
|
+
class Base
|
|
9
|
+
module Theme
|
|
10
|
+
CONFIGURATION_THEME_KEY = 'theme'
|
|
11
|
+
DEFAULT_THEME_DIRECTORY_SUBPATH = 'theme'
|
|
12
|
+
THEME_STYLESHEET_BASENAME = 'main.css'
|
|
13
|
+
|
|
14
|
+
# @param target_directory_path [Pathname]
|
|
15
|
+
def copy_theme_directory_to(target_directory_path)
|
|
16
|
+
target_directory_path.parent.mkpath
|
|
17
|
+
::FileUtils.copy_entry(theme_directory, target_directory_path)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# @return [Pathname]
|
|
21
|
+
def default_theme_directory
|
|
22
|
+
path.join(DEFAULT_THEME_DIRECTORY_SUBPATH)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @return [Pathname]
|
|
26
|
+
def theme_directory
|
|
27
|
+
theme_directory_by_configuration || default_theme_directory
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @return [Pathname]
|
|
31
|
+
def theme_directory_by_configuration
|
|
32
|
+
configuration_entry(CONFIGURATION_THEME_KEY).value.if_present do |v|
|
|
33
|
+
v.to_pathname.expand_path(path)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @return [Pathname]
|
|
38
|
+
def theme_stylesheet_path
|
|
39
|
+
theme_directory.join(THEME_STYLESHEET_BASENAME)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacAsciidoctorBase0
|
|
5
|
+
module Sources
|
|
6
|
+
class Base < ::Avm::EacWebappBase0::Sources::Base
|
|
7
|
+
require_sub __FILE__, include_modules: true
|
|
8
|
+
include ::Avm::EacAsciidoctorBase0::DocumentsOwner
|
|
9
|
+
|
|
10
|
+
CONTENT_DIRECTORY_SUBPATH = ::Pathname.new('content')
|
|
11
|
+
CONTENT_DOCUMENT_BASENAME = ::Pathname.new('body.adoc')
|
|
12
|
+
MAIN_FILE_SUBPATH = CONTENT_DIRECTORY_SUBPATH.join(
|
|
13
|
+
::Avm::EacAsciidoctorBase0::Sources::Document::TITLE_BASENAME
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
# @param options [Hash]
|
|
17
|
+
# @return [Avm::EacAsciidoctorBase0::Instances::Build]
|
|
18
|
+
def build(options = {})
|
|
19
|
+
::Avm::EacAsciidoctorBase0::Instances::Build.new(instance_to_build, options)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def content_directory
|
|
23
|
+
path.join(CONTENT_DIRECTORY_SUBPATH)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @return [Avm::EacAsciidoctorBase0::Sources::Base::InstanceToBuild]
|
|
27
|
+
def instance_to_build
|
|
28
|
+
::Avm::EacAsciidoctorBase0::Sources::Base::InstanceToBuild.new(self)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [Avm::EacAsciidoctorBase0::Sources::Document
|
|
32
|
+
def root_document
|
|
33
|
+
::Avm::EacAsciidoctorBase0::Sources::Document.new(self, nil, nil)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def valid?
|
|
37
|
+
path.join(MAIN_FILE_SUBPATH).file?
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|