Class: Puppet::Util::FileParsing::FileRecord

Inherits:
Object
  • Object
show all
Includes:
Puppet::Util
Defined in:
lib/puppet/util/fileparsing.rb

Constant Summary collapse

INVALID_FIELDS =
[:record_type, :target, :on_disk]

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

Instance Attribute Summary collapse

Instance Method Summary collapse

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?

Constructor Details

#initialize(type, absent: nil, block_eval: nil, fields: nil, joiner: nil, match: nil, optional: nil, post_parse: nil, pre_gen: nil, rollup: nil, rts: nil, separator: nil, to_line: nil, &block) ⇒ FileRecord

Returns a new instance of FileRecord.

Raises:

  • (ArgumentError)


51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/puppet/util/fileparsing.rb', line 51

def initialize(type,
               absent: nil,
               block_eval: nil,
               fields: nil,
               joiner: nil,
               match: nil,
               optional: nil,
               post_parse: nil,
               pre_gen: nil,
               rollup: nil,
               rts: nil,
               separator: nil,
               to_line: nil,
               &block)
  @type = type.intern
  raise ArgumentError, _("Invalid record type %{record_type}") % { record_type: @type } unless [:record, :text].include?(@type)

  @absent = absent
  @block_eval = block_eval
  @joiner = joiner
  @match = match
  @rollup = rollup if rollup
  @rts = rts
  @separator = separator

  self.fields = fields if fields
  self.optional = optional if optional
  self.post_parse = post_parse if post_parse
  self.pre_gen = pre_gen if pre_gen
  self.to_line = to_line if to_line

  if self.type == :record
    # Now set defaults.
    self.absent ||= ""
    self.separator ||= /\s+/
    self.joiner ||= " "
    self.optional ||= []
    @rollup = true unless defined?(@rollup)
  end

  if block_given?
    @block_eval ||= :process

    # Allow the developer to specify that a block should be instance-eval'ed.
    if @block_eval == :instance
      instance_eval(&block)
    else
      meta_def(@block_eval, &block)
    end
  end
end

Instance Attribute Details

#absentObject

Returns the value of attribute absent.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def absent
  @absent
end

#block_evalObject

Returns the value of attribute block_eval.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def block_eval
  @block_eval
end

#fieldsObject

Returns the value of attribute fields.



37
38
39
# File 'lib/puppet/util/fileparsing.rb', line 37

def fields
  @fields
end

#joinerObject

Returns the value of attribute joiner.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def joiner
  @joiner
end

#matchObject

Returns the value of attribute match.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def match
  @match
end

#nameObject

Returns the value of attribute name.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def name
  @name
end

#optionalObject

Returns the value of attribute optional.



37
38
39
# File 'lib/puppet/util/fileparsing.rb', line 37

def optional
  @optional
end

#rollupObject

Returns the value of attribute rollup.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def rollup
  @rollup
end

#rtsObject

Returns the value of attribute rts.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def rts
  @rts
end

#separatorObject

Returns the value of attribute separator.



35
36
37
# File 'lib/puppet/util/fileparsing.rb', line 35

def separator
  @separator
end

#typeObject (readonly)

Returns the value of attribute type.



37
38
39
# File 'lib/puppet/util/fileparsing.rb', line 37

def type
  @type
end

Instance Method Details

#join(details) ⇒ Object

Convert a record into a line by joining the fields together appropriately. This is pulled into a separate method so it can be called by the hooks.



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/puppet/util/fileparsing.rb', line 105

def join(details)
  joinchar = self.joiner

  fields.filter_map { |field|
    # If the field is marked absent, use the appropriate replacement
    if details[field] == :absent or details[field] == [:absent] or details[field].nil?
      if self.optional.include?(field)
        self.absent
      else
        raise ArgumentError, _("Field '%{field}' is required") % { field: field }
      end
    else
      details[field].to_s
    end
  }.join(joinchar)
end

#post_parse=(block) ⇒ Object

Create a hook that modifies the hash resulting from parsing.



128
129
130
# File 'lib/puppet/util/fileparsing.rb', line 128

def post_parse=(block)
  meta_def(:post_parse, &block)
end

#pre_gen=(block) ⇒ Object

Create a hook that modifies the hash just prior to generation.



133
134
135
# File 'lib/puppet/util/fileparsing.rb', line 133

def pre_gen=(block)
  meta_def(:pre_gen, &block)
end

#text?Boolean

Are we a text type?

Returns:

  • (Boolean)


138
139
140
# File 'lib/puppet/util/fileparsing.rb', line 138

def text?
  type == :text
end

#to_line=(block) ⇒ Object



142
143
144
# File 'lib/puppet/util/fileparsing.rb', line 142

def to_line=(block)
  meta_def(:to_line, &block)
end