1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Wikibase: Redirect formatValue and formatValues to renderSnak and renderSnakValues [#593]

This commit is contained in:
gnosygnu 2019-10-20 13:25:19 -04:00
parent a453ebd4cb
commit cb3f915cb2
4 changed files with 70 additions and 20 deletions

View File

@ -0,0 +1,40 @@
/*
XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012-2017 gnosygnu@gmail.com
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
or alternatively under the terms of the Apache License Version 2.0.
You may use XOWA according to either of these licenses as is most appropriate
for your project on a case-by-case basis.
The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.mediawiki.extensions.Wikibase.lib.includes.Formatters; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.extensions.*; import gplx.xowa.mediawiki.extensions.Wikibase.*; import gplx.xowa.mediawiki.extensions.Wikibase.lib.*; import gplx.xowa.mediawiki.extensions.Wikibase.lib.includes.*;
import gplx.xowa.mediawiki.includes.*;
import gplx.xowa.mediawiki.extensions.Wikibase.DataValues.Interfaces.ValueFormatters.*;
import gplx.xowa.mediawiki.extensions.Wikibase.DataValues.Common.DataValues.*;
// REF.MW:https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/lib/includes/Formatters/MonolingualWikitextFormatter.php
public class MonolingualWikitextFormatter implements ValueFormatter {
/**
* @see ValueFormatter::format
*
* @param MonolingualTextValue $value
*
* @throws InvalidArgumentException
* @return String Wikitext
*/
public Object format(Object val) {
// if ( !( $value instanceof MonolingualTextValue ) ) {
// throw new InvalidArgumentException( '$value must be a MonolingualTextValue' );
// }
// MonolingualTextValue monolingualVal = ((MonolingualTextValue)val);
// String text = monolingualVal.getText();
// String languageCode = monolingualVal.getLanguageCode();
// return String_.Concat("<span lang=\"", XomwGlobalFunctions.wfEscapeWikiText(languageCode), "\">", XomwGlobalFunctions.wfEscapeWikiText(text), "</span>");
return null;
}
}

View File

@ -27,18 +27,11 @@ public class WikibaseValueFormatterBuilder {
public ValueFormatter newMonolingualFormatter(Wbase_enum_itm format) { public ValueFormatter newMonolingualFormatter(Wbase_enum_itm format) {
switch (snakFormat.getBaseFormat(format).Tid()) { switch (snakFormat.getBaseFormat(format).Tid()) {
case SnakFormatterFormat.Tid__html: case SnakFormatterFormat.Tid__html:
return null; return new MonolingualHtmlFormatter(); // $this->languageNameLookup
case SnakFormatterFormat.Tid__wiki:
return new MonolingualWikitextFormatter();
default:
return new MonolingualTextFormatter();
} }
return null;
} }
// public function newMonolingualFormatter( $format ) {
// switch ( $this->snakFormat->getBaseFormat( $format ) ) {
// case SnakFormatter::FORMAT_HTML:
// return new MonolingualHtmlFormatter( $this->languageNameLookup );
// case SnakFormatter::FORMAT_WIKI:
// return new MonolingualWikitextFormatter();
// default:
// return new MonolingualTextFormatter();
// }
// }
} }

View File

@ -18,6 +18,7 @@ import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns
import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.*;
import gplx.xowa.xtns.scribunto.procs.*; import gplx.xowa.xtns.scribunto.procs.*;
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.mediawiki.extensions.Wikibase.client.includes.*; import gplx.xowa.mediawiki.extensions.Wikibase.client.includes.dataAccess.scribunto.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.mediawiki.extensions.Wikibase.client.includes.*; import gplx.xowa.mediawiki.extensions.Wikibase.client.includes.dataAccess.scribunto.*;
// REF.MW:https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
public class Scrib_lib_wikibase implements Scrib_lib { public class Scrib_lib_wikibase implements Scrib_lib {
private final Scrib_core core; private final Scrib_core core;
private Wbase_doc_mgr entity_mgr; private Wbase_doc_mgr entity_mgr;
@ -54,6 +55,7 @@ public class Scrib_lib_wikibase implements Scrib_lib {
case Proc_renderSnak: return RenderSnak(args, rslt); case Proc_renderSnak: return RenderSnak(args, rslt);
case Proc_formatValue: return FormatValue(args, rslt); case Proc_formatValue: return FormatValue(args, rslt);
case Proc_renderSnaks: return RenderSnaks(args, rslt); case Proc_renderSnaks: return RenderSnaks(args, rslt);
case Proc_formatValues: return FormatValues(args, rslt);
case Proc_getEntityId: return GetEntityId(args, rslt); case Proc_getEntityId: return GetEntityId(args, rslt);
case Proc_getReferencedEntityId: return GetReferencedEntityId(args, rslt); case Proc_getReferencedEntityId: return GetReferencedEntityId(args, rslt);
case Proc_getUserLang: return GetUserLang(args, rslt); case Proc_getUserLang: return GetUserLang(args, rslt);
@ -69,14 +71,14 @@ public class Scrib_lib_wikibase implements Scrib_lib {
} }
private static final int private static final int
Proc_getLabel = 0, Proc_getLabelByLanguage = 1, Proc_getEntity = 2, Proc_entityExists = 3, Proc_getEntityStatements = 4, Proc_getSetting = 5, Proc_getEntityUrl = 6 Proc_getLabel = 0, Proc_getLabelByLanguage = 1, Proc_getEntity = 2, Proc_entityExists = 3, Proc_getEntityStatements = 4, Proc_getSetting = 5, Proc_getEntityUrl = 6
, Proc_renderSnak = 7, Proc_formatValue = 8, Proc_renderSnaks = 9, Proc_getEntityId = 10, Proc_getReferencedEntityId = 11 , Proc_renderSnak = 7, Proc_formatValue = 8, Proc_renderSnaks = 9, Proc_formatValues = 10, Proc_getEntityId = 11, Proc_getReferencedEntityId = 12
, Proc_getUserLang = 12, Proc_getDescription = 13, Proc_resolvePropertyId = 14, Proc_getSiteLinkPageName = 15, Proc_incrementExpensiveFunctionCount = 16 , Proc_getUserLang = 13, Proc_getDescription = 14, Proc_resolvePropertyId = 15, Proc_getSiteLinkPageName = 16, Proc_incrementExpensiveFunctionCount = 17
, Proc_isValidEntityId = 17, Proc_getPropertyOrder = 18, Proc_orderProperties = 19; , Proc_isValidEntityId = 18, Proc_getPropertyOrder = 19, Proc_orderProperties = 20;
public static final String public static final String
Invk_getLabel = "getLabel", Invk_getLabelByLanguage = "getLabelByLanguage", Invk_getEntity = "getEntity", Invk_entityExists = "entityExists" Invk_getLabel = "getLabel", Invk_getLabelByLanguage = "getLabelByLanguage", Invk_getEntity = "getEntity", Invk_entityExists = "entityExists"
, Invk_getEntityStatements = "getEntityStatements" , Invk_getEntityStatements = "getEntityStatements"
, Invk_getSetting = "getSetting", Invk_getEntityUrl = "getEntityUrl" , Invk_getSetting = "getSetting", Invk_getEntityUrl = "getEntityUrl"
, Invk_renderSnak = "renderSnak", Invk_formatValue = "formatValue", Invk_renderSnaks = "renderSnaks" , Invk_renderSnak = "renderSnak", Invk_formatValue = "formatValue", Invk_renderSnaks = "renderSnaks", Invk_formatValues = "formatValues"
, Invk_getEntityId = "getEntityId", Invk_getReferencedEntityId = "getReferencedEntityId" , Invk_getEntityId = "getEntityId", Invk_getReferencedEntityId = "getReferencedEntityId"
, Invk_getUserLang = "getUserLang", Invk_getDescription = "getDescription", Invk_resolvePropertyId = "resolvePropertyId" , Invk_getUserLang = "getUserLang", Invk_getDescription = "getDescription", Invk_resolvePropertyId = "resolvePropertyId"
, Invk_getSiteLinkPageName = "getSiteLinkPageName", Invk_incrementExpensiveFunctionCount = "incrementExpensiveFunctionCount" , Invk_getSiteLinkPageName = "getSiteLinkPageName", Invk_incrementExpensiveFunctionCount = "incrementExpensiveFunctionCount"
@ -84,7 +86,7 @@ public class Scrib_lib_wikibase implements Scrib_lib {
; ;
private static final String[] Proc_names = String_.Ary private static final String[] Proc_names = String_.Ary
( Invk_getLabel, Invk_getLabelByLanguage, Invk_getEntity, Invk_entityExists, Invk_getEntityStatements, Invk_getSetting, Invk_getEntityUrl ( Invk_getLabel, Invk_getLabelByLanguage, Invk_getEntity, Invk_entityExists, Invk_getEntityStatements, Invk_getSetting, Invk_getEntityUrl
, Invk_renderSnak, Invk_formatValue, Invk_renderSnaks , Invk_renderSnak, Invk_formatValue, Invk_renderSnaks, Invk_formatValues
, Invk_getEntityId, Invk_getReferencedEntityId, Invk_getUserLang, Invk_getDescription, Invk_resolvePropertyId, Invk_getSiteLinkPageName, Invk_incrementExpensiveFunctionCount , Invk_getEntityId, Invk_getReferencedEntityId, Invk_getUserLang, Invk_getDescription, Invk_resolvePropertyId, Invk_getSiteLinkPageName, Invk_incrementExpensiveFunctionCount
, Invk_isValidEntityId, Invk_getPropertyOrder, Invk_orderProperties , Invk_isValidEntityId, Invk_getPropertyOrder, Invk_orderProperties
); );
@ -205,9 +207,12 @@ public class Scrib_lib_wikibase implements Scrib_lib {
return rslt.Init_obj(rv); return rslt.Init_obj(rv);
} }
public boolean FormatValue(Scrib_proc_args args, Scrib_proc_rslt rslt) { public boolean FormatValue(Scrib_proc_args args, Scrib_proc_rslt rslt) {
/* // WORKAROUND: return same as RenderSnaks until ISSUE:#593 is completed
String rv = Wdata_prop_val_visitor_.Render_snaks(core.Wiki(), core.Page().Url_bry_safe(), args.Pull_kv_ary_safe(0)); Xowe_wiki wiki = core.Wiki();
Wdata_wiki_mgr wdata_mgr = wiki.Appe().Wiki_mgr().Wdata_mgr();
String rv = Wdata_prop_val_visitor_.Render_snak(wdata_mgr, wiki, core.Page().Url_bry_safe(), args.Pull_kv_ary_safe(0));
return rslt.Init_obj(rv); return rslt.Init_obj(rv);
/*
public function formatValues( $snaksSerialization ) { public function formatValues( $snaksSerialization ) {
$this->checkType( 'formatValues', 1, $snaksSerialization, 'table' ); $this->checkType( 'formatValues', 1, $snaksSerialization, 'table' );
try { try {
@ -218,7 +223,11 @@ public function formatValues( $snaksSerialization ) {
} }
} }
*/ */
throw Err_.new_unimplemented(); }
public boolean FormatValues(Scrib_proc_args args, Scrib_proc_rslt rslt) {
// WORKAROUND: return same as RenderSnaks until ISSUE:#593 is completed
String rv = Wdata_prop_val_visitor_.Render_snaks(core.Wiki(), core.Page().Url_bry_safe(), args.Pull_kv_ary_safe(0));
return rslt.Init_obj(rv);
} }
public boolean ResolvePropertyId(Scrib_proc_args args, Scrib_proc_rslt rslt) { public boolean ResolvePropertyId(Scrib_proc_args args, Scrib_proc_rslt rslt) {
byte[] rv = null; byte[] rv = null;

View File

@ -181,6 +181,14 @@ public class Basic__tst {
Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, new Wbase_claim_string(3, Wbase_claim_value_type_.Tid__somevalue, null)); Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, new Wbase_claim_string(3, Wbase_claim_value_type_.Tid__somevalue, null));
fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, ""); fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "");
} }
@Test public void FormatValues() {
Keyval[] args = Wbase_snak_utl_.Get_snaks_ary(wdata_fxt, wdata_fxt.Make_claim_monolingual(3, "en", "P3_en"), wdata_fxt.Make_claim_monolingual(3, "de", "P3_de"));
fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_formatValues, args, "P3_en, P3_de");
}
@Test public void FormatValue__str() {
Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_string(3, "test_str"));
fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_formatValue, args, "test_str");
}
@Test public void GetEntityUrl() { @Test public void GetEntityUrl() {
fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_getEntityUrl, Object_.Ary("Q2" ), "https://www.wikidata.org/wiki/Special:EntityPage/Q2"); fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_getEntityUrl, Object_.Ary("Q2" ), "https://www.wikidata.org/wiki/Special:EntityPage/Q2");
} }