MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / parse_inner_impl

Method parse_inner_impl

src/avro/src/schema.rs:988–1010  ·  view source on GitHub ↗
(
        &mut self,
        default_namespace: &str,
        value: &Value,
    )

Source from the content-addressed store, hash-verified

986 }
987
988 fn parse_inner_impl(
989 &mut self,
990 default_namespace: &str,
991 value: &Value,
992 ) -> Result<SchemaPieceOrNamed, AvroError> {
993 match *value {
994 Value::String(ref t) => {
995 let name = FullName::from_parts(t.as_str(), None, default_namespace);
996 if let Some(idx) = self.indices.get(&name) {
997 Ok(SchemaPieceOrNamed::Named(*idx))
998 } else {
999 Ok(SchemaPieceOrNamed::Piece(Schema::parse_primitive(
1000 t.as_str(),
1001 )?))
1002 }
1003 }
1004 Value::Object(ref data) => self.parse_complex(default_namespace, data),
1005 Value::Array(ref data) => Ok(SchemaPieceOrNamed::Piece(
1006 self.parse_union(default_namespace, data)?,
1007 )),
1008 _ => Err(ParseSchemaError::new("Must be a JSON string, object or array").into()),
1009 }
1010 }
1011
1012 fn alloc_name(&mut self, fullname: FullName) -> Result<usize, AvroError> {
1013 let idx = match self.indices.entry(fullname) {

Callers 1

parse_innerMethod · 0.80

Calls 4

parse_complexMethod · 0.80
parse_unionMethod · 0.80
as_strMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected