Macos puppet能否区分标量数组和作为资源属性的单个元素数组?

Macos puppet能否区分标量数组和作为资源属性的单个元素数组?,macos,plist,puppet,boxen,Macos,Plist,Puppet,Boxen,有没有办法让木偶区分 my_custom_type { 'key': value => 'blah', } 及 在声明资源属性时 这是一个自定义类型,所以我有完整的ruby land控件,但它们都显示为Puppet::type#set_参数,因此Puppet::Property#应该=为'blah' 我正在Ruby 2.0.0(通过Boxen)之上使用Puppet 3.4.3。我不确定改变这两个版本对我来说有多容易 上下文:我正在实现的自定义类型编辑Apple属性列表(.plist文

有没有办法让木偶区分

my_custom_type { 'key':
  value => 'blah',
}

在声明资源属性时

这是一个自定义类型,所以我有完整的ruby land控件,但它们都显示为
Puppet::type#set_参数
,因此
Puppet::Property#应该=
'blah'

我正在Ruby 2.0.0(通过Boxen)之上使用Puppet 3.4.3。我不确定改变这两个版本对我来说有多容易

上下文:我正在实现的自定义类型编辑Apple属性列表(
.plist
文件),其中字符串和包含单个字符串元素的数组非常不同

将属性声明为

newproperty(:value, :array_matching => :all) do
沿着

似乎没有改变
设置_参数
应该接收的内容,它们只是使
Puppet::Property#应该
返回
['blah']
,而不是在这两种情况下
'blah'
。这种区别似乎在解析器级别上被进一步抛出

提供

my_custom_type { 'key':
  value => [['blah']],
}
同样的结果也没有帮助

请注意:

我意识到我可以通过在声明中提供额外信息来解决这个问题,比如:

my_custom_type { 'key':
  value => ['blah'],
  is_array => true,
}


我想知道是否有一种方法可以捕获是否声明了数组或标量。。。尽管请随意向我解释为什么在木偶世界这样做是不明智的或异端的;我对这个陌生的地方有点陌生。

在《木偶3》中,底层的单元素特殊大小写被弃用了,很长一段时间以来都不是语言行为的一部分。看。

听起来木偶好像是想帮上大忙。是的,您的变通方法将起作用,但不幸的是,您的清单必须包含这样的冗余信息。您可能想考虑向资源类型打开一个特性请求,允许您需要的行为。@费利克斯弗兰克:是的,我可以看到解析器说“所有资源属性都是数组”,并且包装值不是以数组的形式写的。我可以使用
[['blah']]
,我可以理解它,记住它,并向其他人解释它。我不明白为什么它把
[[['blah']]
(和
[[[['blah']]]]
等)分开,使之等效。这对我来说毫无意义。它可能像一个
数组#展平
调用一样简单。@FelixFrank是的,我确信它就是这么简单。。。我只是不知道为什么(除了没有人想到/注意到的实现细节的副作用)我真的认为这是设计造成的。这里缺少的是一个
:array\u matching
选项,它实际上可以满足您的需要。
my_custom_type { 'key':
  value => ['blah'],
  is_array => true,
}
my_custom_type { 'key':
  value_array => ['blah'],
}