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

AbsolutePathPosix, AbsolutePathWindows, DEFAULT_POSIX_MODE, DEFAULT_WINDOWS_MODE, RFC_3986_URI_REGEX

Constants included from SymbolicFileMode

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

Constants included from POSIX

POSIX::LOCALE_ENV_VARS, POSIX::USER_ENV_VARS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Puppet::Util

absolute_path?, benchmark, chuser, clear_environment, default_env, deterministic_rand, deterministic_rand_int, exit_on_fail, get_env, get_environment, logmethods, merge_environment, path_to_uri, pretty_backtrace, replace_file, safe_posix_fork, set_env, symbolizehash, thinmark, uri_encode, uri_query_encode, uri_to_path, which, withenv, withumask

Methods included from SymbolicFileMode

#normalize_symbolic_mode, #symbolic_mode_to_int, #valid_symbolic_mode?

Methods included from POSIX

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

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)

48
49
50
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
# File 'lib/puppet/util/fileparsing.rb', line 48

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


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def absent
  @absent
end

#block_evalObject

Returns the value of attribute block_eval


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def block_eval
  @block_eval
end

#fieldsObject

Returns the value of attribute fields


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

def fields
  @fields
end

#joinerObject

Returns the value of attribute joiner


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def joiner
  @joiner
end

#matchObject

Returns the value of attribute match


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def match
  @match
end

#nameObject

Returns the value of attribute name


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def name
  @name
end

#optionalObject

Returns the value of attribute optional


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

def optional
  @optional
end

#rollupObject

Returns the value of attribute rollup


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def rollup
  @rollup
end

#rtsObject

Returns the value of attribute rts


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def rts
  @rts
end

#separatorObject

Returns the value of attribute separator


33
34
35
# File 'lib/puppet/util/fileparsing.rb', line 33

def separator
  @separator
end

#typeObject (readonly)

Returns the value of attribute type


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

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.


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

def join(details)
  joinchar = self.joiner

  fields.collect { |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
  }.reject { |c| c.nil?}.join(joinchar)
end

#post_parse=(block) ⇒ Object

Create a hook that modifies the hash resulting from parsing.


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

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.


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

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

#text?Boolean

Are we a text type?


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

def text?
  type == :text
end

#to_line=(block) ⇒ Object


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

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