mediawiki-butt 0.11.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +28 -5
- data/lib/mediawiki/administration.rb +18 -17
- data/lib/mediawiki/auth.rb +52 -193
- data/lib/mediawiki/butt.rb +51 -32
- data/lib/mediawiki/constants.rb +127 -130
- data/lib/mediawiki/edit.rb +58 -71
- data/lib/mediawiki/exceptions.rb +2 -123
- data/lib/mediawiki/query/lists/all.rb +35 -45
- data/lib/mediawiki/query/lists/backlinks.rb +23 -34
- data/lib/mediawiki/query/lists/categories.rb +17 -28
- data/lib/mediawiki/query/lists/log/block.rb +17 -33
- data/lib/mediawiki/query/lists/log/delete.rb +8 -24
- data/lib/mediawiki/query/lists/log/import.rb +9 -24
- data/lib/mediawiki/query/lists/log/log.rb +36 -63
- data/lib/mediawiki/query/lists/log/merge.rb +5 -12
- data/lib/mediawiki/query/lists/log/move.rb +6 -20
- data/lib/mediawiki/query/lists/log/newusers.rb +13 -36
- data/lib/mediawiki/query/lists/log/patrol.rb +5 -13
- data/lib/mediawiki/query/lists/log/protect.rb +20 -50
- data/lib/mediawiki/query/lists/log/rights.rb +10 -24
- data/lib/mediawiki/query/lists/log/upload.rb +10 -24
- data/lib/mediawiki/query/lists/miscellaneous.rb +10 -19
- data/lib/mediawiki/query/lists/querypage.rb +60 -62
- data/lib/mediawiki/query/lists/recent_changes.rb +18 -30
- data/lib/mediawiki/query/lists/search.rb +14 -29
- data/lib/mediawiki/query/lists/users.rb +43 -61
- data/lib/mediawiki/query/meta/filerepoinfo.rb +18 -20
- data/lib/mediawiki/query/meta/siteinfo.rb +30 -33
- data/lib/mediawiki/query/meta/userinfo.rb +48 -66
- data/lib/mediawiki/query/properties/contributors.rb +18 -22
- data/lib/mediawiki/query/properties/files.rb +18 -20
- data/lib/mediawiki/query/properties/pages.rb +129 -211
- data/lib/mediawiki/query/properties/properties.rb +20 -25
- data/lib/mediawiki/query/query.rb +0 -25
- data/lib/mediawiki/utils.rb +9 -8
- data/lib/mediawiki/watch.rb +52 -0
- metadata +6 -4
data/lib/mediawiki/butt.rb
CHANGED
@@ -3,6 +3,7 @@ require_relative 'query/query'
|
|
3
3
|
require_relative 'constants'
|
4
4
|
require_relative 'edit'
|
5
5
|
require_relative 'administration'
|
6
|
+
require_relative 'watch'
|
6
7
|
require 'httpclient'
|
7
8
|
require 'json'
|
8
9
|
|
@@ -18,35 +19,37 @@ module MediaWiki
|
|
18
19
|
include MediaWiki::Constants
|
19
20
|
include MediaWiki::Edit
|
20
21
|
include MediaWiki::Administration
|
22
|
+
include MediaWiki::Watch
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
# @param
|
28
|
-
# @
|
29
|
-
|
24
|
+
attr_accessor :query_limit_default
|
25
|
+
|
26
|
+
# Creates a new instance of MediaWiki::Butt.
|
27
|
+
# @param url [String] The FULL wiki URL. api.php can be omitted, but it will make harsh assumptions about
|
28
|
+
# your wiki configuration.
|
29
|
+
# @param opts [Hash<Symbol, Any>] The options hash for configuring this instance of Butt.
|
30
|
+
# @option opts [String] :custom_agent A custom User-Agent to use. Optional.
|
31
|
+
# @option opts [Fixnum] :query_limit_default The query limit to use if no limit parameter is explicitly given to
|
32
|
+
# the various query methods. In other words, if you pass a limit parameter to the valid query methods, it will
|
33
|
+
# use that, otherwise, it will use this. Defaults to 500. It can be set to 'max' to use MW's default max for
|
34
|
+
# each API.
|
35
|
+
def initialize(url, opts = {})
|
30
36
|
@url = url =~ /api.php$/ ? url : "#{url}/api.php"
|
37
|
+
@query_limit_default = opts[:query_limit_default] || 500
|
31
38
|
@client = HTTPClient.new
|
32
39
|
@uri = URI.parse(@url)
|
33
|
-
@ssl = use_ssl
|
34
40
|
@logged_in = false
|
35
|
-
@custom_agent = custom_agent
|
36
|
-
@tokens = {}
|
41
|
+
@custom_agent = opts[:custom_agent]
|
37
42
|
end
|
38
43
|
|
39
|
-
# Performs a generic HTTP POST
|
40
|
-
#
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
# @param autoparse [Boolean] Whether or not to provide a parsed version
|
45
|
-
# of the response's JSON. Will default to true.
|
44
|
+
# Performs a generic HTTP POST request and provides the response. This method generally should not be used by the
|
45
|
+
# user, unless there is not a helper method provided by Butt for a particular action.
|
46
|
+
# @param params [Hash] A basic hash containing MediaWiki API parameters. Please see the MediaWiki API for more
|
47
|
+
# information.
|
48
|
+
# @param autoparse [Boolean] Whether or not to provide a parsed version of the response's JSON.
|
46
49
|
# @param header [Hash] The header hash. Optional.
|
47
50
|
# @since 0.1.0
|
48
|
-
# @return [
|
49
|
-
# @return [HTTPMessage] Raw HTTP response.
|
51
|
+
# @return [Hash] Parsed JSON if autoparse is true.
|
52
|
+
# @return [HTTPMessage] Raw HTTP response if autoparse is not true.
|
50
53
|
def post(params, autoparse = true, header = nil)
|
51
54
|
params[:format] = 'json'
|
52
55
|
header = {} if header.nil?
|
@@ -56,11 +59,7 @@ module MediaWiki
|
|
56
59
|
|
57
60
|
res = @client.post(@uri, params, header)
|
58
61
|
|
59
|
-
|
60
|
-
return JSON.parse(res.body)
|
61
|
-
else
|
62
|
-
return res
|
63
|
-
end
|
62
|
+
autoparse ? JSON.parse(res.body) : res
|
64
63
|
end
|
65
64
|
|
66
65
|
# Gets whether the currently logged in user is a bot.
|
@@ -73,18 +72,38 @@ module MediaWiki
|
|
73
72
|
# @since 0.4.1 as user_bot?
|
74
73
|
def user_bot?(username = nil)
|
75
74
|
groups = false
|
75
|
+
name = username || @name
|
76
|
+
groups = get_usergroups(name) if name
|
77
|
+
groups && groups.include?('bot')
|
78
|
+
end
|
76
79
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
80
|
+
protected
|
81
|
+
|
82
|
+
# Gets the limited version of the integer, to ensure nobody provides an int that is too large.
|
83
|
+
# @param integer [Fixnum] The number to limit.
|
84
|
+
# @param max_user [Fixnum] The maximum limit for normal users.
|
85
|
+
# @param max_bot [Fixnum] The maximum limit for bot users.
|
86
|
+
# @since 0.8.0
|
87
|
+
# @return [Fixnum] The capped number.
|
88
|
+
def get_limited(integer, max_user = 500, max_bot = 5000)
|
89
|
+
if integer.is_a?(String)
|
90
|
+
return integer if integer == 'max'
|
91
|
+
return 500
|
81
92
|
end
|
93
|
+
return integer if integer <= max_user
|
82
94
|
|
83
|
-
if
|
84
|
-
|
95
|
+
if user_bot?
|
96
|
+
integer > max_bot ? max_bot : integer
|
85
97
|
else
|
86
|
-
|
98
|
+
max_user
|
87
99
|
end
|
88
100
|
end
|
101
|
+
|
102
|
+
# Safely validates the given namespace ID, and returns 0 for the main namespace if invalid.
|
103
|
+
# @param namespace [Fixnum] The namespace ID.
|
104
|
+
# @return [Fixnum] Either the given namespace, if valid, or the main namespace ID 0 if invalid.
|
105
|
+
def validate_namespace(namespace)
|
106
|
+
MediaWiki::Constants::NAMESPACES.value?(namespace) ? namespace : 0
|
107
|
+
end
|
89
108
|
end
|
90
109
|
end
|
data/lib/mediawiki/constants.rb
CHANGED
@@ -3,224 +3,221 @@ module MediaWiki
|
|
3
3
|
# @since 0.2.0 as a module with individual global constants
|
4
4
|
# @since 0.4.0 as a module with a single global hash identical to this.
|
5
5
|
# @since 0.8.0 as its current state.
|
6
|
-
# @see https://www.mediawiki.org/wiki/Extension_default_namespaces
|
7
|
-
#
|
8
|
-
# @return [Hash<String,
|
6
|
+
# @see https://www.mediawiki.org/wiki/Extension_default_namespaces MediaWiki's list of extension namespace IDs
|
7
|
+
# and names.
|
8
|
+
# @return [Hash<String, Fixnum>] The upcased namespace names, and their according ID. The keys, values, and
|
9
9
|
# return value itself are all immutable.
|
10
10
|
NAMESPACES = {
|
11
|
-
'MAIN'.freeze => 0
|
12
|
-
'TALK'.freeze => 1
|
13
|
-
'USER'.freeze => 2
|
14
|
-
'USER_TALK'.freeze => 3
|
15
|
-
'PROJECT'.freeze => 4
|
16
|
-
'PROJECT_TALK'.freeze => 5
|
17
|
-
'FILE'.freeze => 6
|
18
|
-
'FILE_TALK'.freeze => 7
|
19
|
-
'MEDIAWIKI'.freeze => 8
|
20
|
-
'MEDIAWIKI_TALK'.freeze => 9
|
21
|
-
'TEMPLATE'.freeze => 10
|
22
|
-
'TEMPLATE_TALK'.freeze => 11
|
23
|
-
'HELP'.freeze => 12
|
24
|
-
'HELP_TALK'.freeze => 13
|
25
|
-
'CATEGORY'.freeze => 14
|
26
|
-
'CATEGORY_TALK'.freeze => 15
|
27
|
-
'SPECIAL'.freeze => -1
|
28
|
-
'MEDIA'.freeze => -2
|
11
|
+
'MAIN'.freeze => 0,
|
12
|
+
'TALK'.freeze => 1,
|
13
|
+
'USER'.freeze => 2,
|
14
|
+
'USER_TALK'.freeze => 3,
|
15
|
+
'PROJECT'.freeze => 4,
|
16
|
+
'PROJECT_TALK'.freeze => 5,
|
17
|
+
'FILE'.freeze => 6,
|
18
|
+
'FILE_TALK'.freeze => 7,
|
19
|
+
'MEDIAWIKI'.freeze => 8,
|
20
|
+
'MEDIAWIKI_TALK'.freeze => 9,
|
21
|
+
'TEMPLATE'.freeze => 10,
|
22
|
+
'TEMPLATE_TALK'.freeze => 11,
|
23
|
+
'HELP'.freeze => 12,
|
24
|
+
'HELP_TALK'.freeze => 13,
|
25
|
+
'CATEGORY'.freeze => 14,
|
26
|
+
'CATEGORY_TALK'.freeze => 15,
|
27
|
+
'SPECIAL'.freeze => -1,
|
28
|
+
'MEDIA'.freeze => -2,
|
29
29
|
|
30
30
|
# Extension:LiquidThreads
|
31
|
-
'LQT_THREAD'.freeze => 90
|
32
|
-
'LQT_THREAD_TALK'.freeze => 91
|
33
|
-
'LQT_SUMMARY'.freeze => 92
|
34
|
-
'LQT_SUMMARY_TALK'.freeze => 93
|
31
|
+
'LQT_THREAD'.freeze => 90,
|
32
|
+
'LQT_THREAD_TALK'.freeze => 91,
|
33
|
+
'LQT_SUMMARY'.freeze => 92,
|
34
|
+
'LQT_SUMMARY_TALK'.freeze => 93,
|
35
35
|
|
36
36
|
# Extension:Semantic MediaWiki / Extension:Semantic Forms
|
37
|
-
'SMW_RELATION'.freeze => 100
|
38
|
-
'SMW_RELATION_TALK'.freeze => 101
|
39
|
-
'SMW_PROPERTY'.freeze => 102
|
40
|
-
'SMW_PROPERTY_TALK'.freeze => 103
|
41
|
-
'SMW_TYPE'.freeze => 104
|
42
|
-
'SMW_TYPE_TALK'.freeze => 105
|
43
|
-
'SMW_FORM'.freeze => 106
|
44
|
-
'SMW_FORM_TALK'.freeze => 107
|
45
|
-
'SF_CONCEPT'.freeze => 108
|
46
|
-
'SF_CONCEPT_TALK'.freeze => 109
|
37
|
+
'SMW_RELATION'.freeze => 100,
|
38
|
+
'SMW_RELATION_TALK'.freeze => 101,
|
39
|
+
'SMW_PROPERTY'.freeze => 102,
|
40
|
+
'SMW_PROPERTY_TALK'.freeze => 103,
|
41
|
+
'SMW_TYPE'.freeze => 104,
|
42
|
+
'SMW_TYPE_TALK'.freeze => 105,
|
43
|
+
'SMW_FORM'.freeze => 106,
|
44
|
+
'SMW_FORM_TALK'.freeze => 107,
|
45
|
+
'SF_CONCEPT'.freeze => 108,
|
46
|
+
'SF_CONCEPT_TALK'.freeze => 109,
|
47
47
|
|
48
48
|
# Extension:DPLforum
|
49
|
-
'DPLF_FORUM'.freeze => 110
|
50
|
-
'DPLF_FORUM_TAlK'.freeze => 111
|
49
|
+
'DPLF_FORUM'.freeze => 110,
|
50
|
+
'DPLF_FORUM_TAlK'.freeze => 111,
|
51
51
|
|
52
52
|
# Extension:RefHelper
|
53
|
-
'RFH_CITE'.freeze => 120
|
54
|
-
'RFH_CITE_TALK'.freeze => 121
|
53
|
+
'RFH_CITE'.freeze => 120,
|
54
|
+
'RFH_CITE_TALK'.freeze => 121,
|
55
55
|
|
56
56
|
# Extension:SemanticAccessControl
|
57
|
-
'ACL_USERGROUP'.freeze => 160
|
58
|
-
'ACL_ACL'.freeze => 162
|
57
|
+
'ACL_USERGROUP'.freeze => 160,
|
58
|
+
'ACL_ACL'.freeze => 162,
|
59
59
|
|
60
60
|
# Extension:Semantic Drilldown
|
61
|
-
'SED_FILTER'.freeze => 170
|
62
|
-
'SED_FILTER_TALK'.freeze => 171
|
61
|
+
'SED_FILTER'.freeze => 170,
|
62
|
+
'SED_FILTER_TALK'.freeze => 171,
|
63
63
|
|
64
64
|
# Extension:SocialProfile
|
65
|
-
'SCP_USERWIKI'.freeze => 200
|
66
|
-
'SCP_USERWIKI_TALK'.freeze => 201
|
67
|
-
'SCP_USERPROFILE'.freeze => 202
|
68
|
-
'SCP_USERPROFILE_TALK'.freeze => 203
|
65
|
+
'SCP_USERWIKI'.freeze => 200,
|
66
|
+
'SCP_USERWIKI_TALK'.freeze => 201,
|
67
|
+
'SCP_USERPROFILE'.freeze => 202,
|
68
|
+
'SCP_USERPROFILE_TALK'.freeze => 203,
|
69
69
|
|
70
70
|
# Extension:Proofread Page
|
71
|
-
'PRP_PAGE'.freeze => 250
|
72
|
-
'PRP_PAGE_TALK'.freeze => 251
|
73
|
-
'PRP_INDEX'.freeze => 252
|
74
|
-
'PRP_INDEX_TALK'.freeze => 253
|
71
|
+
'PRP_PAGE'.freeze => 250,
|
72
|
+
'PRP_PAGE_TALK'.freeze => 251,
|
73
|
+
'PRP_INDEX'.freeze => 252,
|
74
|
+
'PRP_INDEX_TALK'.freeze => 253,
|
75
75
|
|
76
76
|
# Extension:TrustedMath
|
77
|
-
'TRM_MATH'.freeze => 262
|
78
|
-
'TRM_MATH_TALK'.freeze => 263
|
77
|
+
'TRM_MATH'.freeze => 262,
|
78
|
+
'TRM_MATH_TALK'.freeze => 263,
|
79
79
|
|
80
80
|
# Extension:Widgets
|
81
|
-
'WID_WIDGET'.freeze => 274
|
82
|
-
'WID_WIDGET_TALK'.freeze => 275
|
81
|
+
'WID_WIDGET'.freeze => 274,
|
82
|
+
'WID_WIDGET_TALK'.freeze => 275,
|
83
83
|
|
84
84
|
# Extension:EmbedScript
|
85
|
-
'EMS_JSAPPLET'.freeze => 280
|
86
|
-
'EMS_JSAPPLET_TALK'.freeze => 281
|
85
|
+
'EMS_JSAPPLET'.freeze => 280,
|
86
|
+
'EMS_JSAPPLET_TALK'.freeze => 281,
|
87
87
|
|
88
88
|
# Extension:PollNY
|
89
|
-
'PLN_POLL'.freeze => 300
|
90
|
-
'PLN_POLL_TALK'.freeze => 301
|
89
|
+
'PLN_POLL'.freeze => 300,
|
90
|
+
'PLN_POLL_TALK'.freeze => 301,
|
91
91
|
|
92
92
|
# Extension:Semantic Image Annotator
|
93
|
-
'SIA_IMAGE_ANNOTATOR'.freeze => 380
|
93
|
+
'SIA_IMAGE_ANNOTATOR'.freeze => 380,
|
94
94
|
|
95
95
|
# Extension:Wiki2LaTeX
|
96
|
-
'WTL_WIKI2LATEX'.freeze => 400
|
97
|
-
'WTL_WIKI2LATEX_TALK'.freeze => 401
|
96
|
+
'WTL_WIKI2LATEX'.freeze => 400,
|
97
|
+
'WTL_WIKI2LATEX_TALK'.freeze => 401,
|
98
98
|
|
99
99
|
# Extension:Workflow
|
100
|
-
'WRF_WORKFLOW'.freeze => 410
|
101
|
-
'WRF_WORKFLOW_TALK'.freeze => 411
|
100
|
+
'WRF_WORKFLOW'.freeze => 410,
|
101
|
+
'WRF_WORKFLOW_TALK'.freeze => 411,
|
102
102
|
|
103
103
|
# Extension:Maps
|
104
|
-
'MAP_LAYER'.freeze => 420
|
105
|
-
'MAP_LAYER_TALK'.freeze => 421
|
104
|
+
'MAP_LAYER'.freeze => 420,
|
105
|
+
'MAP_LAYER_TALK'.freeze => 421,
|
106
106
|
|
107
107
|
# Extension:QuizTabulate
|
108
|
-
'QTB_QUIZ'.freeze => 430
|
109
|
-
'QTB_QUIZ_TALK'.freeze => 431
|
108
|
+
'QTB_QUIZ'.freeze => 430,
|
109
|
+
'QTB_QUIZ_TALK'.freeze => 431,
|
110
110
|
|
111
111
|
# Extension:Education Program
|
112
|
-
'EDP_EDUCATION_PROGRAM'.freeze => 446
|
113
|
-
'EDP_EDUCATION_PROGRAM_TALK'.freeze => 447
|
112
|
+
'EDP_EDUCATION_PROGRAM'.freeze => 446,
|
113
|
+
'EDP_EDUCATION_PROGRAM_TALK'.freeze => 447,
|
114
114
|
|
115
115
|
# Extension:BoilerRoom
|
116
|
-
'BLR_BOILERPLATE'.freeze => 450
|
117
|
-
'BLR_BOILERPLATE_TALK'.freeze => 451
|
116
|
+
'BLR_BOILERPLATE'.freeze => 450,
|
117
|
+
'BLR_BOILERPLATE_TALK'.freeze => 451,
|
118
118
|
|
119
119
|
# Extension:UploadWizard
|
120
|
-
'UPW_CAMPAIGN'.freeze => 460
|
121
|
-
'UPW_CAMPAIGN_TALK'.freeze => 461
|
120
|
+
'UPW_CAMPAIGN'.freeze => 460,
|
121
|
+
'UPW_CAMPAIGN_TALK'.freeze => 461,
|
122
122
|
|
123
123
|
# Extension:EventLogging
|
124
|
-
'ELG_SCHEMA'.freeze => 470
|
125
|
-
'ELG_SCHEMA_TALK'.freeze => 471
|
124
|
+
'ELG_SCHEMA'.freeze => 470,
|
125
|
+
'ELG_SCHEMA_TALK'.freeze => 471,
|
126
126
|
|
127
127
|
# Extension:ZeroBanner
|
128
|
-
'ZRB_ZERO'.freeze => 480
|
129
|
-
'ZRB_ZERO_TALK'.freeze => 481
|
128
|
+
'ZRB_ZERO'.freeze => 480,
|
129
|
+
'ZRB_ZERO_TALK'.freeze => 481,
|
130
130
|
|
131
131
|
# Extension:JsonConfig
|
132
|
-
'JSC_CONFIG'.freeze => 482
|
133
|
-
'JSC_CONFIG_TALK'.freeze => 483
|
134
|
-
'JSC_DATA'.freeze => 486
|
135
|
-
'JSC_DATA_TALK'.freeze => 487
|
132
|
+
'JSC_CONFIG'.freeze => 482,
|
133
|
+
'JSC_CONFIG_TALK'.freeze => 483,
|
134
|
+
'JSC_DATA'.freeze => 486,
|
135
|
+
'JSC_DATA_TALK'.freeze => 487,
|
136
136
|
|
137
137
|
# Extension:Graph
|
138
|
-
'GRP_GRAPH'.freeze => 484
|
139
|
-
'GRP_GRAPH_TALK'.freeze => 485
|
138
|
+
'GRP_GRAPH'.freeze => 484,
|
139
|
+
'GRP_GRAPH_TALK'.freeze => 485,
|
140
140
|
|
141
141
|
# Extension:OpenStackManager
|
142
|
-
'OSM_NOVA_RESOURCE'.freeze => 488
|
143
|
-
'OSM_NOVA_RESOURCE_TALK'.freeze => 489
|
142
|
+
'OSM_NOVA_RESOURCE'.freeze => 488,
|
143
|
+
'OSM_NOVA_RESOURCE_TALK'.freeze => 489,
|
144
144
|
|
145
145
|
# Extension:GWToolset
|
146
|
-
'GWT_GWTOOLSET'.freeze => 490
|
147
|
-
'GWT_GWTOOLSET_TALK'.freeze => 491
|
146
|
+
'GWT_GWTOOLSET'.freeze => 490,
|
147
|
+
'GWT_GWTOOLSET_TALK'.freeze => 491,
|
148
148
|
|
149
149
|
# Extension:BlogPage
|
150
|
-
'BLP_BLOG'.freeze => 500
|
151
|
-
'BLP_BLOG_TALK'.freeze => 501
|
150
|
+
'BLP_BLOG'.freeze => 500,
|
151
|
+
'BLP_BLOG_TALK'.freeze => 501,
|
152
152
|
|
153
153
|
# Extension:XMLContentExtension
|
154
|
-
'XCE_XML'.freeze => 580
|
155
|
-
'XCE_XML_TALK'.freeze => 581
|
156
|
-
'XCE_SCHEMA'.freeze => 582
|
157
|
-
'XCE_SCHEMA_TALK'.freeze => 583
|
154
|
+
'XCE_XML'.freeze => 580,
|
155
|
+
'XCE_XML_TALK'.freeze => 581,
|
156
|
+
'XCE_SCHEMA'.freeze => 582,
|
157
|
+
'XCE_SCHEMA_TALK'.freeze => 583,
|
158
158
|
|
159
159
|
# Extension:FanBoxes
|
160
|
-
'FNB_USERBOX'.freeze => 600
|
161
|
-
'FNB_USERBOX_TALK'.freeze => 601
|
160
|
+
'FNB_USERBOX'.freeze => 600,
|
161
|
+
'FNB_USERBOX_TALK'.freeze => 601,
|
162
162
|
|
163
163
|
# Extension:LinkFilter
|
164
|
-
'LFT_LINK'.freeze => 700
|
165
|
-
'LFT_LINK_TALK'.freeze => 701
|
164
|
+
'LFT_LINK'.freeze => 700,
|
165
|
+
'LFT_LINK_TALK'.freeze => 701,
|
166
166
|
|
167
167
|
# Extension:TimedMediaHandler
|
168
|
-
'TMH_TIMEDTEXT'.freeze => 710
|
169
|
-
'TMH_TIMEDTEXT_TALK'.freeze => 711
|
168
|
+
'TMH_TIMEDTEXT'.freeze => 710,
|
169
|
+
'TMH_TIMEDTEXT_TALK'.freeze => 711,
|
170
170
|
|
171
171
|
# Extension:QPoll
|
172
|
-
'QPL_INTERPRETATION'.freeze => 800
|
173
|
-
'QPL_INTERPRETATION_TALK'.freeze => 801
|
172
|
+
'QPL_INTERPRETATION'.freeze => 800,
|
173
|
+
'QPL_INTERPRETATION_TALK'.freeze => 801,
|
174
174
|
|
175
175
|
# Extension:SemanticMustacheFormat :3
|
176
|
-
'SMF_MUSTACHE'.freeze => 806
|
177
|
-
'SMF_MUSTACHE_TALK'.freeze => 807
|
176
|
+
'SMF_MUSTACHE'.freeze => 806,
|
177
|
+
'SMF_MUSTACHE_TALK'.freeze => 807,
|
178
178
|
|
179
179
|
# Extension:R
|
180
|
-
'R_R'.freeze => 814
|
181
|
-
'R_R_TALK'.freeze => 815
|
180
|
+
'R_R'.freeze => 814,
|
181
|
+
'R_R_TALK'.freeze => 815,
|
182
182
|
|
183
183
|
# Extension:Scribunto
|
184
|
-
'SCR_MODULE'.freeze => 828
|
185
|
-
'SCR_MODULE_TALK'.freeze => 829
|
184
|
+
'SCR_MODULE'.freeze => 828,
|
185
|
+
'SCR_MODULE_TALK'.freeze => 829,
|
186
186
|
|
187
187
|
# Extension:SecurePoll
|
188
|
-
'SEP_SECUREPOLL'.freeze => 830
|
189
|
-
'SEP_SECUREPOLL_TALK'.freeze => 831
|
188
|
+
'SEP_SECUREPOLL'.freeze => 830,
|
189
|
+
'SEP_SECUREPOLL_TALK'.freeze => 831,
|
190
190
|
|
191
191
|
# Extension:CentralNotice
|
192
|
-
'CNT_CNBANNER'.freeze => 866
|
193
|
-
'CNT_CNBANNER_TALK'.freeze => 867
|
192
|
+
'CNT_CNBANNER'.freeze => 866,
|
193
|
+
'CNT_CNBANNER_TALK'.freeze => 867,
|
194
194
|
|
195
195
|
# Extension:Translate
|
196
|
-
'TRN_TRANSLATIONS'.freeze => 1198
|
197
|
-
'TRN_TRANSLATIOTALK'.freeze => 1199
|
196
|
+
'TRN_TRANSLATIONS'.freeze => 1198,
|
197
|
+
'TRN_TRANSLATIOTALK'.freeze => 1199,
|
198
198
|
|
199
199
|
# Extension:PackageForce
|
200
|
-
'PKF_PACKAGEFORCE'.freeze => 1300
|
201
|
-
'PKF_PACKAGEFORCE_TALK'.freeze => 1301
|
200
|
+
'PKF_PACKAGEFORCE'.freeze => 1300,
|
201
|
+
'PKF_PACKAGEFORCE_TALK'.freeze => 1301,
|
202
202
|
|
203
203
|
# Extension:BlueSpice
|
204
|
-
'BLS_BLOG'.freeze => 1502
|
205
|
-
'BLS_BLOG_TALK'.freeze => 1503
|
206
|
-
'BLS_BOOK'.freeze => 1504
|
207
|
-
'BLS_BOOK_TALK'.freeze => 1505
|
204
|
+
'BLS_BLOG'.freeze => 1502,
|
205
|
+
'BLS_BLOG_TALK'.freeze => 1503,
|
206
|
+
'BLS_BOOK'.freeze => 1504,
|
207
|
+
'BLS_BOOK_TALK'.freeze => 1505,
|
208
208
|
|
209
209
|
# Extension:Gadgets
|
210
|
-
'GDG_GADGET'.freeze => 2300
|
211
|
-
'GDG_GADGET_TALK'.freeze => 2301
|
212
|
-
'GDG_GADGET_DEFININTION'.freeze => 2302
|
213
|
-
'GDG_GADGET_DEFININTION_TALK'.freeze => 2303
|
210
|
+
'GDG_GADGET'.freeze => 2300,
|
211
|
+
'GDG_GADGET_TALK'.freeze => 2301,
|
212
|
+
'GDG_GADGET_DEFININTION'.freeze => 2302,
|
213
|
+
'GDG_GADGET_DEFININTION_TALK'.freeze => 2303,
|
214
214
|
|
215
215
|
# Extension:VisualEditor
|
216
|
-
'VSE_VISUALEDITOR'.freeze => 2500
|
217
|
-
'VSE_VISUALEDITOR_TALK'.freeze => 2501
|
216
|
+
'VSE_VISUALEDITOR'.freeze => 2500,
|
217
|
+
'VSE_VISUALEDITOR_TALK'.freeze => 2501,
|
218
218
|
|
219
219
|
# Extension:Flow
|
220
|
-
'FLW_TOPIC'.freeze => 2600
|
220
|
+
'FLW_TOPIC'.freeze => 2600
|
221
221
|
}.freeze
|
222
|
-
|
223
|
-
# @return [String] MediaWiki's timestamp format as an immutable string for DateTime uses.
|
224
|
-
TIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'.freeze
|
225
222
|
end
|
226
223
|
end
|