yash_env/decl_util.rs
1// This file is part of yash, an extended POSIX shell.
2// Copyright (C) 2024 WATANABE Yuki
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <https://www.gnu.org/licenses/>.
16
17//! Implementation of declaration utility glossary for the environment
18
19use crate::Env;
20use yash_syntax::decl_util::Glossary;
21
22/// Determines whether a command name is a declaration utility.
23///
24/// This implementation looks up the command name in `self.builtins` and returns
25/// the value of `is_declaration_utility` if the built-in is found. Otherwise,
26/// the command is not a declaration utility.
27impl Glossary for Env {
28 fn is_declaration_utility(&self, name: &str) -> Option<bool> {
29 match self.builtins.get(name) {
30 Some(builtin) => builtin.is_declaration_utility,
31 None => Some(false),
32 }
33 }
34}