2 * Copyright (C) 2009 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_2ch.hxx"
23 #include <boost/filesystem.hpp>
24 #include <boost/xpressive/xpressive.hpp>
30 namespace bbs_detail {
33 const std::string CH2::bbs_name = "2ch";
35 CH2* CH2::judge(const std::string& uri) {
36 if (CH2* bbs = judge_thread(uri)) return bbs;
37 if (CH2* bbs = judge_board(uri)) return bbs;
41 CH2* CH2::judge_thread(const std::string& uri) {
42 using namespace boost::xpressive;
44 sregex regex = "http://" >> (s1=+(_w|'-')) >> ".2ch.net/test/read.cgi/" >> (s2=+_w)
45 >> '/' >> (s3=+_d) >> '/' >> -*(_d|'-');
48 if (!regex_match(uri, what, regex))
51 const std::string host = what[1];
52 const std::string board = what[2];
53 const std::string thread = what[3];
55 return new CH2(uri, host, board, thread);
58 CH2* CH2::judge_board(const std::string& uri) {
59 using namespace boost::xpressive;
61 sregex regex = "http://" >> (s1=+(_w|'-')) >> ".2ch.net/" >> (s2=+_w) >> '/' >> -*_w;
64 if (!regex_match(uri, what, regex))
67 const std::string host = what[1];
68 const std::string board = what[2];
70 return new CH2(uri, host, board, "");
74 CH2::CH2(const std::string& uri, const std::string& host,
75 const std::string& board, const std::string& thread) :
76 Base(uri, host, board, thread) {}
78 CH2::CH2(const CH2& rhs) : Base(rhs) {}
82 CH2* CH2::do_clone(const CH2& rhs) const {
86 std::string CH2::get_board_dir_path() const {
87 std::string homedir = std::getenv("HOME");
88 boost::filesystem::path dir(homedir);
89 dir = dir / ".dialektos" / "logs" / get_bbs_name() / board_;
90 return dir.file_string();
94 const std::string& CH2::get_bbs_name() const {
98 } // namespace bbs_detail
100 } // namespace dialektos