summaryrefslogtreecommitdiff
path: root/spec/unit/pops/factory_rspec_helper.rb
blob: b11f6ee870979e5a02246cc14faf7a428c9a87c9 (plain)
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
46
47
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
require 'puppet/pops'

module FactoryRspecHelper
  def literal(x)
    Puppet::Pops::Model::Factory.literal(x)
  end

  def block(*args)
    Puppet::Pops::Model::Factory.block(*args)
  end

  def var(x)
    Puppet::Pops::Model::Factory.var(x)
  end

  def fqn(x)
    Puppet::Pops::Model::Factory.fqn(x)
  end

  def string(*args)
    Puppet::Pops::Model::Factory.string(*args)
  end

  def text(x)
    Puppet::Pops::Model::Factory.text(x)
  end

  def minus(x)
    Puppet::Pops::Model::Factory.minus(x)
  end

  def IF(test, then_expr, else_expr=nil)
    Puppet::Pops::Model::Factory.IF(test, then_expr, else_expr)
  end

  def UNLESS(test, then_expr, else_expr=nil)
    Puppet::Pops::Model::Factory.UNLESS(test, then_expr, else_expr)
  end

  def CASE(test, *options)
    Puppet::Pops::Model::Factory.CASE(test, *options)
  end

  def WHEN(values, block)
    Puppet::Pops::Model::Factory.WHEN(values, block)
  end

  def respond_to? method
    if Puppet::Pops::Model::Factory.respond_to? method
      true
    else
      super
    end
  end

  def method_missing(method, *args, &block)
    if Puppet::Pops::Model::Factory.respond_to? method
      Puppet::Pops::Model::Factory.send(method, *args, &block)
    else
      super
    end
  end

  # i.e. Selector Entry 1 => 'hello'
  def MAP(match, value)
    Puppet::Pops::Model::Factory.MAP(match, value)
  end

  def dump(x)
    Puppet::Pops::Model::ModelTreeDumper.new.dump(x)
  end

  def unindent x
    (x.gsub /^#{x[/\A\s*/]}/, '').chomp
  end
  factory ||= Puppet::Pops::Model::Factory
end