diff options
Diffstat (limited to 'parser/htmlparser/nsParserService.cpp')
-rw-r--r-- | parser/htmlparser/nsParserService.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/parser/htmlparser/nsParserService.cpp b/parser/htmlparser/nsParserService.cpp new file mode 100644 index 0000000000..d89badd01d --- /dev/null +++ b/parser/htmlparser/nsParserService.cpp @@ -0,0 +1,99 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsError.h" +#include "nsIAtom.h" +#include "nsParserService.h" +#include "nsHTMLEntities.h" +#include "nsElementTable.h" +#include "nsICategoryManager.h" +#include "nsCategoryManagerUtils.h" + +nsParserService::nsParserService() +{ +} + +nsParserService::~nsParserService() +{ +} + +NS_IMPL_ISUPPORTS(nsParserService, nsIParserService) + +int32_t +nsParserService::HTMLAtomTagToId(nsIAtom* aAtom) const +{ + return nsHTMLTags::LookupTag(nsDependentAtomString(aAtom)); +} + +int32_t +nsParserService::HTMLCaseSensitiveAtomTagToId(nsIAtom* aAtom) const +{ + return nsHTMLTags::CaseSensitiveLookupTag(aAtom); +} + +int32_t +nsParserService::HTMLStringTagToId(const nsAString& aTag) const +{ + return nsHTMLTags::LookupTag(aTag); +} + +const char16_t* +nsParserService::HTMLIdToStringTag(int32_t aId) const +{ + return nsHTMLTags::GetStringValue((nsHTMLTag)aId); +} + +nsIAtom* +nsParserService::HTMLIdToAtomTag(int32_t aId) const +{ + return nsHTMLTags::GetAtom((nsHTMLTag)aId); +} + +NS_IMETHODIMP +nsParserService::HTMLConvertEntityToUnicode(const nsAString& aEntity, + int32_t* aUnicode) const +{ + *aUnicode = nsHTMLEntities::EntityToUnicode(aEntity); + + return NS_OK; +} + +NS_IMETHODIMP +nsParserService::HTMLConvertUnicodeToEntity(int32_t aUnicode, + nsCString& aEntity) const +{ + const char* str = nsHTMLEntities::UnicodeToEntity(aUnicode); + if (str) { + aEntity.Assign(str); + } + + return NS_OK; +} + +NS_IMETHODIMP +nsParserService::IsContainer(int32_t aId, bool& aIsContainer) const +{ + aIsContainer = nsHTMLElement::IsContainer((eHTMLTags)aId); + + return NS_OK; +} + +NS_IMETHODIMP +nsParserService::IsBlock(int32_t aId, bool& aIsBlock) const +{ + if((aId>eHTMLTag_unknown) && (aId<eHTMLTag_userdefined)) { + aIsBlock=((gHTMLElements[aId].IsMemberOf(kBlock)) || + (gHTMLElements[aId].IsMemberOf(kBlockEntity)) || + (gHTMLElements[aId].IsMemberOf(kHeading)) || + (gHTMLElements[aId].IsMemberOf(kPreformatted))|| + (gHTMLElements[aId].IsMemberOf(kList))); + } + else { + aIsBlock = false; + } + + return NS_OK; +} |