puppet-itemize 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b3c318001bfbfe15c2c0568b90c5828cc043374
4
- data.tar.gz: 7b6b404e88698f56acccc6df7e756d145a41344f
3
+ metadata.gz: 87413824f9668fcaae315821a7d3348da4b4e702
4
+ data.tar.gz: 4d2951949779cb082d2c992d9909c384996eaa2e
5
5
  SHA512:
6
- metadata.gz: 47a02d64eb0371acbf7ddc46aa9b69af05dcb2429f1cd02c3bd96e08c3fe2a994b5d757b7bcf522d555792caf201f8e0c1c2fca61a1ad7326c8b3ab3aebbd50a
7
- data.tar.gz: 1f4d3499b0a7d29907f9f78d2bc5e7fb4bbda7143b5ee80f7a2e7b7aefeff672c546cd98af63c768bc459ab41b440170f8f34a6c90e4cc917cb1f0af3a8f59fe
6
+ metadata.gz: b180f793fb59579779f53670c416a53964ca1014c76ee72ff7722b1598bae643ab86115c191129094b12af7ab47fa2b93561270972a10d2582101460ddce5dad
7
+ data.tar.gz: 1c639ec0db9e239caa331ad6a560dbd092928d49ae616451f742c0d0c918dc12ff44c3949f4bc7018ac58dc01e590479912a8c0adf7bfb1ba5d1023707d65c93
@@ -1,3 +1,9 @@
1
+ # v0.0.5
2
+
3
+ * Add the monkeypatch back in. Calculating it via a class method just had too
4
+ many edge cases.
5
+
6
+
1
7
  # v0.0.4
2
8
 
3
9
  * Stop monkeypatching core classes
@@ -1,8 +1,7 @@
1
1
  module Puppet_X
2
2
  module Binford2k
3
3
  class Itemize
4
- VERSION = '0.0.1'
5
-
4
+ require 'puppet_x/binford2k/itemize/version'
6
5
  require 'puppet_x/binford2k/itemize/parser'
7
6
  require 'puppet_x/binford2k/itemize/runner'
8
7
  end
@@ -0,0 +1,51 @@
1
+ # Update the interpolated string token to return a composed value string so we
2
+ # don't have to special case its handling. Because this is pre-compilation,
3
+ # we cannot resolve variables. So just tag w/ a marker
4
+ class Puppet::Pops::Model::ConcatenatedString
5
+ def value
6
+ segments.map {|t| t.value rescue nil }.join('<??>')
7
+ end
8
+ end
9
+
10
+ # when a resource declaration title is just a variable
11
+ class Puppet::Pops::Model::VariableExpression
12
+ def value
13
+ '<??>'
14
+ end
15
+ end
16
+
17
+ # when a resource reference is used
18
+ class Puppet::Pops::Model::AccessExpression
19
+ def value
20
+ keys.map {|t| t.value rescue nil }.join
21
+ end
22
+ end
23
+
24
+ # when math (like a set operation) is used to generate a list of classes to use.
25
+ class Puppet::Pops::Model::ArithmeticExpression
26
+ def value
27
+ left_expr.value + operator + right_expr.value
28
+ end
29
+ end
30
+
31
+ # when a postfix method generates a list of classes to declare
32
+ class Puppet::Pops::Model::CallMethodExpression
33
+ def value
34
+ '<??>'
35
+ end
36
+ end
37
+
38
+ # when a function generates the name of a class to declare
39
+ class Puppet::Pops::Model::CallNamedFunctionExpression
40
+ def value
41
+ "#{functor_expr.value}(#{arguments.map {|a| a.value rescue nil }.join(',')})"
42
+ end
43
+ end
44
+
45
+ # When someone uses a resource reference to ... declare a class with a default expression
46
+ # like ... who even does that?
47
+ class Puppet::Pops::Model::LiteralDefault
48
+ def value
49
+ '<??>'
50
+ end
51
+ end
@@ -1,7 +1,7 @@
1
1
  require 'puppet'
2
2
  require 'puppet/parser'
3
3
  require 'puppet/util/logging'
4
- # require 'puppet_x/binford2k/itemize/monkeypatch'
4
+ require 'puppet_x/binford2k/itemize/monkeypatch'
5
5
 
6
6
  class Puppet_X::Binford2k::Itemize::Parser
7
7
  attr_reader :results
@@ -58,7 +58,7 @@ class Puppet_X::Binford2k::Itemize::Parser
58
58
  end
59
59
 
60
60
  def count_ResourceExpression(o)
61
- resource_name = value_of(o.type_name)
61
+ resource_name = o.type_name.value
62
62
  case resource_name
63
63
  when 'class'
64
64
  # for classes declared as resource-style, we have to traverse back up the
@@ -67,10 +67,10 @@ class Puppet_X::Binford2k::Itemize::Parser
67
67
  case klass.title
68
68
  when Puppet::Pops::Model::LiteralList
69
69
  klass.title.values.each do |item|
70
- record(:classes, value_of(item))
70
+ record(:classes, item.value)
71
71
  end
72
72
  else
73
- record(:classes, value_of(klass.title))
73
+ record(:classes, klass.title.value)
74
74
  end
75
75
  end
76
76
  else
@@ -92,19 +92,20 @@ class Puppet_X::Binford2k::Itemize::Parser
92
92
  case function_name
93
93
  when 'include', 'contain', 'require'
94
94
  o.arguments.each do |klass|
95
- record(:classes, value_of(klass))
95
+ record(:classes, klass.value)
96
96
  end
97
97
 
98
98
  when 'create_resources'
99
99
  Puppet.warn_once(:dependency, 'create_resources', 'create_resources detected. Please update to use iteration instead.', :default, :default)
100
100
  record(:functions, function_name)
101
- record(:types, value_of(o.arguments.first))
101
+ record(:types, o.arguments.first.value)
102
102
 
103
103
  else
104
104
  record(:functions, function_name)
105
105
  end
106
106
  end
107
107
 
108
+ # lots of edge cases of edge cases here. Monkeypatching seems more reliable
108
109
  def value_of(obj)
109
110
  case obj
110
111
  when Puppet::Pops::Model::ConcatenatedString
@@ -114,11 +115,11 @@ class Puppet_X::Binford2k::Itemize::Parser
114
115
  Puppet::Pops::Model::LiteralDefault
115
116
  '<??>'
116
117
  when Puppet::Pops::Model::CallMethodExpression
117
- obj.functor_expr.right_expr.value
118
+ value_of(obj.functor_expr.right_expr)
118
119
  when Puppet::Pops::Model::AccessExpression
119
120
  obj.keys.map {|t| t.value rescue nil }.join
120
121
  when Puppet::Pops::Model::ArithmeticExpression
121
- obj.left_expr.value + obj.operator + obj.right_expr.value
122
+ value_of(obj.left_expr) + obj.operator + value_of(obj.right_expr)
122
123
  when Puppet::Pops::Model::CallNamedFunctionExpression
123
124
  "#{obj.functor_expr.value}(#{obj.arguments.map {|a| a.value rescue nil }.join(',')})"
124
125
  else
@@ -1,7 +1,7 @@
1
1
  module Puppet_X
2
2
  module Binford2k
3
3
  class Itemize
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.5'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-itemize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Ford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-19 00:00:00.000000000 Z
11
+ date: 2018-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet
@@ -48,6 +48,7 @@ files:
48
48
  - lib/puppet/face/parser/itemize.rb
49
49
  - lib/puppet_x/binford2k/itemize.rb
50
50
  - lib/puppet_x/binford2k/itemize/cli.rb
51
+ - lib/puppet_x/binford2k/itemize/monkeypatch.rb
51
52
  - lib/puppet_x/binford2k/itemize/parser.rb
52
53
  - lib/puppet_x/binford2k/itemize/runner.rb
53
54
  - lib/puppet_x/binford2k/itemize/version.rb