File: datacat.rb

package info (click to toggle)
puppet-module-richardc-datacat 0.6.2-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 208 kB
  • sloc: ruby: 417; sh: 10; makefile: 4
file content (45 lines) | stat: -rw-r--r-- 1,155 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
module Puppet_X
  module Richardc
    class Datacat
      def self.deep_merge
        deep_merge = Proc.new do |key,oldval,newval|
          newval.is_a?(Hash) && oldval.is_a?(Hash) ?
            oldval.merge(newval, &deep_merge) :
              newval.is_a?(Array) && oldval.is_a?(Array) ?
                oldval + newval :
                newval
        end
      end
    end

    # Our much simpler version of Puppet::Parser::TemplateWrapper
    class Datacat_Binding
      def initialize(d, template)
        @data = d
        @__file__ = template
      end

      def file
        @__file__
      end

      # Find which line in the template (if any) we were called from.
      # @return [String] the line number
      # @api private
      def script_line
        identifier = Regexp.escape(@__file__ || "(erb)")
        (caller.find { |l| l =~ /#{identifier}:/ }||"")[/:(\d+):/,1]
      end
      private :script_line

      def method_missing(name, *args)
        line_number = script_line
        raise "Could not find value for '#{name}' #{@__file__}:#{line_number}"
      end

      def get_binding
        binding()
      end
    end
  end
end