Commit a7f4009

mo khan <mo@mokhan.ca>
2021-05-10 01:56:25
feat: ignore multi-line comments
1 parent 9029981
Changed files (2)
lib
spandx
terraform
parsers
spec
unit
terraform
lib/spandx/terraform/parsers/hcl.rb
@@ -23,8 +23,9 @@ module Spandx
         rule(:space) { match('\s') }
         rule(:tilda_wacka) { str('~>') }
         rule(:version) { number >> dot >> number >> dot >> number >> pre_release? }
-        rule(:line_comment) { str('#') >> ((str("\n") >> str("\r").maybe).absent? >> any).repeat >> eol }
-        rule(:whitespace) { (line_comment | space).repeat }
+        rule(:comment) { (str('#') | str('//')) >> ((str("\n") >> str("\r").maybe).absent? >> any).repeat >> eol }
+        rule(:multiline_comment) { str('/*') >> (str('*/').absent? >> any).repeat >> str('*/') }
+        rule(:whitespace) { (multiline_comment | comment | space).repeat }
         rule(:whitespace?) { whitespace.maybe }
         rule(:greater_than_or_equal_to) { str('>=') }
 
@@ -92,29 +93,7 @@ module Spandx
           block.repeat.as(:blocks)
         end
 
-        rule :comment do
-          str('#') >> match('.').repeat >> eol
-          line_comment
-        end
-
-        rule :comments do
-          comment.repeat
-        end
-
-        rule :blank_line do
-          eol
-        end
-
-        rule :blank_lines do
-          blank_line.repeat
-        end
-
-        rule :hcl do
-          # comments.maybe >> blank_lines.maybe >> blocks
-          blocks
-        end
-
-        root(:hcl)
+        root(:blocks)
       end
     end
   end
spec/unit/terraform/parsers/hcl_spec.rb
@@ -16,6 +16,11 @@ RSpec.describe Spandx::Terraform::Parsers::Hcl do
             version     = "3.39.0"
             constraints = "~> 3.27"
           }
+
+          /*
+            This is a multi-line comment
+            that spans multiple lines
+          */
         HCL
       end
 
@@ -110,4 +115,5 @@ RSpec.describe Spandx::Terraform::Parsers::Hcl do
   specify { expect(parser.space).to parse(' ') }
   specify { expect(parser.comment).to parse('# This file is maintained automatically by "terraform init".') }
   specify { expect(parser.comment).to parse('# Manual edits may be lost in future updates.') }
+  specify { expect(parser.comment).to parse('// This file is maintained automatically by "terraform init".') }
 end