1use once_cell::sync::Lazy;
2
3use super::env_overrides::read_env_fraction;
4
5pub struct NeedsConfig {
6 pub min_symbol_length: usize,
7 pub background_min_ident_length: usize,
8
9 pub definition_priority: f64,
10 pub call_definition_priority: f64,
11 pub signature_priority: f64,
12 pub impact_priority: f64,
13 pub invariant_priority: f64,
14 pub test_priority: f64,
15 pub background_priority: f64,
16 pub concept_background_priority: f64,
17 pub fallback_priority: f64,
18 pub identifier_default_priority: f64,
19
20 pub defines_scope_match: f64,
21 pub defines_no_scope: f64,
22 pub defines_other_scope: f64,
23 pub impact_scope_match: f64,
24 pub impact_mentions: f64,
25 pub signature_defines: f64,
26 pub test_mentions: f64,
27 pub mentions_fallback: f64,
28
29 pub min_rel_for_bonus: f64,
30 pub relatedness_bonus: f64,
31}
32
33impl Default for NeedsConfig {
34 fn default() -> Self {
35 Self {
36 min_symbol_length: 3,
37 background_min_ident_length: 5,
38
39 definition_priority: 0.9,
40 call_definition_priority: 1.0,
41 signature_priority: 0.7,
42 impact_priority: 0.8,
43 invariant_priority: 0.85,
44 test_priority: 0.6,
45 background_priority: 0.2,
46 concept_background_priority: 0.3,
47 fallback_priority: 0.5,
48 identifier_default_priority: 0.5,
49
50 defines_scope_match: 1.0,
51 defines_no_scope: 0.5,
52 defines_other_scope: 0.3,
53 impact_scope_match: 0.15,
54 impact_mentions: 0.8,
55 signature_defines: 0.7,
56 test_mentions: 0.6,
57 mentions_fallback: 0.3,
58
59 min_rel_for_bonus: read_env_fraction("DIFFCTX_MIN_REL_FOR_BONUS", 0.03),
60 relatedness_bonus: read_env_fraction("DIFFCTX_RELATEDNESS_BONUS", 0.25),
61 }
62 }
63}
64
65pub static NEEDS: Lazy<NeedsConfig> = Lazy::new(NeedsConfig::default);