Class: Avm::EacAsciidoctorBase0::Instances::Build::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/avm/eac_asciidoctor_base0/instances/build/document.rb,
lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb,
lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb,
lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb

Defined Under Namespace

Modules: Media Classes: HeaderLines, PreProcessLine

Constant Summary collapse

BODY_TARGET_BASENAME =
'index.html'

Instance Method Summary collapse

Instance Method Details

#body_source_linesEnumerable<String>

Returns:

  • (Enumerable<String>)


27
28
29
30
31
32
33
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 27

def body_source_lines
  if source_document.body_path.file?
    source_document.body_path.read.each_line
  else
    default_body_source_lines
  end
end

#body_target_pathPathname

Absolute path to the output of Asciidoctor’s source file.

Returns:

  • (Pathname)


38
39
40
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 38

def body_target_path
  build.target_directory.join(source_document.subpath).join(BODY_TARGET_BASENAME)
end

#build_bodyAsciidoctor::Document

Returns:

  • (Asciidoctor::Document)


43
44
45
46
47
48
49
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 43

def build_body
  ::Asciidoctor.convert(
    pre_processed_body_source_content,
    base_dir: convert_base_dir,
    to_file: body_target_path.to_path, safe: :unsafe, mkdirs: true
  )
end

#child(basename) ⇒ Avm::EacAsciidoctorBase0::Instances::Build::Document?

Parameters:

  • basename (String)

Returns:



53
54
55
56
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 53

def child(basename)
  basename = basename.to_s
  children.find { |c| c.source_document.root_path.basename.to_path == basename }
end

#child!(basename) ⇒ Avm::EacAsciidoctorBase0::Instances::Build::Document

Parameters:

  • basename (String)

Returns:



60
61
62
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 60

def child!(basename)
  child(basename) || raise("Child not found with basename \"#{basename}\"")
end

#convert_base_dirPathname

Returns:

  • (Pathname)


65
66
67
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 65

def convert_base_dir
  source_document.root_path
end

#default_body_source_linesEnumerable<String>

Returns:

  • (Enumerable<String>)


70
71
72
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 70

def default_body_source_lines
  macro_lines(:default_body)
end

#href_to_other_body(other) ⇒ String

Parameters:

Returns:

  • (String)


22
23
24
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 22

def href_to_other_body(other)
  other.body_target_path.relative_path_from(body_target_path.dirname)
end

#macro_lines(name, arguments = []) ⇒ Array<String>

Parameters:

  • name (String)

Returns:

  • (Array<String>)


76
77
78
79
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 76

def macro_lines(name, arguments = [])
  ::Avm::EacAsciidoctorBase0::Instances::Macros.const_get(name.to_s.camelize)
                                               .new(self, arguments).result
end

#performObject



81
82
83
84
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 81

def perform
  perform_self
  perform_children
end

#perform_childrenObject



92
93
94
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 92

def perform_children
  children.each(&:perform)
end

#perform_selfObject



86
87
88
89
90
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 86

def perform_self
  infov 'Building', source_document.subpath
  build_body
  copy_media_directory
end

#pre_processed_body_source_contentString

Returns:

  • (String)


97
98
99
100
101
102
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 97

def pre_processed_body_source_content
  (
    header_lines + [''] + body_source_lines
    .flat_map { |line| pre_process_line(line.rstrip) }
  ).map { |line| "#{line.rstrip}\n" }.join
end

#tree_documents_countObject



104
105
106
# File 'lib/avm/eac_asciidoctor_base0/instances/build/document.rb', line 104

def tree_documents_count
  children.inject(1) { |a, e| a + e.tree_documents_count }
end