Skip to content

Commit

Permalink
refactor: use fix_vec
Browse files Browse the repository at this point in the history
  • Loading branch information
shaojunda committed Sep 3, 2019
1 parent 7b0525a commit e5aa51e
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 37 deletions.
3 changes: 2 additions & 1 deletion lib/ckb/serializers/arg_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ class ArgSerializer

# @param arg [String]
def initialize(arg)
@bytes_serializer = BytesSerializer.new(arg)
items = arg.delete_prefix("0x").scan(/../)
@bytes_serializer = FixVecSerializer.new(items, ByteSerializer)
end

private
Expand Down
3 changes: 2 additions & 1 deletion lib/ckb/serializers/byte32_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ def layout
end

def body
value
items = value.delete_prefix("0x").scan(/../)
items.map { |item| ByteSerializer.new(item).serialize }.join("")
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

module CKB
module Serializers
class BytesSerializer
include FixVecSerializer
class ByteSerializer
include BaseSerializer

# @param value [String]
def initialize(value)
Expand All @@ -13,11 +13,13 @@ def initialize(value)

private

attr_reader :value, :items_count
attr_reader :value

def item_layouts
return "" if value.nil?
def layout
body
end

def body
value
end
end
Expand Down
16 changes: 15 additions & 1 deletion lib/ckb/serializers/fix_vec_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
module CKB
module Serializers
module FixVecSerializer
class FixVecSerializer
include BaseSerializer

def initialize(items, item_serializer)
@items = items
@items_count = items.count
@item_serializer = item_serializer
end

private

attr_reader :items, :items_count, :item_serializer

def layout
header + body
end
Expand All @@ -20,6 +28,12 @@ def body
def body_capacity
[body].pack("H*").bytesize
end

def item_layouts
return "" if items_count == 0

items.map { |item| item_serializer.new(item).serialize }.join("")
end
end
end
end
25 changes: 0 additions & 25 deletions lib/ckb/serializers/header_deps_serializer.rb

This file was deleted.

3 changes: 2 additions & 1 deletion lib/ckb/serializers/output_data_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ class OutputDataSerializer

# @param output_data [String]
def initialize(output_data)
@bytes_serializer = BytesSerializer.new(output_data)
items = output_data.delete_prefix("0x").scan(/../)
@bytes_serializer = FixVecSerializer.new(items, ByteSerializer)
end

private
Expand Down
2 changes: 1 addition & 1 deletion lib/ckb/serializers/raw_transaction_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class RawTransactionSerializer
def initialize(transaction)
@version_serializer = VersionSerializer.new(transaction.version)
@cell_deps_serializer = DynVecSerializer.new(transaction.cell_deps, CellDepSerializer)
@header_deps_serializer = HeaderDepsSerializer.new(transaction.header_deps)
@header_deps_serializer = FixVecSerializer.new(transaction.header_deps, HeaderDepSerializer)
@inputs_serializer = DynVecSerializer.new(transaction.inputs, InputSerializer)
@outputs_serializer = DynVecSerializer.new(transaction.outputs, OutputSerializer)
@outputs_data_serializer = DynVecSerializer.new(transaction.outputs_data, OutputDataSerializer)
Expand Down
3 changes: 1 addition & 2 deletions lib/ckb/serializers/serializers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@
require_relative "uint32_serializer"
require_relative "uint64_serializer"
require_relative "byte32_serializer"
require_relative "bytes_serializer"
require_relative "byte_serializer"
require_relative "code_hash_serializer"
require_relative "hash_type_serializer"
require_relative "arg_serializer"
require_relative "script_serializer"
require_relative "version_serializer"
require_relative "header_dep_serializer"
require_relative "header_deps_serializer"
require_relative "dep_type_serializer"
require_relative "cell_dep_serializer"
require_relative "since_serializer"
Expand Down

0 comments on commit e5aa51e

Please sign in to comment.