diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-26 23:55:41 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-26 23:55:41 +0100 |
commit | f1d432892ce158490bb564ba3d01982772439a81 (patch) | |
tree | 043c13b3505ee87cc0a04af9f87b663aef7f7402 /src/core/CSS.cpp | |
parent | a453da28ddc856176747927a47d21af2bd4d4909 (diff) |
Renamed CSS to Style (finally)
Diffstat (limited to 'src/core/CSS.cpp')
-rw-r--r-- | src/core/CSS.cpp | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/src/core/CSS.cpp b/src/core/CSS.cpp deleted file mode 100644 index c42cf6c..0000000 --- a/src/core/CSS.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "CSS.hpp" - -namespace ousia { - -void RuleSet::merge(Rooted<RuleSet> other){ - for(auto& o : other->rules){ - rules[o.first] = o.second; - } -} - -/* - * different versions of "getChildren". - */ - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const SelectionOperator *op, const std::string *className, - const PseudoSelector *select) -{ - std::vector<Rooted<SelectorNode>> out; - for (auto &e : edges) { - if (op && e->getSelectionOperator() != *op) { - continue; - } - if (className && e->getTarget()->getName() != *className) { - continue; - } - if (select && e->getTarget()->getPseudoSelector() != *select) { - continue; - } - out.push_back(e->getTarget()); - } - return out; -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const SelectionOperator &op, const std::string &className, - const PseudoSelector &select) -{ - return getChildren(&op, &className, &select); -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const std::string &className, const PseudoSelector &select) -{ - return getChildren(nullptr, &className, &select); -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const SelectionOperator &op, const PseudoSelector &select) -{ - return getChildren(&op, nullptr, &select); -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const SelectionOperator &op, const std::string &className) -{ - return getChildren(&op, &className, nullptr); -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const SelectionOperator &op) -{ - return getChildren(&op, nullptr, nullptr); -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const std::string &className) -{ - return getChildren(nullptr, &className, nullptr); -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren( - const PseudoSelector &select) -{ - return getChildren(nullptr, nullptr, &select); -} - -std::vector<Rooted<SelectorNode>> SelectorNode::getChildren() -{ - return getChildren(nullptr, nullptr, nullptr); -} - -/* - * append - */ - -std::vector<Rooted<SelectorNode>> SelectorNode::append( - Handle<SelectorEdge> edge) -{ - std::vector<Rooted<SelectorNode>> out; - // look if we already have a child in an equivalent edge. - std::vector<Rooted<SelectorNode>> children = - getChildren(edge->getSelectionOperator(), edge->getTarget()->getName(), - edge->getTarget()->getPseudoSelector()); - // note that this can only be one child or no child. - if (children.empty()) { - // if there is no child the appending process is trivial: We can just - // add the whole subtree represented by the other node as child here. - edges.push_back(edge); - } else { - // otherwise we start the appending process recursively on the child - // level. - // TODO: RuleSet merging - if (edge->getTarget()->getEdges().empty()) { - // if there are no more subsequent edges this is a leafe we could - // not merge, because it is already present in the Tree. - out.push_back(children[0]); - } else { - // otherwise we go into recursion. - for (auto &e : edge->getTarget()->getEdges()) { - Rooted<SelectorEdge> e2 {e}; - std::vector<Rooted<SelectorNode>> childLeafs = - children[0]->append(e2); - out.insert(out.end(), childLeafs.begin(), childLeafs.end()); - } - } - } - return out; -} - -std::vector<Rooted<SelectorNode>> SelectorNode::append(Handle<SelectorNode> node){ - return append(new SelectorEdge{this->getManager(), node}); -} -} |