1+ /*
2+ * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3+ * SPDX-License-Identifier: Apache-2.0
4+ */
5+
16mod input_field;
27
38use self :: input_field:: InputField ;
@@ -8,6 +13,7 @@ pub struct DialectInput {
813 name : String ,
914 files : Vec < String > ,
1015 directories : Vec < String > ,
16+ directory_env_vars : Vec < String > ,
1117}
1218
1319impl DialectInput {
@@ -22,13 +28,18 @@ impl DialectInput {
2228 pub fn directories ( & self ) -> impl Iterator < Item = & str > {
2329 self . directories . iter ( ) . map ( Deref :: deref)
2430 }
31+
32+ pub fn directory_env_vars ( & self ) -> impl Iterator < Item = & str > {
33+ self . directory_env_vars . iter ( ) . map ( Deref :: deref)
34+ }
2535}
2636
2737impl Parse for DialectInput {
2838 fn parse ( input : syn:: parse:: ParseStream ) -> syn:: Result < Self > {
2939 let mut name = None ;
3040 let mut files = vec ! [ ] ;
3141 let mut directories = vec ! [ ] ;
42+ let mut directory_env_vars = vec ! [ ] ;
3243
3344 for item in Punctuated :: < InputField , Token ! [ , ] > :: parse_terminated ( input) ? {
3445 match item {
@@ -39,13 +50,17 @@ impl Parse for DialectInput {
3950 InputField :: Directories ( field) => {
4051 directories = field. into_iter ( ) . map ( |literal| literal. value ( ) ) . collect ( )
4152 }
53+ InputField :: DirectoryEnvVars ( field) => {
54+ directory_env_vars = field. into_iter ( ) . map ( |literal| literal. value ( ) ) . collect ( )
55+ }
4256 }
4357 }
4458
4559 Ok ( Self {
4660 name : name. ok_or_else ( || input. error ( "dialect name required" ) ) ?,
4761 files,
4862 directories,
63+ directory_env_vars
4964 } )
5065 }
5166}
0 commit comments