class Protobuf::Generators::GroupGenerator

Attributes

groups[R]
indent_level[R]
order[W]

Public Class Methods

new(indent_level = 0) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 14
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

Public Instance Methods

add_comment(type, message) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 30
def add_comment(type, message)
  @comments[type] = message
end
add_enums(enum_descriptors, options) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 24
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) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 34
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) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 40
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) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 46
def add_extension_ranges(extension_ranges, &item_handler)
  @groups[:extension_range] = extension_ranges
  @handlers[:extension_range] = item_handler
end
add_header(type, message) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 51
def add_header(type, message)
  @headers[type] = message
end
add_message_declarations(descriptors) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 55
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) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 61
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 = {}) click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 67
def add_messages(descriptors, options = {})
  descriptors.each do |descriptor|
    @groups[:message] << MessageGenerator.new(descriptor, indent_level, options)
  end
end
compile() click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 73
def compile
  @order.each do |type|
    items = @groups[type]
    next if items.empty?

    item_handler = @handlers[type]

    item_header = @headers[type]
    header(item_header) if item_header

    item_comment = @comments[type]
    comment(item_comment) if item_comment

    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() click to toggle source
# File lib/protobuf/generators/group_generator.rb, line 98
def to_s
  compile
  print_contents
end