MCPcopy Create free account
hub / github.com/PHPantom-dev/phpantom_lsp / extract_dates_definitions

Function extract_dates_definitions

src/parser/classes.rs:723–754  ·  view source on GitHub ↗

Extract column names from the deprecated `$dates` property array. Before `$casts`, Laravel used `protected $dates = [...]` to mark columns as Carbon instances. Each column listed here should be typed as `\Carbon\Carbon` by the virtual member provider.

(
    members: impl Iterator<Item = &'a ClassLikeMember<'a>>,
    content: &str,
)

Source from the content-addressed store, hash-verified

721/// columns as Carbon instances. Each column listed here should be
722/// typed as `\Carbon\Carbon` by the virtual member provider.
723fn extract_dates_definitions<'a>(
724 members: impl Iterator<Item = &'a ClassLikeMember<'a>>,
725 content: &str,
726) -> Vec<String> {
727 let mut names = Vec::new();
728
729 for member in members {
730 if let ClassLikeMember::Property(Property::Plain(plain)) = member {
731 for item in plain.items.iter() {
732 let var_name = item.variable().name.to_string();
733 let stripped = var_name.strip_prefix('$').unwrap_or(&var_name);
734 if stripped != "dates" {
735 continue;
736 }
737 if let PropertyItem::Concrete(concrete) = item {
738 let span = concrete.value.span();
739 let start = span.start.offset as usize;
740 let end = span.end.offset as usize;
741 if let Some(text) = content.get(start..end) {
742 for name in parse_string_list(text) {
743 if !names.contains(&name) {
744 names.push(name);
745 }
746 }
747 }
748 }
749 }
750 }
751 }
752
753 names
754}
755
756/// Parse a PHP array literal containing only string values.
757///

Callers 1

Calls 5

parse_string_listFunction · 0.85
iterMethod · 0.80
containsMethod · 0.80
pushMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected