2 * Copyright (C) 2010 by Aiwota Programmer
3 * aiwotaprog@tetteke.tk
5 * This file is part of Dialektos.
7 * Dialektos is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * Dialektos is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Dialektos. If not, see <http://www.gnu.org/licenses/>.
21 #include "bbs_detail_yy.hxx"
23 #include <boost/filesystem.hpp>
24 #include <boost/xpressive/xpressive.hpp>
30 namespace bbs_detail {
33 const std::string YY::bbs_name = "yy";
35 YY* YY::judge(const std::string& uri) {
36 if (YY* bbs = judge_thread(uri)) return bbs;
37 if (YY* bbs = judge_board(uri)) return bbs;
41 YY* YY::judge_thread(const std::string& uri) {
42 using namespace boost::xpressive;
44 sregex regex = "http://" >> (s1=as_xpr("yy") >> repeat<2,2>(_d)
45 >> (as_xpr(".kakiko.com")|as_xpr(".60.kg")))
46 >> as_xpr("/test/read.cgi/")
48 >> '/' >> (s3=+_d) >> '/' >> -*(_d|'-');
51 if (!regex_match(uri, what, regex))
54 const std::string host = what[1];
55 const std::string board = what[2];
56 const std::string thread = what[3];
58 return new YY(uri, host, board, thread);
61 YY* YY::judge_board(const std::string& uri) {
62 using namespace boost::xpressive;
64 sregex regex = "http://" >> (s1=as_xpr("yy") >> repeat<2,2>(_d)
65 >> (as_xpr(".kakiko.com")|as_xpr(".60.kg"))) >> as_xpr('/')
66 >> (s2=+_w) >> '/' >> -*_w;
69 if (!regex_match(uri, what, regex))
72 const std::string host = what[1];
73 const std::string board = what[2];
75 return new YY(uri, host, board, "");
79 YY::YY(const std::string& uri, const std::string& host,
80 const std::string& board, const std::string& thread) :
81 Base(uri, host, board, thread) {}
83 YY::YY(const YY& rhs) : Base(rhs) {}
87 YY* YY::do_clone() const {
91 const std::string& YY::get_bbs_name() const {
95 } // namespace bbs_detail
97 } // namespace dialektos