class AnsibleDocGenerator::DocGenerator::Interpolator::FileExtractor

Attributes

input[R]
role_path[R]

Public Class Methods

new(input, role_path) click to toggle source
# File lib/ansible_doc_generator/doc_generator/interpolator/file_extractor.rb, line 9
def initialize input, role_path
  @input = input
  @role_path = role_path
end

Public Instance Methods

call() click to toggle source
# File lib/ansible_doc_generator/doc_generator/interpolator/file_extractor.rb, line 14
def call
  output = input

  input.scan(/f\{[^\}]+\}/).each do |interpolation|
    file_content = get_file_content(interpolation)
    output.gsub!(interpolation, file_content)
  end

  output
end

Private Instance Methods

get_file_content(interpolation) click to toggle source
# File lib/ansible_doc_generator/doc_generator/interpolator/file_extractor.rb, line 27
def get_file_content interpolation
  file_name = interpolation.match(/f\{(\S*)\}/)[1]
  file_path = get_file_path_from(file_name)

  return interpolation if file_path.nil?
  File.read(file_path)
end
get_file_path_from(file_name) click to toggle source
# File lib/ansible_doc_generator/doc_generator/interpolator/file_extractor.rb, line 35
def get_file_path_from file_name
  %w(files templates)
    .map{|folder_name| File.join(main_folder, folder_name, file_name) }
    .find{|file_path| File.exists?(file_path) }
end
main_folder() click to toggle source
# File lib/ansible_doc_generator/doc_generator/interpolator/file_extractor.rb, line 41
def main_folder
  @main_folder ||= File.expand_path("..", File.dirname(role_path))
end