class Protobuf::Field::FieldProxy
def initialize(message_class, rule, type, name, tag, options)
def initialize(message_class, rule, type, name, tag, options) @message_class, @rule, @type, @name, @tag, @options = message_class, rule, type, name, tag, options end
def ready?
def ready? false end
def setup
def setup type = typename_to_class(@message_class, @type) field_class = \ if type < Enum EnumField elsif type < Message MessageField else raise TypeError, type.inspect end field_class.new(@message_class, @rule, type, @name, @tag, @options) end
def typename_to_class(message_class, type)
def typename_to_class(message_class, type) names = type.to_s.split('::').map {|s| Util.camelize(s) } outer = message_class.to_s.split('::') args = (Object.method(:const_defined?).arity == 1) ? [] : [false] while mod = outer.empty? ? Object : eval(outer.join('::')) mod = names.inject(mod) {|m, s| m && m.const_defined?(s, *args) && m.const_get(s) } break if mod raise NameError.new("type not found: #{type}", type) if outer.empty? outer.pop end mod end