Commit graph

1322 commits

Author SHA1 Message Date
Timo Tijhof 9815331195 Use wfGlobalCacheKey()
Change-Id: I62666265e297b5dbcccaa1a64a07bb7bd01b89c4
2015-06-23 08:08:48 +01:00
Kunal Mehta fb0e430f47 Add basic parser tests for functionality of non-recognized languages
Change-Id: I07cecb588818fd4abb0b1b8e8de893cf6f72014a
2015-06-22 22:26:22 -07:00
Ori Livneh f36b6c66d3 If unable to shell out to Pygments, emit a warning and fall back to plain text.
Change-Id: I8beb0367405e8ea70385134e03302e8bd3ab91ff
2015-06-22 16:19:25 -07:00
Ori Livneh 648744325c Bundle Pygments 2.0.2
Include Pygments 2.0.2 as an executable zip bundle. Also include a script to
automate the process of creating such bundles and to make it reproducible and
verifiable.

Change-Id: I67e6f804e493f065311164c610dc541a5779654e
2015-06-22 22:54:42 +00:00
Ori Livneh a142c9194c Follow-up for I07446ec98: remove geshi/
Change-Id: I44df41362f9355b1176de08c93d44ff3b0fb8ec9
2015-06-22 15:52:27 -07:00
Ori Livneh f1941f8a56 Only look for a compatible lexer if a direct Pygments match is unavailable
If Pygments ever adds a dedicated lexer for 'cadlisp', for example, we'd want the
extension to use that, rather than use the compatibility map.

Change-Id: Icc610695ac2826bb526f7c69e867576c660ba6ef
2015-06-22 22:47:52 +00:00
Ori Livneh 6484894497 Highlight using Pygments rather than Geshi
GeSHi is unmaintained, lacks support for many popular modern languages, and
suffers from deep architectural flaws, chief among them the inconsistent
tokenization of different languages, each of which requires a custom
stylesheet.

Pygments is a well-maintained alternative. It is, by my count, the most popular
syntax highlighting library around. It is BSD-licensed, actively maintained,
and is widely used in PHP projects.

To keep this easy to review, this change does not include update for l10n
files, and it does not delete the geshi/ directory. I will do those in a
separate patch.

The chief change between this and the previous implementation is that errors
result in the code block not being highlighted, as opposed to not being printed
at all, having been replaced by an angry red error message. I think that is the
right user experience. If you go to StackOverflow or GitHub and try to mark up
your code block as being written in some language that their highlighter
doesn't know about, you don't get an error message -- the code simply doesn't
get highlighted.

Because we don't recursively load dependencies for extensions, to test this,
you will need to create a composer.local.json in $IP and add:

    {
        "extra": {
            "merge-plugin": {
                "include": [
                    "extensions/SyntaxHighlight_GeSHi/composer.json"
                ]
            }
        }
    }

Then run `composer update`.

Bug: T85794
Change-Id: I07446ec9893fae3d1e394f435d3d95cf8be6bc33
2015-06-22 23:37:15 +01:00
Translation updater bot f3476de015 Localisation updates from https://translatewiki.net.
Change-Id: I8e043e7790514542c6c9f3638dc6fa2fc14025f9
2015-06-21 20:05:35 +02:00
Ed Sanders 28ff155a6c Use normal line numbers
'Fancy' line numbers are a fairly useless feature, not seen
in any other code highlighter. As the extension doesn't let you
choose a line number mode, default to normal.

Bug: T101602
Change-Id: Iccbd3ba6c91c58b0ea0f0c09832f1422936cd475
2015-06-09 16:02:18 +01:00
jenkins-bot 2794062be2 Merge "Remove redundant ResourceLoaderModule::getModifiedTime implementation" 2015-06-08 16:24:24 +00:00
Timo Tijhof c81eb5978c Compare against '$geshi->error' instead of '$geshi->error()' in prepare()
Geshi::error() is a method that returns an HTML string representing
the error.

Geshi->$error is an integer error code.

This code clearly means to compare against the integer code given that
GESHI_ERROR_NO_SUCH_LANG is an integer.

Verified by using eval.php to instantiate "new Geshi( '', 'js' );"
and $geshi->error:
> 2
but $geshi->error():
> "<br /><strong>GeSHi Error:</strong> GeSHi could not find the language"

Change-Id: I1ca77733d4b6b5481c5db6aba9f6b7dda6803099
2015-06-08 16:05:46 +01:00
Kunal Mehta 207a5e27be build: Updating development dependencies
* grunt-banana-checker: 0.2.1 → 0.2.2

Change-Id: Ie02e44cc819e191ad0246f491988dbbf1856b5b0
2015-06-05 17:14:21 -07:00
Translation updater bot 761bcf3cf9 Localisation updates from https://translatewiki.net.
Change-Id: I755a0d381b52d3f9ae99ca0ed0067f22bc6cc669
2015-06-05 21:13:28 +02:00
Timo Tijhof 7229fff207 Remove redundant ResourceLoaderModule::getModifiedTime implementation
Follows-up f37cee996e which replaced the getHashMtime() and
getDefinitionMtime() methods with dummies that always return 1.

These getModifiedTime() implementation was only tracking the
definition, which is already tracked by getVersionHash().

Bug: T94074
Change-Id: I6e37c3c2f85ef4599a8643b0efabc18de2f51ec4
2015-06-03 14:31:29 +00:00
Gilles Dubuc 097fc9069a Remove redundant position code defined in ResourceLoaderWikiModule
Depends on Ib1180c5b2126f4ba8ac5b54578fcce18a3f35d85

Bug: T97410
Change-Id: I2f78145200aec4ce57cb41a58f5b03266c903b67
2015-05-29 22:05:26 +02:00
James D. Forrester 0f8b00c709 build: Use npm for repo testing (jshint, jsonlint, jscs, banana)
Add three qqq messages to make it pass.

Change-Id: I77166ad79d8ad1497032ca7e571258bfc1850037
2015-05-29 17:21:59 +00:00
Gilles Dubuc 58c81408f5 Explicitly define module position
Style modules currently added through addModuleStyles default
to being in the head ("top" position). This is an unhealthy default,
since only critical styles that are needed at pageload should be
in the head. In order to be able to switch the default to "bottom",
existing module positions have to be defined explicitly.

Bug: T97410
Change-Id: Ie120a781ac1950abd7963d6f722aa316b5542b51
2015-05-29 15:28:06 +00:00
Kunal Mehta 0347b58a87 Set manifest_version in extension.json
Bug: T100745
Change-Id: I444f456011a62ccb36d59b624f7f1250e44c82f2
2015-05-28 20:39:54 -07:00
Translation updater bot c6b918cc81 Localisation updates from https://translatewiki.net.
Change-Id: If67080df2e761953c19874ab4e06948b1423194d
2015-05-25 22:38:22 +02:00
Translation updater bot 0c619cad8b Localisation updates from https://translatewiki.net.
Change-Id: Icc6d2763d1ad08bfcd0dba0ed4722aaaa4108cfa
2015-05-24 00:16:31 +02:00
Kunal Mehta b4853c7633 Revert "Revert "Add extension.json, empty PHP entry point""
Try #2. Our last attempt loaded $wgGeSHiSupportedLanguages late, and
would override anything if it was already set. We still load it late, but
only if it is not already set.

This reverts commit 033ca20746.

Bug: T88063
Change-Id: Iae0806e06a95b2d8932b3d9e078e6135dd6750a3
2015-05-20 14:36:46 -07:00
Legoktm 033ca20746 Revert "Add extension.json, empty PHP entry point"
This reverts commit 72d1e92263.

Change-Id: I47eab2842f195bf302de0ae3bf15beff1b48290f
2015-05-20 21:21:11 +00:00
Derk-Jan Hartman 72d1e92263 Add extension.json, empty PHP entry point
Bug: T88063
Change-Id: I42afa0bf81f4f89b81a11bcafcb8e4c032a2d173
2015-05-19 17:05:43 -07:00
Kunal Mehta a18bb2e699 Remove i18n shim
Change-Id: If73418a8ff66ae0155c1b798d817a26d0e14bb1e
2015-05-19 17:05:19 -07:00
Translation updater bot dcf27813a4 Localisation updates from https://translatewiki.net.
Change-Id: Iea83790f77e580a5f9481872e29e2a73b0db5b3b
2015-05-18 22:22:39 +02:00
Niklas Laxström 14fdd87897 Fix I062a2246
Change-Id: I38ef15c7cc162acb6101e327787631a586abfcde
2015-05-02 13:13:43 +02:00
Timo Tijhof 19a6005668 ResourceLoaderSchemaModule: Call parent getDefinitionSummary() method
This should've been the case already and will result in an exception
otherwise in MediaWiki core as of Ibb292d2416839.

Change-Id: I062a224662823224f3104d9e8d05abce47b1da81
2015-05-02 00:50:13 +01:00
Ori Livneh 4c92cbc430 Re-apply fix for Haskell syntax
See I210832c4.

Change-Id: I5e74332b22fe58a39f99c70adb429f795f18ae75
2015-04-17 10:46:29 -07:00
jenkins-bot 8ea05787d4 Merge "Add missing and new languages" 2015-04-10 12:17:24 +00:00
Timo Tijhof 7a46e84d69 ResourceLoaderGeSHiModule: Cache file mtime of __FILE__
There are 100s of instances of this module. This can slow things
down quite a bit in Vagrant when it recomputes the same timestamp
many times.

Change-Id: Iaebafe1acf7a0e30ebf86179961ad52f56bb689f
2015-04-03 07:09:02 +01:00
Timo Tijhof 4ebdd607f5 ResourceLoaderGeSHiModule: Use GESHI_VERSION instead of file mtime
Follows-up b6d8b1a5b.

Should be more accurate since this bumps whenever we update our
version of Geshi. For other changes in SyntaxHighlight_GeSHi.class
cache should not be pro-actively invalidated.

Change-Id: I1c2040ca9b8719adcbbacd195c5050acb6d93295
2015-03-31 19:37:03 +01:00
Derk-Jan Hartman dbf443c025 Add missing and new languages
Out geshi language list had not been updated after the last update and
we were missing a few language names containing - and _ like php-brief

Bug: T94292
Change-Id: I83bf1aeb95e1ed7c2cd2eba865987a772e3f08eb
2015-03-28 13:33:29 +01:00
Translation updater bot ffc64ed2b0 Localisation updates from https://translatewiki.net.
Change-Id: Icdde6fbd22c9b6e59f7a38ecf040049e15fe491a
2015-03-24 22:34:50 +01:00
Brad Jorsch 3fe85b9313 Add api-pretty-content class when pretty-printing API output
The API has wrapped its pretty-printed output since Id9cdf102. Apply an
appropriate class to preserve this now that GeSHi is handling it.

Unfortunately GeSHi itself doesn't support adding more than one arbitrary class
to the <pre> (and we're already using that), so we have to add it in a
post-processing step.

Bug: T88742
Change-Id: I38e41db5c341fe06ff825c82d5a9cd4810b7cc24
2015-02-27 19:12:36 -05:00
Chad Horohoe c8297429a6 Remove obvious function-level profiling
Change-Id: Idd5f9178987000df892dde70c11686ddd9306f10
2015-02-10 13:29:40 -08:00
Ricordisamoa b6c32b552e Add 'license-name' matching SPDX conventions
References:
http://spdx.org/licenses/
https://www.mediawiki.org/wiki/Manual:$wgExtensionCredits#license-name

Change-Id: Ibdd165eb5799c7eddf128c939e0cfdbd2cee8e1f
2015-01-29 15:05:09 +01:00
Derk-Jan Hartman 49044ad215 Allow "0" as the content of <syntaxhighlight>
The empty() function considers "0" to be empty. Makes empty() useless
for strings.

(cherry picked from commit 8d8fb22ebb)

Bug: T41643
Change-Id: If0e647e3be269edcb23748d246bc564483aff0d2
2015-01-05 12:49:59 +00:00
paladox 966ed89270 Set Geshi version in main php file
The version was set from the ExtensionTypes hook (which runs only on
Special:Version). WikiApiary and other API consumers were unable to
detect the version.

This is an amended resubmission of the reverted d69ae1f3ac, in which
the constant was declared twice.

Change include_once to require_once for langs file (follows-up 168e1296).

Bug: T75666
Change-Id: I836e0df942a066d80255c1b68472e7ee58124357
2015-01-05 12:39:45 +00:00
Translation updater bot f7a3487f56 Localisation updates from https://translatewiki.net.
Change-Id: Iebcc9f89dc190df67e32dc1d425fb892353ae561
2014-12-02 22:07:26 +01:00
Brad Jorsch 0566e200cf Fix highly recursive number highlighting regex
The regular expression used for number highlighting in GeSHi is highly
recursive, and easily overflows the low PCRE recursion limit on WMF
sites (and, on sites where the recursion limit isn't low, it can easily
crash PHP).

Fortunately, it's easy to fix for the common case.

This was reported upstream last time it occurred at
https://sourceforge.net/p/geshi/bugs/223/

Bug: T76352
Change-Id: I9e1f002838ffa546c12baf88517069c78a5e7b9d
(cherry picked from commit f21f048443)
2014-12-01 11:15:06 -05:00
Niklas Laxström 5cfbe978e1 Fix PHP Notice in Special:Version
Follow-up to broken revert Ic724f6fe1b1c

Change-Id: I61d19394997cc3499fa084d1b3dc8a7706a499d1
2014-11-27 16:27:53 +00:00
Translation updater bot d74d667425 Localisation updates from https://translatewiki.net.
Change-Id: If1b6f1ddb7d9e4e016eb98ea6d71dee460090e70
2014-11-26 22:36:30 +01:00
Ori Livneh 1369e4b813 Initialise in getSupportedLanguages()
Change-Id: Ic155c54ef9fe0dac3a3c09e563828ccb0dcaf481
2014-11-19 12:05:20 -08:00
Reedy a03277741a Revert "Fix tracking for version"
This reverts commit d69ae1f3ac.

Change-Id: Ic724f6fe1b1cbc969ac195762bdf517e129cd9dd
2014-11-19 16:29:52 +00:00
Ori Livneh 168e1296db Avoid file glob in SyntaxHighlight_GeSHi::getSupportedLanguages()
Store the list of supported languages in SyntaxHighlight_GeSHi.langs.php, which
is auto-generated via a maintenance script, updateLanguageList.php.

Change-Id: Ie0be7c42fa6716555c3e03e3f28734d7e0302664
2014-11-18 16:50:59 -08:00
jenkins-bot 97a9c6e6d7 Merge "Fix Lua comment blocks and string blocks." 2014-11-18 16:27:16 +00:00
paladox d69ae1f3ac Fix tracking for version
* wikiapiary does not detect the version so this way fixes the issue.

Note this has been tested.

Change-Id: I2ad43801cc71285cad8576657c5dc5e4668a37b3
2014-11-14 21:36:42 +00:00
Derk-Jan Hartman 633b18a1fc Fix Lua comment blocks and string blocks.
- Match comments non-greedily instead of greedily
- Re-add support for block strings (similar to heredoc)

Bug: 73281
Change-Id: Ib7f6eeb2df17434740fb85cee955d76762b56fe5
2014-11-13 22:39:24 +01:00
jenkins-bot 88fc1cbb8c Merge "Update GeSHi to 1.0.8.12 release" 2014-11-11 13:40:07 +00:00
Kunal Mehta f798181948 Don't overwrite existing value of $wgSyntaxHighlightModels
Currently extensions that want to add their model to $wgSyntaxHighlightModels
must do so in an extension function since they don't want to assume
that their extension is loaded after SyntaxHighlight GeSHi is.
But by not overwriting the array during initialization, extensions
don't have to worry about load order.

Also require a minimum of MW 1.24 which removed support for
register_globals.

Change-Id: I15c56690d156e90991aa86a3d79dbeaeb18dd6fd
2014-11-10 15:07:04 -08:00