stof 0.3.5

Stof is a unified data interface and interchange format for creating, sharing, and manipulating data. Stof removes the fragile and cumbersome parts of combining and using data in applications.
Documentation
//
// Copyright 2024 Formata, Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//


refpath: {
    child: {
        field: 'hello'
    }
    refchild: {
        ref super.child

        #[test]
        fn refpath() {
            assertEq(self.child.field, 'hello');
        }
    }
    fieldchild: {
        field: super.child

        #[test]
        fn fieldpath() {
            assertEq(self.field.field, 'hello');
        }
    }
}

relative: {
    field: 42

    child: {
        field: 30

        another: {
            field: 10

            #[test]
            fn paths() {
                assertEq(self.field, 10);
                assertEq(super.field, 30);
                assertEq(super.super.field, 42);

                assertEq(self.self.self.self.field, 10);
                assertEq(self.super.self.another.field, 10);
                assertEq(super.super.child.another.field, 10);
            }
        }
    }
}

absolute: {
    field: 42

    #[test]
    fn paths() {
        assertEq(Objects.Paths.absolute.field, 42);
    }
}