]>
git.saurik.com Git - apple/javascriptcore.git/blob - wtf/url/api/ParsedURL.cpp
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #include "ParsedURL.h"
29 #include "URLComponent.h"
30 #include "URLParser.h"
34 ParsedURL::ParsedURL(const URLString
& spec
)
37 // FIXME: Handle non-standard URLs.
38 if (spec
.string().isEmpty())
40 URLParser
<UChar
>::parseStandardURL(spec
.string().characters(), spec
.string().length(), m_segments
);
43 String
ParsedURL::scheme() const
45 return segment(m_segments
.scheme
);
48 String
ParsedURL::username() const
50 return segment(m_segments
.username
);
53 String
ParsedURL::password() const
55 return segment(m_segments
.password
);
58 String
ParsedURL::host() const
60 return segment(m_segments
.host
);
63 String
ParsedURL::port() const
65 return segment(m_segments
.port
);
68 String
ParsedURL::path() const
70 return segment(m_segments
.path
);
73 String
ParsedURL::query() const
75 return segment(m_segments
.query
);
78 String
ParsedURL::fragment() const
80 return segment(m_segments
.fragment
);
83 String
ParsedURL::segment(const URLComponent
& component
) const
85 if (!component
.isValid())
87 return m_spec
.string().substring(component
.begin(), component
.length());