eac_tools 0.60.3 → 0.61.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45d93cbf1d3d3ff2f5b76c8fffeae344c0025b822fcfd9fac2a2f4aabffd92cf
4
- data.tar.gz: c1a141d90c59c987c7f2f08a1aed69561782042a04ff42cf238b5c78baa996dc
3
+ metadata.gz: 88b13d61ea11ac15cc3677a1cf5ec17f1381f8f87ab25074f8cf7be2804e0679
4
+ data.tar.gz: 4432b02f679cabc7aa8ac455599e2bdfa653a02c973a05f02315a7992b50665e
5
5
  SHA512:
6
- metadata.gz: 201e612bf01ed05f4c1e2f7478591cb6aecfbdc526af61931cc05aebaf916e4ed00592ffb7d66e86d90e48074d264f96d18b91d17f4cc49aad5db6450a9ec3a6
7
- data.tar.gz: 1372d4f44f77b4ea330e6233509faee81f6ac75e0316f6e18517fbafebe270c475826272edc28b62663667cb13ac0edb4ad5c220290a9f5650974e31224174ea
6
+ metadata.gz: 0e4a6b279e9e1ee080a4fdf0f390187330bf84b36b022816cb807fa2274bf338c7c894587bd2938f9d71b72b45da42d2df6de2609ef9c783a42a4d063642685a
7
+ data.tar.gz: 2731fdeb08a1110cabba28cab3ccc98a60d8530e5d8a16c08a91459524952c98cccf7550cbcb6f21ccfcbdff8917c083d4911418ad91d6dc843e6e9f02fff58f
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.60.3)
4
+ eac_tools (0.61.0)
5
5
  avm (~> 0.67, >= 0.67.1)
6
- avm-eac_asciidoctor_base0 (~> 0.18, >= 0.18.1)
6
+ avm-eac_asciidoctor_base0 (~> 0.19)
7
7
  avm-eac_generic_base0 (~> 0.12)
8
8
  avm-eac_latex_base0 (~> 0.3, >= 0.3.1)
9
9
  avm-eac_php_base0 (~> 0.4, >= 0.4.2)
@@ -34,7 +34,7 @@ PATH
34
34
  PATH
35
35
  remote: sub/avm-eac_asciidoctor_base0
36
36
  specs:
37
- avm-eac_asciidoctor_base0 (0.18.1)
37
+ avm-eac_asciidoctor_base0 (0.19.0)
38
38
  asciidoctor (~> 2.0, >= 2.0.18)
39
39
  avm-eac_webapp_base0 (~> 0.15)
40
40
  eac_ruby_utils (~> 0.112)
@@ -287,7 +287,7 @@ GEM
287
287
  parslet (~> 2.0)
288
288
  curb (0.9.11)
289
289
  diff-lcs (1.5.0)
290
- eac_envs-http (0.3.0)
290
+ eac_envs-http (0.3.1)
291
291
  eac_fs (~> 0.16)
292
292
  eac_ruby_utils (~> 0.112)
293
293
  faraday (~> 2.7, >= 2.7.4)
@@ -295,8 +295,8 @@ GEM
295
295
  faraday-gzip (~> 0.1)
296
296
  faraday-multipart (~> 1.0, >= 1.0.4)
297
297
  faraday-retry (~> 2.1)
298
- eac_rest (0.7.3)
299
- eac_envs-http (~> 0.2)
298
+ eac_rest (0.8.0)
299
+ eac_envs-http (~> 0.3, >= 0.3.1)
300
300
  eac_fs (~> 0.16)
301
301
  eac_ruby_utils (~> 0.112)
302
302
  eac_ruby_gem_support (0.5.1)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.60.3'
4
+ VERSION = '0.61.0'
5
5
  end
@@ -45,7 +45,7 @@ module Avm
45
45
 
46
46
  # @return [String]
47
47
  def breadcrumbs_lines
48
- ['[.normal]', document.breadcrumbs_macro_value]
48
+ ['[.normal]', document.macro_lines(:breadcrumbs)]
49
49
  end
50
50
 
51
51
  # @return [Array<String>]
@@ -11,8 +11,10 @@ module Avm
11
11
  enable_method_class
12
12
  enable_simple_cache
13
13
 
14
- MACRO_PARSER = %r{\A\s*//\#(\S+.*)}.to_parser do |m|
15
- m[1]
14
+ ARGUMENT_SEPARATOR = ','
15
+ MACRO_PARSER = %r{\A\s*//\#(\S+)(?:\s+(.+))?\s*?\z}.to_parser do |m|
16
+ ::Struct.new(:name, :arguments).new(m[1],
17
+ m[2].to_s.split(ARGUMENT_SEPARATOR).map(&:strip))
16
18
  end
17
19
 
18
20
  common_constructor :document, :line
@@ -30,18 +32,28 @@ module Avm
30
32
  macro_name.present?
31
33
  end
32
34
 
35
+ # @return [Array<String>, nil]
36
+ def macro_arguments
37
+ parsed_macro.if_present(&:arguments)
38
+ end
39
+
40
+ # @return [String, nil]
41
+ def macro_name
42
+ parsed_macro.if_present(&:name)
43
+ end
44
+
33
45
  def macro_parser
34
46
  MACRO_PARSER
35
47
  end
36
48
 
37
49
  # @return [Array<String>]
38
50
  def macro_value
39
- document.send("#{macro_name}_macro_value")
51
+ document.macro_lines(macro_name, macro_arguments)
40
52
  end
41
53
 
42
54
  private
43
55
 
44
- def macro_name_uncached
56
+ def parsed_macro_uncached
45
57
  macro_parser.parse(line)
46
58
  end
47
59
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'asciidoctor'
4
+ require 'avm/eac_asciidoctor_base0/instances/macros'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
6
7
  module Avm
@@ -22,6 +23,15 @@ module Avm
22
23
  other.body_target_path.relative_path_from(body_target_path.dirname)
23
24
  end
24
25
 
26
+ # @return [Enumerable<String>]
27
+ def body_source_lines
28
+ if source_document.body_path.file?
29
+ source_document.body_path.read.each_line
30
+ else
31
+ default_body_source_lines
32
+ end
33
+ end
34
+
25
35
  # Absolute path to the output of Asciidoctor's source file.
26
36
  #
27
37
  # @return [Pathname]
@@ -56,6 +66,18 @@ module Avm
56
66
  source_document.root_path
57
67
  end
58
68
 
69
+ # @return [Enumerable<String>]
70
+ def default_body_source_lines
71
+ macro_lines(:default_body)
72
+ end
73
+
74
+ # @param name [String]
75
+ # @return [Array<String>]
76
+ def macro_lines(name, arguments = [])
77
+ ::Avm::EacAsciidoctorBase0::Instances::Macros.const_get(name.to_s.camelize)
78
+ .new(self, arguments).result
79
+ end
80
+
59
81
  def perform
60
82
  perform_self
61
83
  perform_children
@@ -74,7 +96,7 @@ module Avm
74
96
  # @return [String]
75
97
  def pre_processed_body_source_content
76
98
  (
77
- header_lines + [''] + source_document.body_path.read.each_line
99
+ header_lines + [''] + body_source_lines
78
100
  .flat_map { |line| pre_process_line(line.rstrip) }
79
101
  ).map { |line| "#{line.rstrip}\n" }.join
80
102
  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
@@ -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
@@ -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
@@ -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,13 @@
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
+ require_sub __FILE__
10
+ end
11
+ end
12
+ end
13
+ end
@@ -8,9 +8,13 @@ module Avm
8
8
  module EacAsciidoctorBase0
9
9
  module Sources
10
10
  class Base < ::Avm::EacWebappBase0::Sources::Base
11
+ require_sub __FILE__
12
+
11
13
  CONTENT_DIRECTORY_SUBPATH = ::Pathname.new('content')
12
14
  CONTENT_DOCUMENT_BASENAME = ::Pathname.new('body.adoc')
13
- MAIN_FILE_SUBPATH = CONTENT_DIRECTORY_SUBPATH.join(CONTENT_DOCUMENT_BASENAME)
15
+ MAIN_FILE_SUBPATH = CONTENT_DIRECTORY_SUBPATH.join(
16
+ ::Avm::EacAsciidoctorBase0::Sources::Base::Document::TITLE_BASENAME
17
+ )
14
18
 
15
19
  require_sub __FILE__, include_modules: true
16
20
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacAsciidoctorBase0
5
- VERSION = '0.18.1'
5
+ VERSION = '0.19.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.60.3
4
+ version: 0.61.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-30 00:00:00.000000000 Z
11
+ date: 2023-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -36,20 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.18'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 0.18.1
39
+ version: '0.19'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
44
  - - "~>"
48
45
  - !ruby/object:Gem::Version
49
- version: '0.18'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.18.1
46
+ version: '0.19'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: avm-eac_generic_base0
55
49
  requirement: !ruby/object:Gem::Requirement
@@ -412,12 +406,16 @@ files:
412
406
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb
413
407
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build.rb
414
408
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb
415
- - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/breadcrumbs_macro_value.rb
416
- - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/child_docs_macro_value.rb
417
409
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb
418
410
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb
419
411
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb
420
412
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb
413
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros.rb
414
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/base.rb
415
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb
416
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb
417
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs/document_builder.rb
418
+ - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb
421
419
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators.rb
422
420
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb
423
421
  - sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources.rb
@@ -1,59 +0,0 @@
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 BreadcrumbsMacroValue
11
- enable_method_class
12
- common_constructor :document
13
-
14
- NODE_SEPARATOR = ' » '
15
- ROOT_DOCUMENT_TITLE = 'Home'
16
-
17
- # @return [Array<String>]
18
- def result
19
- trail_nodes.join(NODE_SEPARATOR)
20
- end
21
-
22
- def trail_nodes
23
- r = []
24
- current = document
25
- while current.present?
26
- r.unshift(Node.new(document, current))
27
- current = current.parent_document
28
- end
29
- r
30
- end
31
-
32
- class Node
33
- common_constructor :current, :document
34
-
35
- # @return [String]
36
- def address
37
- current.href_to_other_body(document)
38
- end
39
-
40
- # @return [String]
41
- def title
42
- if document.parent_document.present?
43
- document.source_document.title
44
- else
45
- ROOT_DOCUMENT_TITLE
46
- end
47
- end
48
-
49
- # @return [String]
50
- def to_s
51
- "link:#{address}[#{title}]"
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,49 +0,0 @@
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 ChildDocsMacroValue
11
- enable_method_class
12
- common_constructor :document
13
-
14
- # @return [Array<String>]
15
- def result
16
- document.children.map { |child_doc| ChildDocLine.new(document, child_doc) }.sort
17
- .map(&:result)
18
- end
19
-
20
- class ChildDocLine
21
- common_constructor :document, :child
22
- compare_by :title, :address
23
-
24
- # @return [Pathname]
25
- def address
26
- document.href_to_other_body(child)
27
- end
28
-
29
- # @return [String]
30
- def link
31
- "link:#{address}[#{title}]"
32
- end
33
-
34
- # @return [String]
35
- def result
36
- "* #{link}"
37
- end
38
-
39
- # @return [String]
40
- def title
41
- child.source_document.title
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end