diff --git a/lib/pigeon/database.rb b/lib/pigeon/database.rb index 2aea6e9..368bff5 100644 --- a/lib/pigeon/database.rb +++ b/lib/pigeon/database.rb @@ -152,12 +152,14 @@ module Pigeon bundle = File.read(File.join(file_path, "messages.pgn")) tokens = Pigeon::Lexer.tokenize(bundle) messages = Pigeon::Parser.parse(self, tokens) + messages .map(&:collect_blobs) .flatten .uniq - .reject { |x| have_blob?(x) } - .map { |x| binding.pry } + .map do |x| + binding.pry if x.start_with?("&622PRNJ7") + end messages end diff --git a/spec/fixtures/has_blobs/messages.pgn b/spec/fixtures/has_blobs/messages.pgn index 732e294..00b4742 100644 --- a/spec/fixtures/has_blobs/messages.pgn +++ b/spec/fixtures/has_blobs/messages.pgn @@ -1,9 +1,29 @@ -author @M6S9S9NV6JNNTCWKATN5M5JQE0N221BNPTB00HH6MB9P2J6CJ9M0.ed25519 -kind description +author @J7MH5YYY28YYPZVHCTMJJRYB5Z30XSFDB7E4HB8PJZADP3Z6CVA0.ed25519 +kind &622PRNJ7C0S05XR2AHDPKWMG051B1QW5SXMN2RQHF2AND6J8VGPG.sha256 prev NONE depth 0 lipmaa 0 -what:"A simple bundle with a few blobs" +foo:"bar" -signature HWXKEVS3HD4QQSH26GW43SFYC1T24DWX3ZTZSNVJMTCFNBM2DT05M305KP5PN8R4WSVXKYZ9Q3Z75XJMH613KYH085R78FESFQHPJ3R.sig.ed25519 +signature Y3PDF74KEVSFY1HV91VEJ7WAC4AK9TK3X1NN1R694DJG11EQGRNFATCEVQGMZ74JP6GKZ5CYYFJNPG89PEM3H3ZFQSKA1RZKBSS7P08.sig.ed25519 + +author @J7MH5YYY28YYPZVHCTMJJRYB5Z30XSFDB7E4HB8PJZADP3Z6CVA0.ed25519 +kind foo +prev %C0N3HS901SNYGMB8BZX9QJH1R93HMJVTAXY1NXB3PS6T6VVYQKD0.sha256 +depth 1 +lipmaa 0 + +&FV0FJ0YZADY7C5JTTFYPKDBHTZJ5JVVP5TCKP0605WWXYJG4VMRG.sha256:"bar" + +signature 1PN50A7WRXF23DM8T70P618Y74W1JMTAE255HX5T574HQ6FNYCFEC7WY0PE8BT7DN189PGVBQ39WMS3CH88TXGF2RYM9CW5E2GAKA18.sig.ed25519 + +author @J7MH5YYY28YYPZVHCTMJJRYB5Z30XSFDB7E4HB8PJZADP3Z6CVA0.ed25519 +kind bar +prev %P84K2XKZHHY3XNR15J3MESHBKVJKVFVXGVHAJ1GZJZDPHXZJZW60.sha256 +depth 2 +lipmaa 1 + +foo:&YPF11E5N9JFVB6KB1N1WDVVT9DXMCHE0XJWBZHT2CQ29S5SEPCSG.sha256 + +signature 571PPDBDDH19W227JEMV1SXGG29D8GVYWRYGPC9FNYYHZE6QKAK5YY2K7TYDKKTMTPJK1Z8SDE5ZAH56BSFGWFQ6Y5W4PPKRRF3JP3G.sig.ed25519 diff --git a/spec/pigeon/bundle_spec.rb b/spec/pigeon/bundle_spec.rb index e619388..687e3e9 100644 --- a/spec/pigeon/bundle_spec.rb +++ b/spec/pigeon/bundle_spec.rb @@ -50,11 +50,14 @@ RSpec.describe Pigeon::Message do puts "WARNING: This bundle contains blobs, but does not reference them." `rm -rf #{Pigeon::PIGEON_BLOB_PATH}` db.reset_database + blobs = [ + "&622PRNJ7C0S05XR2AHDPKWMG051B1QW5SXMN2RQHF2AND6J8VGPG.sha256", + "&FV0FJ0YZADY7C5JTTFYPKDBHTZJ5JVVP5TCKP0605WWXYJG4VMRG.sha256", + "&YPF11E5N9JFVB6KB1N1WDVVT9DXMCHE0XJWBZHT2CQ29S5SEPCSG.sha256", + ] db.import_bundle("./spec/fixtures/has_blobs") expect(db.all_messages.count).to eq(1) - ["&622PRNJ7C0S05XR2AHDPKWMG051B1QW5SXMN2RQHF2AND6J8VGPG.sha256", - "&FV0FJ0YZADY7C5JTTFYPKDBHTZJ5JVVP5TCKP0605WWXYJG4VMRG.sha256", - "&YPF11E5N9JFVB6KB1N1WDVVT9DXMCHE0XJWBZHT2CQ29S5SEPCSG.sha256"].map do |h| + blobs.map do |h| expect(db.have_blob?(h)).to be true expect(db.get_blob(h)).to be_kind_of(String) end