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