Class: Puppet::Util::Reference Private

Inherits:
Object
  • Object
show all
Extended by:
InstanceLoader
Includes:
Puppet::Util, Docs
Defined in:
lib/puppet/util/reference.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Manage Reference Documentation.

Constant Summary

Constants included from Puppet::Util

ALNUM, ALPHA, AbsolutePathPosix, AbsolutePathWindows, DEFAULT_POSIX_MODE, DEFAULT_WINDOWS_MODE, ESCAPED, HEX, HttpProxy, PUPPET_STACK_INSERTION_FRAME, RESERVED, RFC_3986_URI_REGEX, UNRESERVED, UNSAFE

Constants included from POSIX

POSIX::LOCALE_ENV_VARS, POSIX::USER_ENV_VARS

Constants included from SymbolicFileMode

SymbolicFileMode::SetGIDBit, SymbolicFileMode::SetUIDBit, SymbolicFileMode::StickyBit, SymbolicFileMode::SymbolicMode, SymbolicFileMode::SymbolicSpecialToBit

Constants included from Docs

Docs::HEADER_LEVELS

Instance Attribute Summary collapse

Attributes included from Docs

#nodoc

Class Method Summary collapse

Instance Method Summary collapse

Methods included from InstanceLoader

instance_hash, instance_load, instance_loader, instance_loading?, loaded_instance, loaded_instances

Methods included from Puppet::Util

absolute_path?, benchmark, chuser, clear_environment, create_erb, default_env, deterministic_rand, deterministic_rand_int, exit_on_fail, format_backtrace_array, format_puppetstack_frame, get_env, get_environment, logmethods, merge_environment, path_to_uri, pretty_backtrace, replace_file, resolve_stackframe, rfc2396_escape, safe_posix_fork, set_env, skip_external_facts, symbolizehash, thinmark, uri_encode, uri_query_encode, uri_to_path, uri_unescape, which, withenv, withumask

Methods included from POSIX

#get_posix_field, #gid, groups_of, #idfield, #methodbyid, #methodbyname, #search_posix_field, #uid

Methods included from SymbolicFileMode

#display_mode, #normalize_symbolic_mode, #symbolic_mode_to_int, #valid_symbolic_mode?

Methods included from Docs

#desc, #dochook, #doctable, #markdown_definitionlist, #markdown_header, #nodoc?, #pad, scrub

Constructor Details

#initialize(name, title: nil, depth: nil, dynamic: nil, doc: nil, &block) ⇒ Reference

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Reference.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/puppet/util/reference.rb', line 80

def initialize(name, title: nil, depth: nil, dynamic: nil, doc: nil, &block)
  @name = name
  @title = title
  @depth = depth
  @dynamic = dynamic
  @doc = doc

  meta_def(:generate, &block)

  # Now handle the defaults
  @title ||= _("%{name} Reference") % { name: @name.to_s.capitalize }
  @page ||= @title.gsub(/\s+/, '')
  @depth ||= 2
  @header ||= ""
end

Instance Attribute Details

#depthObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



65
66
67
# File 'lib/puppet/util/reference.rb', line 65

def depth
  @depth
end

#docObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



68
69
70
71
72
73
74
# File 'lib/puppet/util/reference.rb', line 68

def doc
  if defined?(@doc)
    return "#{@name} - #{@doc}"
  else
    return @title
  end
end

#dynamicObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



65
66
67
# File 'lib/puppet/util/reference.rb', line 65

def dynamic
  @dynamic
end

#headerObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



65
66
67
# File 'lib/puppet/util/reference.rb', line 65

def header
  @header
end

#pageObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



65
66
67
# File 'lib/puppet/util/reference.rb', line 65

def page
  @page
end

#titleObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



65
66
67
# File 'lib/puppet/util/reference.rb', line 65

def title
  @title
end

Class Method Details

.modesObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



14
15
16
# File 'lib/puppet/util/reference.rb', line 14

def self.modes
  %w{pdf text}
end

.newreference(name, options = {}, &block) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



18
19
20
21
22
23
# File 'lib/puppet/util/reference.rb', line 18

def self.newreference(name, options = {}, &block)
  ref = self.new(name, **options, &block)
  instance_hash(:reference)[name.intern] = ref

  ref
end

.page(*sections) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



25
26
27
28
29
30
31
32
# File 'lib/puppet/util/reference.rb', line 25

def self.page(*sections)
  depth = 4
  # Use the minimum depth
  sections.each do |name|
    section = reference(name) or raise _("Could not find section %{name}") % { name: name }
    depth = section.depth if section.depth < depth
  end
end

.pdf(text) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/puppet/util/reference.rb', line 34

def self.pdf(text)
  puts _("creating pdf")
  rst2latex = which('rst2latex') || which('rst2latex.py') ||
    raise(_("Could not find rst2latex"))

  cmd = %{#{rst2latex} /tmp/puppetdoc.txt > /tmp/puppetdoc.tex}
  Puppet::Util.replace_file("/tmp/puppetdoc.txt") {|f| f.puts text }
  # There used to be an attempt to use secure_open / replace_file to secure
  # the target, too, but that did nothing: the race was still here.  We can
  # get exactly the same benefit from running this effort:
  Puppet::FileSystem.unlink('/tmp/puppetdoc.tex') rescue nil
  output = %x{#{cmd}}
  unless $CHILD_STATUS == 0
    $stderr.puts _("rst2latex failed")
    $stderr.puts output
    exit(1)
  end
  $stderr.puts output

  # Now convert to pdf
  Dir.chdir("/tmp") do
    %x{texi2pdf puppetdoc.tex >/dev/null 2>/dev/null}
  end

end

.references(environment) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



60
61
62
63
# File 'lib/puppet/util/reference.rb', line 60

def self.references(environment)
  instance_loader(:reference).loadall(environment)
  loaded_instances(:reference).sort_by(&:to_s)
end

Instance Method Details

#dynamic?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


76
77
78
# File 'lib/puppet/util/reference.rb', line 76

def dynamic?
  self.dynamic
end

#indent(text, tab) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Indent every line in the chunk except those which begin with ‘..’.



97
98
99
# File 'lib/puppet/util/reference.rb', line 97

def indent(text, tab)
  text.gsub(/(^|\A)/, tab).gsub(/^ +\.\./, "..")
end

#option(name, value) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



101
102
103
# File 'lib/puppet/util/reference.rb', line 101

def option(name, value)
  ":#{name.to_s.capitalize}: #{value}\n"
end

#textObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



105
106
107
# File 'lib/puppet/util/reference.rb', line 105

def text
  puts output
end

#to_markdown(withcontents = true) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



109
110
111
112
113
114
115
116
117
118
119
# File 'lib/puppet/util/reference.rb', line 109

def to_markdown(withcontents = true)
  # First the header
  text = markdown_header(@title, 1)
  text << _("\n\n**This page is autogenerated; any changes will get overwritten**\n\n")

  text << @header

  text << generate

  text
end