xrpl-ruby 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fe5e22e400d255c2c834133232433c9c8a513d3c1fba93dc06f46e18d90b1c3d
4
+ data.tar.gz: 0512e71a026bef8893fa8855c702ccdb09e18ce219f286c3cea33b2b5d477e38
5
+ SHA512:
6
+ metadata.gz: c7b52d5c38ead6d5d5910cbd5132be7ea783e24b8c21f452d56138c9e806d016d9186d3213913372b3d5cb8d1c0bdca9c6acf8f7c9de1c5416571bf9d0873b2e
7
+ data.tar.gz: '00914805ec76c9fe7a2b475881efde3408f6f609f3ffaedc30d21fe845d3dd247051158561c29fe69af688238d4c86fb5a4124747c806bfe6a64f4c31a244020'
@@ -0,0 +1,58 @@
1
+ module Core
2
+ class BaseX
3
+ def initialize(alphabet)
4
+ @alphabet = alphabet
5
+ @base = alphabet.length
6
+ @alphabet_map = {}
7
+ alphabet.chars.each_with_index { |char, index| @alphabet_map[char] = index }
8
+ end
9
+
10
+ def encode(buffer)
11
+ return @alphabet[0] if buffer.empty?
12
+
13
+ digits = [0]
14
+ buffer.each_byte do |byte|
15
+ carry = byte
16
+ digits.each_with_index do |digit, i|
17
+ carry += digit << 8
18
+ digits[i] = (carry % @base).to_i
19
+ carry = (carry / @base).abs.to_i
20
+ end
21
+
22
+ while carry > 0 do
23
+ digits << (carry % @base).to_i
24
+ carry = (carry / @base).abs.to_i
25
+ end
26
+ end
27
+
28
+ buffer.each_byte.take_while { |byte| byte == 0 }.each { digits << 0 }
29
+ digits.reverse.map { |digit| @alphabet[digit] }.join
30
+ end
31
+
32
+ def decode(string)
33
+ return '' if string.empty?
34
+
35
+ bytes = [0]
36
+ string.each_char do |char|
37
+ raise ArgumentError, "Invalid character found: #{char}" unless @alphabet_map.key?(char)
38
+
39
+ carry = @alphabet_map[char]
40
+ bytes.each_with_index do |byte, i|
41
+ carry += byte * @base
42
+ bytes[i] = carry & 0xff
43
+ carry >>= 8
44
+ end
45
+
46
+ while carry > 0 do
47
+ bytes << (carry & 0xff)
48
+ carry >>= 8
49
+ end
50
+ end
51
+
52
+ string.chars.take_while { |char| char == @alphabet[0] }.each { bytes << 0 }
53
+ bytes.reverse.pack('C*')
54
+ end
55
+
56
+ end
57
+
58
+ end
data/lib/core/core.rb ADDED
@@ -0,0 +1,2 @@
1
+ # @!attribute
2
+ require_relative 'base_x'
data/lib/xrpl-ruby.rb ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'core/core'
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xrpl-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Busse
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-12-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: This gem provides a Ruby interface to interact with the XRP Ledger (XRPL)
56
+ blockchain, allowing developers to easily integrate XRPL functionality into their
57
+ Ruby applications.
58
+ email:
59
+ - dev@ledger-direct.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - lib/core/base_x.rb
65
+ - lib/core/core.rb
66
+ - lib/xrpl-ruby.rb
67
+ homepage: https://github.com/AlexanderBuzz/xrpl-ruby
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.3.7
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: A Ruby library to interact with the XRP Ledger (XRPL) blockchain
90
+ test_files: []