sw/inc/AccessibilityCheckStrings.hrc         |    1 
 sw/source/core/access/AccessibilityCheck.cxx |   39 +++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)

New commits:
commit 129e0cfc4321974f9a3aa59489399dd2420d0ffc
Author:     Stefanenko <ivan.stefane...@collabora.com>
AuthorDate: Wed Sep 2 11:39:33 2020 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Thu Sep 3 10:24:54 2020 +0200

    tdf#136399 AccessibilityCheck: Inserted a new check
    
    A new check responsible for checking if the input forms are not formed by 
manual typing consecutive "_", "..." or "…".
    Made a new check class and inserted it into the main checking mechanism, 
also added a related string.
    
    Change-Id: I6ecc3878114dc432d43ce1ad27ea45d512366320
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101921
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sw/inc/AccessibilityCheckStrings.hrc 
b/sw/inc/AccessibilityCheckStrings.hrc
index e51f26c79e6f..874f910f324d 100644
--- a/sw/inc/AccessibilityCheckStrings.hrc
+++ b/sw/inc/AccessibilityCheckStrings.hrc
@@ -23,6 +23,7 @@
 #define STR_AVOID_ENDNOTES              NC_("STR_AVOID_ENDNOTES", "Avoid 
endnotes.")
 #define STR_HEADINGS_NOT_IN_ORDER       NC_("STR_HEADINGS_NOT_IN_ORDER", 
"Headings not in order.")
 #define STR_TEXT_FORMATTING_CONVEYS_MEANING 
NC_("STR_TEXT_FORMATTING_CONVEYS_MEANING", "The text formatting conveys 
additional meaning.")
+#define STR_NON_INTERACTIVE_FORMS       NC_("STR_NON_INTERACTIVE_FORMS", "An 
input form is not interactive.")
 
 #define STR_DOCUMENT_DEFAULT_LANGUAGE   NC_("STR_DOCUMENT_DEFAULT_LANGUAGE", 
"Document default language is not set")
 #define STR_STYLE_NO_LANGUAGE           NC_("STR_STYLE_NO_LANGUAGE", "Style 
'%STYLE_NAME%' has no language set")
diff --git a/sw/source/core/access/AccessibilityCheck.cxx 
b/sw/source/core/access/AccessibilityCheck.cxx
index 55f0e214bbe3..ab5d5e2aa29a 100644
--- a/sw/source/core/access/AccessibilityCheck.cxx
+++ b/sw/source/core/access/AccessibilityCheck.cxx
@@ -626,6 +626,44 @@ public:
     }
 };
 
+// ISO 142891-1 : 7.14
+class NonInteractiveFormCheck : public NodeCheck
+{
+public:
+    NonInteractiveFormCheck(sfx::AccessibilityIssueCollection& 
rIssueCollection)
+        : NodeCheck(rIssueCollection)
+    {
+    }
+
+    void check(SwNode* pCurrent) override
+    {
+        if (!pCurrent->IsTextNode())
+            return;
+
+        const auto& text = pCurrent->GetTextNode()->GetText();
+
+        // Series of tests to detect if there are fake forms in the text.
+
+        bool bCheck = text.indexOf("___") == -1; // Repeated underscores.
+
+        if (bCheck)
+            bCheck = text.indexOf("....") == -1; // Repeated dots.
+
+        if (bCheck)
+            bCheck = text.indexOf(u"……") == -1; // Repeated ellipsis.
+
+        if (bCheck)
+            bCheck = text.indexOf(u"….") == -1; // A dot after an ellipsis.
+
+        if (bCheck)
+            bCheck = text.indexOf(u".…") == -1; // An ellipsis after a dot.
+
+        // Checking if all the tests are passed successfully. If not, adding a 
warning.
+        if (!bCheck)
+            lclAddIssue(m_rIssueCollection, 
SwResId(STR_NON_INTERACTIVE_FORMS));
+    }
+};
+
 class DocumentCheck : public BaseCheck
 {
 public:
@@ -770,6 +808,7 @@ void AccessibilityCheck::check()
     
aNodeChecks.push_back(std::make_unique<BlinkingTextCheck>(m_aIssueCollection));
     aNodeChecks.push_back(std::make_unique<HeaderCheck>(m_aIssueCollection));
     
aNodeChecks.push_back(std::make_unique<TextFormattingCheck>(m_aIssueCollection));
+    
aNodeChecks.push_back(std::make_unique<NonInteractiveFormCheck>(m_aIssueCollection));
 
     auto const& pNodes = m_pDoc->GetNodes();
     SwNode* pNode = nullptr;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to