MCPcopy Index your code
hub / github.com/AI45Lab/Code / parse_object

Method parse_object

core/src/tools/builtin/bash.rs:848–881  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

846 }
847
848 fn parse_object(&mut self) -> Option<String> {
849 self.expect('{')?;
850 self.skip_ws();
851 let mut entries = Vec::new();
852 if self.peek() == Some('}') {
853 self.pos += 1;
854 return Some("{}".to_string());
855 }
856
857 loop {
858 self.skip_ws();
859 let key = match self.peek()? {
860 '"' | '\'' => self.parse_quoted_string()?,
861 _ => self.parse_bare_key()?,
862 };
863 self.skip_ws();
864 self.expect(':')?;
865 let value = self.parse_value()?;
866 entries.push(format!("{}:{}", serde_json::to_string(&key).ok()?, value));
867 self.skip_ws();
868 match self.peek()? {
869 ',' => {
870 self.pos += 1;
871 }
872 '}' => {
873 self.pos += 1;
874 break;
875 }
876 _ => return None,
877 }
878 }
879
880 Some(format!("{{{}}}", entries.join(",")))
881 }
882
883 fn parse_array(&mut self) -> Option<String> {
884 self.expect('[')?;

Callers 1

parse_valueMethod · 0.80

Calls 6

expectMethod · 0.80
skip_wsMethod · 0.80
peekMethod · 0.80
parse_quoted_stringMethod · 0.80
parse_bare_keyMethod · 0.80
parse_valueMethod · 0.80

Tested by

no test coverage detected