Esempio n. 1
0
        public static string normalize(string path)
        {
            unchecked {
                                #line 211 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                string slash = "/";
                path = global::haxe.lang.StringExt.split(path, "\\").@join(slash);
                                #line 213 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                if ((path == slash))
                {
                                        #line 214 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                    return(slash);
                }

                                #line 216 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                global::haxe.root.Array target = new global::haxe.root.Array(new object[] {});
                                #line 218 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                {
                                        #line 218 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                    int _g = 0;
                                        #line 218 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                    global::haxe.root.Array _g1 = global::haxe.lang.StringExt.split(path, slash);
                                        #line 218 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                    while ((_g < _g1.length))
                    {
                                                #line 218 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        string token = global::haxe.lang.Runtime.toString(_g1.__get(_g));
                                                #line 218 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        ++_g;
                        if ((((token == "..") && (target.length > 0)) && (global::haxe.lang.Runtime.toString(target.__get((target.length - 1))) != "..")))
                        {
                                                        #line 220 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            string __temp_expr1 = global::haxe.lang.Runtime.toString(target.pop());
                        }
                        else if ((token == ""))
                        {
                                                        #line 222 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            if (((target.length > 0) || global::haxe.lang.Runtime.eq(global::haxe.lang.StringExt.charCodeAt(path, 0), 47)))
                            {
                                                                #line 223 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                target.push(token);
                            }
                        }
                        else if ((token != "."))
                        {
                                                        #line 226 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            target.push(token);
                        }
                    }
                }

                                #line 230 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                string tmp = target.@join(slash);
                global::haxe.root.StringBuf acc = new global::haxe.root.StringBuf();
                                #line 232 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                bool colon   = false;
                bool slashes = false;
                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                {
                                        #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                    int _g2_offset = 0;
                                        #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                    string _g2_s = tmp;
                                        #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                    while ((_g2_offset < _g2_s.Length))
                    {
                                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        string s = _g2_s;
                                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        int index = _g2_offset++;
                                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        int c = ((((bool)((((uint)(index)) < s.Length)))) ? (((int)(s[index]))) : (-1));
                                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        if (((c >= 55296) && (c <= 56319)))
                        {
                                                        #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            int index1 = (index + 1);
                                                        #line 606 "C:\\HaxeToolkit\\haxe\\std\\StringTools.hx"
                            c = (((c - 55232) << 10) | ((((((bool)((((uint)(index1)) < s.Length)))) ? (((int)(s[index1]))) : (-1))) & 1023));
                        }

                                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        int c1 = c;
                                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        if ((c1 >= 65536))
                        {
                                                        #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            ++_g2_offset;
                        }

                                                #line 235 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                        int c2 = c1;
                        switch (c2)
                        {
                        case 47:
                        {
                                                                #line 244 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            if (!(colon))
                            {
                                                                        #line 245 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                slashes = true;
                            }
                            else
                            {
                                                                        #line 246 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                int i = c2;
                                                                        #line 246 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                {
                                                                                #line 247 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                    colon = false;
                                    if (slashes)
                                    {
                                                                                        #line 249 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                        acc.b.Append(((string)("/")));
                                        slashes = false;
                                    }

                                                                                #line 252 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                    acc.addChar(i);
                                }
                            }

                                                                #line 244 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            break;
                        }


                        case 58:
                        {
                                                                #line 242 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            acc.b.Append(((string)(":")));
                            colon = true;
                                                                #line 241 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            break;
                        }


                        default:
                        {
                                                                #line 246 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            int i1 = c2;
                                                                #line 246 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            {
                                                                        #line 247 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                colon = false;
                                if (slashes)
                                {
                                                                                #line 249 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                    acc.b.Append(((string)("/")));
                                    slashes = false;
                                }

                                                                        #line 252 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                                acc.addChar(i1);
                            }

                                                                #line 246 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                            break;
                        }
                        }
                    }
                }

                                #line 256 "C:\\HaxeToolkit\\haxe\\std\\haxe\\io\\Path.hx"
                return(acc.b.ToString());
            }
                        #line default
        }