Fix `decode_ultihash`, Lexer regexes. 33 examples, 7 failures

This commit is contained in:
Netscape Navigator 2020-06-03 08:13:49 -05:00
parent c10b809193
commit f147830a45
4 changed files with 12 additions and 8 deletions

View File

@ -266,8 +266,12 @@ module Pigeon
end end
def self.decode_multihash(string) def self.decode_multihash(string)
# "FEED.", "FILE.", "USER." etc.. case string[0..4]
return b32_decode(string[5..]) when BLOB_SIGIL, MESSAGE_SIGIL, IDENTITY_SIGIL
return b32_decode(string[5..])
else
return b32_decode(string)
end
end end
end end
end end

View File

@ -56,14 +56,14 @@ module Pigeon
attr_reader :bundle_string, :scanner, :tokens attr_reader :bundle_string, :scanner, :tokens
# TODO: Change all the `{40,90}` values in ::Lexer to real values # TODO: Change all the `{40,90}` values in ::Lexer to real values
# TODO: Create regexes using string and Regexp.new() for cleaner regexes. # TODO: Create regexes using string and Regexp.new() for cleaner regexes.
ALPHANUMERICISH = /[a-zA-Z0-9_\-=\.]{1,90}/
NUMERIC = /\d{1,7}/ NUMERIC = /\d{1,7}/
NULL_VALUE = /NONE/ NULL_VALUE = /NONE/
FEED_VALUE = /USER.{52}/ FEED_VALUE = /USER\.[#{ALPHANUMERICISH}]{52}/
MESG_VALUE = /TEXT.{52}/ MESG_VALUE = /TEXT\.[#{ALPHANUMERICISH}]{52}/
BLOB_VALUE = /FILE.{52}/ BLOB_VALUE = /FILE\.[#{ALPHANUMERICISH}]{52}/
STRG_VALUE = /".{1,128}"/ STRG_VALUE = /".{1,128}"/
# If you need other characters (but not spaces) submit an issue. # If you need other characters (but not spaces) submit an issue.
ALPHANUMERICISH = /[a-zA-Z0-9_\-=\.\@\&]{1,90}/
ALL_VALUES = [ ALL_VALUES = [
FEED_VALUE, FEED_VALUE,
MESG_VALUE, MESG_VALUE,

View File

@ -86,7 +86,7 @@ RSpec.describe Pigeon::Lexer do
expect(hash[:DEPTH]).to eq(message.depth) expect(hash[:DEPTH]).to eq(message.depth)
expect(hash[:KIND]).to eq(message.kind) expect(hash[:KIND]).to eq(message.kind)
expect(hash[:PREV]).to eq Pigeon::NOTHING expect(hash[:PREV]).to eq Pigeon::NOTHING
expect(hash[:SIGNATURE]).to eq(messagenature) expect(hash[:SIGNATURE]).to eq(message.signature)
end end
it "catches syntax errors" do it "catches syntax errors" do

View File

@ -52,7 +52,7 @@ RSpec.describe Pigeon::Message do
"prev NONE", "prev NONE",
"", "",
"a:\"bar\"", "a:\"bar\"",
"b:&CHHABX8Q9D9Q0BY2BBZ6FA7SMAFNE9GGMSDTZVZZC9TK2N9F15QG.sha256", "b:FILE.CHHABX8Q9D9Q0BY2BBZ6FA7SMAFNE9GGMSDTZVZZC9TK2N9F15QG",
"", "",
"signature __SIGNATURE__", "signature __SIGNATURE__",
].join("\n") ].join("\n")