summaryrefslogtreecommitdiffstats
path: root/parser/htmlparser/nsParserService.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'parser/htmlparser/nsParserService.cpp')
-rw-r--r--parser/htmlparser/nsParserService.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/parser/htmlparser/nsParserService.cpp b/parser/htmlparser/nsParserService.cpp
new file mode 100644
index 000000000..d89badd01
--- /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;
+}