1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

Scribunto: Synchronize latest of mw.wikibase.entity.lua [#614]

This commit is contained in:
gnosygnu
2019-11-23 05:30:44 -05:00
parent b2864f8c6a
commit c307946bd2
4 changed files with 185 additions and 83 deletions

View File

@@ -42,6 +42,7 @@ public class WikibaseClientDefault {
rv.addSetting("allowDataAccessInUserLanguage", false);
rv.addSetting("sharedCacheDuration", 60 * 60);
rv.addSetting("fineGrainedLuaTracking", false); // PERF: setting deliberately to false else every call to entity.sitelinks['frwiki']); will generate another round-trip to Scrib; SEE:mw.wikibase.lua; REF.MW: https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/412664/3/wmf-config/InitialiseSettings.php
rv.addSetting("siteGlobalID", "wikidatawiki");
return rv;
}
}

View File

@@ -66,6 +66,8 @@ public class Scrib_lib_wikibase implements Scrib_lib {
case Proc_isValidEntityId: return IsValidEntityId(args, rslt);
case Proc_getPropertyOrder: return GetPropertyOrder(args, rslt);
case Proc_orderProperties: return OrderProperties(args, rslt);
case Proc_incrementStatsKey: return IncrementStatsKey(args, rslt);
case Proc_getEntityModuleName: return GetEntityModuleName(args, rslt);
default: throw Err_.new_unhandled(key);
}
}
@@ -73,7 +75,7 @@ public class Scrib_lib_wikibase implements Scrib_lib {
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_formatValues = 10, Proc_getEntityId = 11, Proc_getReferencedEntityId = 12
, Proc_getUserLang = 13, Proc_getDescription = 14, Proc_resolvePropertyId = 15, Proc_getSiteLinkPageName = 16, Proc_incrementExpensiveFunctionCount = 17
, Proc_isValidEntityId = 18, Proc_getPropertyOrder = 19, Proc_orderProperties = 20;
, Proc_isValidEntityId = 18, Proc_getPropertyOrder = 19, Proc_orderProperties = 20, Proc_incrementStatsKey = 21, Proc_getEntityModuleName = 22;
public static final String
Invk_getLabel = "getLabel", Invk_getLabelByLanguage = "getLabelByLanguage", Invk_getEntity = "getEntity", Invk_entityExists = "entityExists"
, Invk_getEntityStatements = "getEntityStatements"
@@ -83,12 +85,13 @@ public class Scrib_lib_wikibase implements Scrib_lib {
, Invk_getUserLang = "getUserLang", Invk_getDescription = "getDescription", Invk_resolvePropertyId = "resolvePropertyId"
, Invk_getSiteLinkPageName = "getSiteLinkPageName", Invk_incrementExpensiveFunctionCount = "incrementExpensiveFunctionCount"
, Invk_isValidEntityId = "isValidEntityId", Invk_getPropertyOrder = "getPropertyOrder", Invk_orderProperties = "orderProperties"
, Invk_incrementStatsKey = "incrementStatsKey", Invk_getEntityModuleName = "getEntityModuleName"
;
private static final String[] Proc_names = String_.Ary
( Invk_getLabel, Invk_getLabelByLanguage, Invk_getEntity, Invk_entityExists, Invk_getEntityStatements, Invk_getSetting, Invk_getEntityUrl
, Invk_renderSnak, Invk_formatValue, Invk_renderSnaks, Invk_formatValues
, 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, Invk_incrementStatsKey, Invk_getEntityModuleName
);
public void Notify_page_changed() {if (notify_page_changed_fnc != null) core.Interpreter().CallFunction(notify_page_changed_fnc.Id(), Keyval_.Ary_empty);}
@@ -324,6 +327,21 @@ public function formatValues( $snaksSerialization ) {
public boolean IncrementExpensiveFunctionCount(Scrib_proc_args args, Scrib_proc_rslt rslt) {
return rslt.Init_obj(Keyval_.Ary_empty); // NOTE: for now, always return null (XOWA does not care about expensive parser functions)
}
public boolean IncrementStatsKey(Scrib_proc_args args, Scrib_proc_rslt rslt) {
return rslt.Init_null();
}
public boolean GetEntityModuleName(Scrib_proc_args args, Scrib_proc_rslt rslt) {
String moduleName = "mw.wikibase.entity"; // FOOTNOTE:GetEntityModuleName
// String prefixedEntityId = Get_xid_from_args(args);
try {
// $type = $entityId->getEntityType();
// $moduleName = $this->getLuaEntityModules()[$type] ?? 'mw.wikibase.entity';
}
catch (Exception exc) {
moduleName = "mw.wikibase.entity";
}
return rslt.Init_obj(moduleName);
}
private byte[] Get_xid_from_args(Scrib_proc_args args) {
// get qid / pid from scrib_arg[0]
byte[] xid_bry = args.Pull_bry(0);
@@ -342,3 +360,16 @@ public function formatValues( $snaksSerialization ) {
return wdoc;
}
}
/*
FOOTNOTE:GetEntityModuleName
Wikibase currently always returns 'mw.wikibase.entity' b/c "$this->getLuaEntityModules()[$type]" is always null
* getLuaEntityModules returns an EntityTypeDefinitions
* EntityTypeDefinitions is created in WikibaseRepo using entitytypes.php
* Neither entitytypes.php has a key definition for 'lua-entity-module'
See below references
* https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/lib/includes/EntityTypeDefinitions.php
* https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/repo/includes/WikibaseRepo.php
* https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/repo/WikibaseRepo.entitytypes.php
* https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/lib/WikibaseLib.entitytypes.php
*/

View File

@@ -193,7 +193,16 @@ public class Basic__tst {
fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_getEntityUrl, Object_.Ary("Q2" ), "https://www.wikidata.org/wiki/Special:EntityPage/Q2");
}
@Test public void GetSetting() {
fxt.Test_scrib_proc_obj(lib, Scrib_lib_wikibase.Invk_getSetting, Object_.Ary("allowArbitraryDataAccess" ), true); // PAGE:en.w:Beccles DATE:2018-06-27
fxt.Test_scrib_proc_obj(lib, Scrib_lib_wikibase.Invk_getSetting, Object_.Ary("allowArbitraryDataAccess"), true); // PAGE:en.w:Beccles DATE:2018-06-27
}
@Test public void GetSetting__siteGlobalID() {
fxt.Test_scrib_proc_obj(lib, Scrib_lib_wikibase.Invk_getSetting, Object_.Ary("siteGlobalID"), "wikidatawiki");
}
@Test public void IncrementStatsKey() {
fxt.Test_scrib_proc_obj(lib, Scrib_lib_wikibase.Invk_incrementStatsKey, Object_.Ary("wikibase.client.scribunto.wikibase.getEntityIdForCurrentPage.call"), null);
}
@Test public void GetEntityModuleName() {
fxt.Test_scrib_proc_obj(lib, Scrib_lib_wikibase.Invk_getEntityModuleName, Object_.Ary("Q123"), "mw.wikibase.entity");
}
}
class Wbase_snak_utl_ {