Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
987 B
43 lines
987 B
2 years ago
|
#! /usr/bin/env ruby
|
||
|
|
||
|
require './addressbook_pb'
|
||
|
require 'pry'
|
||
|
|
||
|
# Iterates though all people in the AddressBook and prints info about them.
|
||
|
def list_people(address_book)
|
||
|
address_book.people.each do |person|
|
||
|
puts "Person ID: #{person.id}"
|
||
|
puts " Name: #{person.name}"
|
||
|
if person.email != ""
|
||
|
puts " Email: #{person.email}"
|
||
|
end
|
||
|
|
||
|
person.phones.each do |phone_number|
|
||
|
type =
|
||
|
case phone_number.type
|
||
|
when :MOBILE
|
||
|
"Mobile phone"
|
||
|
when :HOME
|
||
|
"Home phone"
|
||
|
when :WORK
|
||
|
"Work phone"
|
||
|
end
|
||
|
puts " #{type} #: #{phone_number.number}"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Main procedure: Reads the entire address book from a file and prints all
|
||
|
# the information inside.
|
||
|
if ARGV.length != 1
|
||
|
puts "Usage: #{$PROGRAM_NAME} ADDRESS_BOOK_FILE"
|
||
|
exit(-1)
|
||
|
end
|
||
|
|
||
|
# Read the existing address book.
|
||
|
f = File.open(ARGV[0], "rb")
|
||
|
address_book = Tutorial::AddressBook.decode(f.read)
|
||
|
f.close
|
||
|
|
||
|
list_people(address_book)
|