Skip to content

Commit

Permalink
Merge pull request #24 from opus-codium/fix-parser-ipv6
Browse files Browse the repository at this point in the history
Fix parsing IPv6 addresses starting with `:`
  • Loading branch information
smortex authored Dec 17, 2022
2 parents 9033c95 + 7c1b203 commit 5518b11
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 7 deletions.
15 changes: 8 additions & 7 deletions lib/puffy/parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -210,13 +210,6 @@ require 'strscan'
end
n += 1
end
when s.scan(/=/) then emit('=', s.matched)
when s.scan(/:/) then emit(':', s.matched)
when s.scan(/,/) then emit(',', s.matched)
when s.scan(/{/) then emit('{', s.matched)
when s.scan(/}/) then emit('}', s.matched)
when s.scan(/\(/) then emit('(', s.matched)
when s.scan(/\)/) then emit(')', s.matched)
when s.scan(/service\b/) then emit(:SERVICE, s.matched)
when s.scan(/client\b/) then emit(:CLIENT, s.matched)
when s.scan(/server\b/) then emit(:SERVER, s.matched)
Expand Down Expand Up @@ -258,6 +251,14 @@ require 'strscan'
when s.scan(/\d+/) then emit(:INTEGER, s.matched.to_i, s.matched_size)
when s.scan(/\w[\w-]+/) then emit(:IDENTIFIER, s.matched)
when s.scan(/=/) then emit('=', s.matched)
when s.scan(/:/) then emit(':', s.matched)
when s.scan(/,/) then emit(',', s.matched)
when s.scan(/{/) then emit('{', s.matched)
when s.scan(/}/) then emit('}', s.matched)
when s.scan(/\(/) then emit('(', s.matched)
when s.scan(/\)/) then emit(')', s.matched)
else
raise SyntaxError.new('Syntax error', { filename: @filename, lineno: @lineno, position: @position, line: @line })
end
Expand Down
15 changes: 15 additions & 0 deletions spec/puffy/parser_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# frozen_string_literal: true

require 'puffy'

RSpec.describe Puffy::Parser do
let(:config) do
<<~CONFIG
localhost = {127.0.0.1 ::1}
CONFIG
end

it 'parses successfuly' do
expect { subject.parse(config) }.not_to raise_error
end
end

0 comments on commit 5518b11

Please sign in to comment.