Pchp.Library.PhpPath.pathinfo C# (CSharp) Method

pathinfo() public static method

Extracts part(s) from a specified path.
public static pathinfo ( string path, PathInfoOptions options = PathInfoOptions.All ) : PhpValue
path string The path to be parsed.
options PathInfoOptions Flags determining the result.
return Pchp.Core.PhpValue
        public static PhpValue pathinfo(string path, PathInfoOptions options = PathInfoOptions.All)
        {
            // collect strings
            string dirname = null, basename = null, extension = null, filename = null;

            if ((options & PathInfoOptions.BaseName) != 0 ||
                (options & PathInfoOptions.Extension) != 0 ||
                (options & PathInfoOptions.FileName) != 0)
                basename = PhpPath.basename(path);

            if ((options & PathInfoOptions.DirName) != 0)
                dirname = PhpPath.dirname(path);

            if ((options & PathInfoOptions.Extension) != 0)
            {
                int last_dot = basename.LastIndexOf('.');
                if (last_dot >= 0)
                    extension = basename.Substring(last_dot + 1);
            }

            if ((options & PathInfoOptions.FileName) != 0)
            {
                int last_dot = basename.LastIndexOf('.');
                if (last_dot >= 0)
                    filename = basename.Substring(0, last_dot);
                else
                    filename = basename;
            }

            // return requested value or all of them in an associative array
            if (options == PathInfoOptions.All)
            {
                PhpArray result = new PhpArray(0, 4);
                result.Add("dirname", dirname);
                result.Add("basename", basename);
                result.Add("extension", extension);
                result.Add("filename", filename);
                return PhpValue.Create(result);
            }

            if ((options & PathInfoOptions.DirName) != 0)
                return PhpValue.Create(dirname);

            if ((options & PathInfoOptions.BaseName) != 0)
                return PhpValue.Create(basename);

            if ((options & PathInfoOptions.Extension) != 0)
                return PhpValue.Create(extension);

            if ((options & PathInfoOptions.FileName) != 0)
                return PhpValue.Create(filename);

            return PhpValue.Null;
        }