Class: Protobuf::Node::MessageNode
- Defined in:
- lib/protobuf/compiler/nodes.rb
Instance Method Summary collapse
- #accept_descriptor_visitor(visitor) ⇒ Object
- #accept_message_visitor(visitor) ⇒ Object
-
#initialize(name, children) ⇒ MessageNode
constructor
A new instance of MessageNode.
Methods inherited from Base
#accept_rpc_visitor, #define_in_the_file
Constructor Details
#initialize(name, children) ⇒ MessageNode
Returns a new instance of MessageNode.
104 105 106 |
# File 'lib/protobuf/compiler/nodes.rb', line 104 def initialize(name, children) @name, @children = name, children end |
Instance Method Details
#accept_descriptor_visitor(visitor) ⇒ Object
121 122 123 124 125 126 127 |
# File 'lib/protobuf/compiler/nodes.rb', line 121 def accept_descriptor_visitor(visitor) descriptor = Google::Protobuf::DescriptorProto.new :name => @name.to_s visitor.descriptor = descriptor visitor.in_context descriptor do @children.each {|child| child.accept_descriptor_visitor visitor} end end |
#accept_message_visitor(visitor) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/protobuf/compiler/nodes.rb', line 108 def (visitor) class_name = @name.to_s class_name.gsub!(/\A[a-z]/) {|c| c.upcase} visitor.write "class #{class_name} < ::Protobuf::Message" visitor.in_context self.class do define_in_the_file visitor #@children.each {|child| child.accept_message_visitor visitor} @children.each {|child| next if child == ';'; child. visitor} # TODO: `next if child == ';';' is a monky patching. There must be a parser error. end visitor.write "end" end |