1 use crate::descriptor::FileDescriptorProto; 2 3 /// `.proto` file syntax. 4 #[derive(Debug, Copy, Clone, PartialEq, Eq)] 5 pub enum Syntax { 6 /// `syntax = "proto2"`. 7 Proto2, 8 /// `syntax = "proto3"`. 9 Proto3, 10 } 11 12 impl Syntax { parse(syntax: &str) -> Option<Syntax>13 pub(crate) fn parse(syntax: &str) -> Option<Syntax> { 14 match syntax { 15 "" | "proto2" => Some(Syntax::Proto2), 16 "proto3" => Some(Syntax::Proto3), 17 _ => None, 18 } 19 } 20 of_file(file: &FileDescriptorProto) -> Syntax21 pub(crate) fn of_file(file: &FileDescriptorProto) -> Syntax { 22 Syntax::parse(file.syntax()).unwrap_or(Syntax::Proto2) 23 } 24 } 25