class TezosClient::EncodeUtils::ArgsEncoder
Attributes
escaped[RW]
expr[RW]
pl[RW]
popen[RW]
ret[RW]
sopen[RW]
Public Class Methods
new(expr)
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 9 def initialize(expr) @expr = expr.gsub(/(?:@[a-z_]+)|(?:#.*$)/m, "") .gsub(/\s+/, " ") .strip initialize_statuses initialize_ret end
Public Instance Methods
encode()
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 121 def encode expr.each_char.with_index do |char, i| is_last_char = (i == (expr.length - 1)) treat_char(char, is_last_char) end if sopen raise ArgumentError, "string '#{@val}' has not been closed" end ret end
initialize_ret()
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 25 def initialize_ret @ret = { prim: nil, args: [] } end
initialize_statuses()
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 17 def initialize_statuses @popen = false @sopen = false @escaped = false @pl = 0 @val = "" end
treat_char(char, is_last_char)
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 101 def treat_char(char, is_last_char) return if treat_escape(char) unless popen || sopen if is_last_char || char == " " @val += char if is_last_char treat_val return end end unless popen return if treat_double_quote(char) end return if treat_parenthesis(char) @val += char end
treat_double_quote(char)
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 49 def treat_double_quote(char) return false unless char == '"' if @sopen @sopen = false if !ret[:prim] @ret = { "string" => @val } else @ret[:args] << { "string" => @val } end @val = "" else @sopen = true end true end
treat_escape(char)
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 89 def treat_escape(char) if escaped @val += char @escaped = false true elsif char == "\\" @escaped = true true end false end
treat_parenthesis(char)
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 66 def treat_parenthesis(char) case char when "(" @val += char if @popen @popen = true @pl += 1 true when ")" raise "closing parenthesis while none was opened #{val}" unless popen @pl -= 1 if pl.zero? @ret[:args] << ArgsEncoder.new(@val).encode @val = "" @popen = false else @val += char end true else false end end
treat_val()
click to toggle source
# File lib/tezos_client/encode_utils.rb, line 32 def treat_val unless @val.empty? if @val == @val.to_i.to_s if !ret[:prim] @ret = { "int" => @val } else @ret[:args] << { "int" => @val } end elsif ret[:prim] @ret[:args] << ArgsEncoder.new(@val).encode else @ret[:prim] = @val end @val = "" end end