Commit 1d35f4c
Changed files (2)
lib
hcl2
spec
lib/hcl2/parser.rb
@@ -23,12 +23,14 @@ module Hcl2
rule(:plus) { str("+") }
rule(:pre_release) { hyphen >> (alpha | digit).repeat }
rule(:pre_release?) { pre_release.maybe }
+ rule(:question_mark) { str("?") }
rule(:quote) { str('"') }
rule(:rbracket) { str("]") }
rule(:rcurly) { str("}") }
rule(:slash) { str("/") }
rule(:space) { match('\s') }
rule(:tilda_wacka) { str("~>") }
+ rule(:underscore) { str("_") }
rule(:version) { number >> dot >> number >> dot >> number >> pre_release? }
rule(:whitespace) { (multiline_comment | comment | space).repeat }
rule(:whitespace?) { whitespace.maybe }
@@ -63,7 +65,7 @@ module Hcl2
rule :string do
quote >> (
- digit | dot | alpha | str("~> ") | slash | colon | assign | plus
+ digit | dot | alpha | str("~> ") | slash | colon | assign | plus | hyphen | question_mark | assign
).repeat(1).as(:value) >> quote
end
@@ -84,7 +86,7 @@ module Hcl2
end
rule :argument do
- whitespace >> alpha.repeat(1).as(:name) >> whitespace >> assign >> whitespace >> argument_value
+ whitespace >> (alpha).repeat(1).as(:name) >> whitespace >> assign >> whitespace >> argument_value
end
rule :block_body do
@@ -92,7 +94,7 @@ module Hcl2
end
rule :identifier do
- whitespace >> quote >> (alpha | dot | slash).repeat(1).as(:name) >> quote >> whitespace
+ whitespace >> quote >> (alpha | dot | slash | underscore).repeat(1).as(:name) >> quote >> whitespace
end
rule :block do
spec/parser_spec.rb
@@ -134,7 +134,14 @@ RSpec.describe Hcl2::Parser do
HCL
end
- pending { expect(subject).to be_truthy }
+ specify { expect(subject).to be_truthy }
+
+ specify do
+ expect(subject[:blocks][0][:type].to_s).to eq("module")
+ expect(subject[:blocks][0][:name].to_s).to eq("origin_label")
+ expect(subject[:blocks][0][:arguments][0][:name].to_s).to eq("source")
+ expect(subject[:blocks][0][:arguments][0][:value].to_s).to eq("git::https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.3.7")
+ end
end
context "when parsing a module with an argument assignment via string interpolation" do