From 30e9a0d805ec5e2e77800e26584ee5071c536a08 Mon Sep 17 00:00:00 2001 From: bumi Date: Sat, 3 Nov 2018 18:30:37 +0100 Subject: [PATCH] Add currency lookup helpers add ? methods to for simple currency selection: Openalias.addresses('donate@getmonero.org').find(&:xmr?) --- README.md | 3 +++ lib/openalias.rb | 11 ++++++++++- spec/openalias_spec.rb | 7 +++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d9d0d3..1cdd70a 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,9 @@ Openalias.addresses('btc@michaelbumann.com') Openalias.addresses('donate.getmonero.org') => [#, #] +Openalias.addresses('donate.getmonero.org').find(&:xmr?) +=> # + Openalias.addresses('donate.getmonero.org')[0].recipient_name => "Monero Development" diff --git a/lib/openalias.rb b/lib/openalias.rb index 3e089e0..1d57b7d 100644 --- a/lib/openalias.rb +++ b/lib/openalias.rb @@ -3,7 +3,16 @@ require 'ostruct' class Openalias VERSION = "0.1.0" - class CryptoAddress < OpenStruct; end + class CryptoAddress < OpenStruct; + + def method_missing(method_name, *args, &block) + if symbol = method_name[/(.*)\?\z/, 1] + self.cryptocurrency.to_s.downcase === symbol.to_s.downcase + else + super + end + end + end toplevel_dir = File.dirname(File.dirname(__FILE__)) Thermite::Fiddle.load_module('init_openalias_rust', diff --git a/spec/openalias_spec.rb b/spec/openalias_spec.rb index a42f8c3..c005ee9 100644 --- a/spec/openalias_spec.rb +++ b/spec/openalias_spec.rb @@ -5,6 +5,13 @@ RSpec.describe Openalias do expect(Openalias::VERSION).not_to be nil end + it "provides ? methods to check for the currency" do + expect(Openalias.addresses('donate.getmonero.org').find { |c| c.cryptocurrency.downcase == 'xmr' }.xmr?).to eql(true) + expect(Openalias.addresses('donate.getmonero.org').find { |c| c.cryptocurrency.downcase == 'xmr' }.btc?).to eql(false) + expect(Openalias.addresses('donate.getmonero.org').find(&:xmr?).xmr?).to eql(true) + expect(Openalias.addresses('donate.getmonero.org').find(&:xmr?).xmr).to eql(true) + end + it "provides accessors for the data" do expect(Openalias.addresses('donate.getmonero.org')[0].recipient_name).to eql('Monero Development') expect(Openalias.addresses('donate.getmonero.org').find { |c| c.cryptocurrency.downcase == 'xmr' }.address).to eql('44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A')