Class: Protobuf::Generators::GroupGenerator
- Inherits:
-
Object
- Object
- Protobuf::Generators::GroupGenerator
show all
- Includes:
- Printable
- Defined in:
- lib/protobuf/generators/group_generator.rb
Constant Summary
Constants included
from Printable
Printable::PARENT_CLASS_ENUM, Printable::PARENT_CLASS_MESSAGE, Printable::PARENT_CLASS_SERVICE
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Printable
#init_printer
Constructor Details
#initialize(indent_level = 0) ⇒ GroupGenerator
Returns a new instance of GroupGenerator.
16
17
18
19
20
21
22
23
24
|
# File 'lib/protobuf/generators/group_generator.rb', line 16
def initialize(indent_level = 0)
@groups = Hash.new { |h, k| h[k] = [] }
@headers = {}
@comments = {}
@handlers = {}
@indent_level = indent_level
@order = [:enum, :message_declaration, :options, :message, :extended_message, :service]
init_printer(indent_level)
end
|
Instance Attribute Details
#groups ⇒ Object
Returns the value of attribute groups.
13
14
15
|
# File 'lib/protobuf/generators/group_generator.rb', line 13
def groups
@groups
end
|
#indent_level ⇒ Object
Returns the value of attribute indent_level.
13
14
15
|
# File 'lib/protobuf/generators/group_generator.rb', line 13
def indent_level
@indent_level
end
|
#order=(value) ⇒ Object
14
15
16
|
# File 'lib/protobuf/generators/group_generator.rb', line 14
def order=(value)
@order = value
end
|
Instance Method Details
36
37
38
|
# File 'lib/protobuf/generators/group_generator.rb', line 36
def (type, message)
@comments[type] = message
end
|
#add_enums(enum_descriptors, options) ⇒ Object
30
31
32
33
34
|
# File 'lib/protobuf/generators/group_generator.rb', line 30
def add_enums(enum_descriptors, options)
enum_descriptors.each do |enum_descriptor|
@groups[:enum] << EnumGenerator.new(enum_descriptor, indent_level, options)
end
end
|
#add_extended_messages(extended_messages, skip_empty_fields = true) ⇒ Object
40
41
42
43
44
45
|
# File 'lib/protobuf/generators/group_generator.rb', line 40
def add_extended_messages(extended_messages, skip_empty_fields = true)
extended_messages.each do |message_type, field_descriptors|
next if skip_empty_fields && field_descriptors.empty?
@groups[:extended_message] << ExtensionGenerator.new(message_type, field_descriptors, indent_level)
end
end
|
#add_extension_fields(field_descriptors) ⇒ Object
47
48
49
50
51
|
# File 'lib/protobuf/generators/group_generator.rb', line 47
def add_extension_fields(field_descriptors)
field_descriptors.each do |field_descriptor|
@groups[:extension_field] << FieldGenerator.new(field_descriptor, nil, indent_level)
end
end
|
#add_extension_ranges(extension_ranges, &item_handler) ⇒ Object
53
54
55
56
|
# File 'lib/protobuf/generators/group_generator.rb', line 53
def add_extension_ranges(extension_ranges, &item_handler)
@groups[:extension_range] = extension_ranges
@handlers[:extension_range] = item_handler
end
|
58
59
60
|
# File 'lib/protobuf/generators/group_generator.rb', line 58
def (type, message)
@headers[type] = message
end
|
#add_message_declarations(descriptors) ⇒ Object
62
63
64
65
66
67
68
|
# File 'lib/protobuf/generators/group_generator.rb', line 62
def add_message_declarations(descriptors)
descriptors.each do |descriptor|
next if descriptor.options.try(:map_entry?) { false }
@groups[:message_declaration] << MessageGenerator.new(descriptor, indent_level, :declaration => true)
end
end
|
#add_message_fields(field_descriptors, msg_descriptor) ⇒ Object
70
71
72
73
74
|
# File 'lib/protobuf/generators/group_generator.rb', line 70
def add_message_fields(field_descriptors, msg_descriptor)
field_descriptors.each do |field_descriptor|
@groups[:field] << FieldGenerator.new(field_descriptor, msg_descriptor, indent_level)
end
end
|
#add_messages(descriptors, options = {}) ⇒ Object
76
77
78
79
80
81
82
|
# File 'lib/protobuf/generators/group_generator.rb', line 76
def add_messages(descriptors, options = {})
descriptors.each do |descriptor|
next if descriptor.options.try(:map_entry?) { false }
@groups[:message] << MessageGenerator.new(descriptor, indent_level, options)
end
end
|
#add_options(option_descriptor) ⇒ Object
26
27
28
|
# File 'lib/protobuf/generators/group_generator.rb', line 26
def add_options(option_descriptor)
@groups[:options] << OptionGenerator.new(option_descriptor, indent_level)
end
|
#add_services(service_descriptors) ⇒ Object
84
85
86
87
88
|
# File 'lib/protobuf/generators/group_generator.rb', line 84
def add_services(service_descriptors)
service_descriptors.each do |service_descriptor|
@groups[:service] << ServiceGenerator.new(service_descriptor, indent_level)
end
end
|
#compile ⇒ Object
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/protobuf/generators/group_generator.rb', line 90
def compile
@order.each do |type|
items = @groups[type]
next if items.empty?
item_handler = @handlers[type]
= @headers[type]
() if
= @comments[type]
() if
items.each do |item|
if item_handler
puts item_handler.call(item)
else
print item.to_s
end
end
puts if type == :message_declaration || type == :options
end
end
|
#to_s ⇒ Object
115
116
117
118
|
# File 'lib/protobuf/generators/group_generator.rb', line 115
def to_s
compile
print_contents
end
|