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.
15
16
17
18
19
20
21
22
23
|
# File 'lib/protobuf/generators/group_generator.rb', line 15
def initialize(indent_level = 0)
@groups = Hash.new { |h, k| h[k] = [] }
@headers = {}
@comments = {}
@handlers = {}
@indent_level = indent_level
@order = [:enum, :message_declaration, :message, :extended_message, :service]
init_printer(indent_level)
end
|
Instance Attribute Details
#groups ⇒ Object
Returns the value of attribute groups.
12
13
14
|
# File 'lib/protobuf/generators/group_generator.rb', line 12
def groups
@groups
end
|
#indent_level ⇒ Object
Returns the value of attribute indent_level.
12
13
14
|
# File 'lib/protobuf/generators/group_generator.rb', line 12
def indent_level
@indent_level
end
|
#order=(value) ⇒ Object
13
14
15
|
# File 'lib/protobuf/generators/group_generator.rb', line 13
def order=(value)
@order = value
end
|
Instance Method Details
31
32
33
|
# File 'lib/protobuf/generators/group_generator.rb', line 31
def (type, message)
@comments[type] = message
end
|
#add_enums(enum_descriptors, options) ⇒ Object
25
26
27
28
29
|
# File 'lib/protobuf/generators/group_generator.rb', line 25
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) ⇒ Object
35
36
37
38
39
|
# File 'lib/protobuf/generators/group_generator.rb', line 35
def add_extended_messages(extended_messages)
extended_messages.each do |message_type, field_descriptors|
@groups[:extended_message] << ExtensionGenerator.new(message_type, field_descriptors, indent_level)
end
end
|
#add_extension_fields(field_descriptors) ⇒ Object
41
42
43
44
45
|
# File 'lib/protobuf/generators/group_generator.rb', line 41
def add_extension_fields(field_descriptors)
field_descriptors.each do |field_descriptor|
@groups[:extension_field] << FieldGenerator.new(field_descriptor, indent_level)
end
end
|
#add_extension_ranges(extension_ranges, &item_handler) ⇒ Object
47
48
49
50
|
# File 'lib/protobuf/generators/group_generator.rb', line 47
def add_extension_ranges(extension_ranges, &item_handler)
@groups[:extension_range] = extension_ranges
@handlers[:extension_range] = item_handler
end
|
52
53
54
|
# File 'lib/protobuf/generators/group_generator.rb', line 52
def (type, message)
@headers[type] = message
end
|
#add_message_declarations(descriptors) ⇒ Object
56
57
58
59
60
|
# File 'lib/protobuf/generators/group_generator.rb', line 56
def add_message_declarations(descriptors)
descriptors.each do |descriptor|
@groups[:message_declaration] << MessageGenerator.new(descriptor, indent_level, :declaration => true)
end
end
|
#add_message_fields(field_descriptors) ⇒ Object
62
63
64
65
66
|
# File 'lib/protobuf/generators/group_generator.rb', line 62
def add_message_fields(field_descriptors)
field_descriptors.each do |field_descriptor|
@groups[:field] << FieldGenerator.new(field_descriptor, indent_level)
end
end
|
#add_messages(descriptors, options = {}) ⇒ Object
68
69
70
71
72
|
# File 'lib/protobuf/generators/group_generator.rb', line 68
def add_messages(descriptors, options = {})
descriptors.each do |descriptor|
@groups[:message] << MessageGenerator.new(descriptor, indent_level, options)
end
end
|
#add_services(service_descriptors) ⇒ Object
74
75
76
77
78
|
# File 'lib/protobuf/generators/group_generator.rb', line 74
def add_services(service_descriptors)
service_descriptors.each do |service_descriptor|
@groups[:service] << ServiceGenerator.new(service_descriptor, indent_level)
end
end
|
#compile ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/protobuf/generators/group_generator.rb', line 80
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
end
end
|
#to_s ⇒ Object
105
106
107
108
|
# File 'lib/protobuf/generators/group_generator.rb', line 105
def to_s
compile
print_contents
end
|