Commit 69ce1e8
Changed files (2)
lib
hcl2
spec
lib/hcl2/parser.rb
@@ -71,12 +71,16 @@ module Hcl2
whitespace? >> string >> comma.maybe >> eol
end
+ rule :empty_array do
+ lbracket >> eol >> eol >> rbracket
+ end
+
rule :array do
lbracket >> eol >> array_item.repeat >> whitespace >> rbracket
end
rule :argument_value do
- (array.as(:values) | string) >> eol
+ (empty_array | array.as(:values) | string) >> eol
end
rule :argument do
spec/parser_spec.rb
@@ -211,6 +211,13 @@ RSpec.describe Hcl2::Parser do
specify { expect(parser.string).to parse('"h1:fjlp3Pd3QsTLghNm7TUh/KnEMM2D3tLb7jsDLs8oWUE="') }
specify { expect(parser.string).to parse('"zh:2014b397dd93fa55f2f2d1338c19e5b2b77b025a76a6b1fceea0b8696e984b9c"') }
+ specify do
+ expect(parser.empty_array).to parse(<<~HCL.chomp)
+ [
+ ]
+ HCL
+ end
+
specify do
expect(parser.whitespace).to parse(<<~HCL)
/*
@@ -348,9 +355,9 @@ RSpec.describe Hcl2::Parser do
HCL
end
- pending "parses multiple empty blocks" do
+ it "parses multiple empty blocks" do
expect(subject[:blocks]).to match_array([
- { type: "provider", name: "thingy", arguments: [{ name: "names", values: [] }] },
+ { type: "provider", name: "thingy", arguments: [{ name: "names" }] },
])
end
end