Yuvipanda has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/93623


Change subject: Normalize page titles when creating PageTitle objects
......................................................................

Normalize page titles when creating PageTitle objects

Also add tests for the normalizing behavior

Change-Id: Ie72d82067604512d9f356e6f86960a7f5439e748
---
A wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/PageTitleTests.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/PageFetchTask.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/PageTitle.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
4 files changed, 28 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/23/93623/1

diff --git 
a/wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/PageTitleTests.java 
b/wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/PageTitleTests.java
new file mode 100644
index 0000000..608e82e
--- /dev/null
+++ 
b/wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/PageTitleTests.java
@@ -0,0 +1,13 @@
+package org.wikimedia.wikipedia.test;
+
+import junit.framework.TestCase;
+import org.wikimedia.wikipedia.PageTitle;
+
+public class PageTitleTests extends TestCase {
+    public void testPrefixedText() throws Exception {
+        assertEquals(new PageTitle(null, "Test  title").getPrefixedText(), 
"Test_title");
+        assertEquals(new PageTitle(null, "Test title").getPrefixedText(), 
"Test_title");
+        assertEquals(new PageTitle("Talk", "Test title").getPrefixedText(), 
"Talk:Test_title");
+        assertEquals(new PageTitle(null, "Test   title").getText(), 
"Test_title");
+    }
+}
diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageFetchTask.java 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageFetchTask.java
index 522d861..cede91c 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageFetchTask.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageFetchTask.java
@@ -1,6 +1,5 @@
 package org.wikimedia.wikipedia;
 
-import android.content.Context;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.mediawiki.api.json.Api;
@@ -23,7 +22,7 @@
     @Override
     public Page performTask() throws Throwable {
         ApiResult result = api.action("mobileview")
-                .param("page", title.getTitle()) //TODO: Support non main NS!
+                .param("page", title.getPrefixedText())
                 .param("prop", "text|sections")
                 .param("sections", "0")
                 .param("sectionprop", "toclevel|line|anchor")
diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageTitle.java 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageTitle.java
index a119d30..c3f8f70 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageTitle.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageTitle.java
@@ -4,26 +4,30 @@
 import android.os.Parcelable;
 
 /**
- * Immutable value object representing the title of a page.
+ * Immutable value object representing the text of a page.
  *
  * Points to a specific page in a specific namespace on a specific site.
  * Is immutable.
  */
 public class PageTitle implements Parcelable {
     private final String namespace;
-    private final String title;
+    private final String text;
 
-    public PageTitle(final String namesapce, final String title) {
-        this.namespace = namesapce;
-        this.title = title; //FIXME: Actually normalize this!
+    public PageTitle(final String namespace, final String text) {
+        this.namespace = namespace;
+        this.text = text.replaceAll("\\s+", "_");
     }
 
     public String getNamespace() {
         return namespace;
     }
 
-    public String getTitle() {
-        return title;
+    public String getText() {
+        return text;
+    }
+
+    public String getPrefixedText() {
+        return namespace == null ? text : namespace + ":" + text;
     }
 
     @Override
@@ -44,12 +48,12 @@
 
     private PageTitle(Parcel in) {
         namespace = in.readString();
-        title = in.readString();
+        text = in.readString();
     }
 
     @Override
     public void writeToParcel(Parcel parcel, int flags) {
         parcel.writeString(namespace);
-        parcel.writeString(title);
+        parcel.writeString(text);
     }
 }
diff --git 
a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
index 56f5028..af98caa 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
@@ -32,7 +32,7 @@
     private void displayPage(Page page) {
         JSONObject leadSectionPayload = new JSONObject();
         try {
-            leadSectionPayload.put("title", page.getTitle().getTitle());
+            leadSectionPayload.put("title", page.getTitle().getPrefixedText());
             leadSectionPayload.put("leadSectionHTML", 
page.getSections().get(0).toHTML());
         } catch (JSONException e) {
             // This should never happen

-- 
To view, visit https://gerrit.wikimedia.org/r/93623
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie72d82067604512d9f356e6f86960a7f5439e748
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to