MCPcopy Create free account
hub / github.com/apache/datafusion / format_unsigned

Method format_unsigned

datafusion/spark/src/function/string/format_string.rs:1938–2003  ·  view source on GitHub ↗
(&self, writer: &mut String, value: u64)

Source from the content-addressed store, hash-verified

1936 }
1937
1938 fn format_unsigned(&self, writer: &mut String, value: u64) -> Result<()> {
1939 let mut s = String::new();
1940 let mut alt_prefix = "";
1941 match self.conversion_type {
1942 ConversionType::DecInt => {
1943 let num_str = format!("{value}");
1944 s = if self.grouping_separator {
1945 insert_thousands_separator(&num_str)
1946 } else {
1947 num_str
1948 };
1949 }
1950 ConversionType::HexIntLower => {
1951 alt_prefix = "0x";
1952 write!(&mut s, "{value:x}")
1953 .map_err(|e| exec_datafusion_err!("Write error: {}", e))?;
1954 }
1955 ConversionType::HexIntUpper => {
1956 alt_prefix = "0X";
1957 write!(&mut s, "{value:X}")
1958 .map_err(|e| exec_datafusion_err!("Write error: {}", e))?;
1959 }
1960 ConversionType::OctInt => {
1961 alt_prefix = "0";
1962 write!(&mut s, "{value:o}")
1963 .map_err(|e| exec_datafusion_err!("Write error: {}", e))?;
1964 }
1965 _ => {
1966 return exec_err!(
1967 "Invalid conversion type: {:?} for u64",
1968 self.conversion_type
1969 );
1970 }
1971 }
1972 let mut prefix = if self.alt_form {
1973 alt_prefix.to_owned()
1974 } else {
1975 String::new()
1976 };
1977
1978 let formatted = if let NumericParam::Literal(width) = self.width {
1979 if self.left_adj {
1980 let mut num_str = prefix + &s;
1981 while num_str.len() < width as usize {
1982 num_str.push(' ');
1983 }
1984 num_str
1985 } else if self.zero_pad {
1986 while prefix.len() + s.len() < width as usize {
1987 prefix.push('0');
1988 }
1989 prefix + &s
1990 } else {
1991 let mut num_str = prefix + &s;
1992 while num_str.len() < width as usize {
1993 num_str = " ".to_owned() + &num_str;
1994 }
1995 num_str

Callers 2

formatMethod · 0.80
format_signedMethod · 0.80

Calls 4

newFunction · 0.85
lenMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected