Commit graph

522 commits

Author SHA1 Message Date
Timo Tijhof 206f0fd585 Fix "MWException: Unexpected output from Pygments" in highlight fallback
Follows-up 043969f84e.

This caused a fatal MWException when saving/reading pages that contain a
<source> that couldn't be highlighted (e.g. no lang attribute, unknown
lang, or too large).

Specifically when wgWellFormedXml=false, in which case $out isn't
just from Pygments, but actually from our own Html::element.

Change-Id: Ib299a274d28021b2c7bba52d763dd1e17c1f09ec
2015-07-07 22:12:53 +01:00
Translation updater bot 509a23af6b Localisation updates from https://translatewiki.net.
Change-Id: I58468794ad416324a72294756ad5040525392a55
2015-07-07 22:11:05 +02:00
Translation updater bot 04f2b607fa Localisation updates from https://translatewiki.net.
Change-Id: I741f2f976cbe328d61c35b89584829cb00589e04
2015-07-06 21:48:04 +02:00
Bartosz Dziewoński 48bf989cad Highlight background of whole lines, not just text in them
Bug: T103964
Change-Id: Ia1036f00e05634fe6b7e3b65af2a34fc91a540e5
2015-07-05 23:39:38 +00:00
Bartosz Dziewoński 043969f84e Refactor final output formatting
* Use 'nowiki' strip marker to prevent list processing (also known as
  doBlockLevels()). This resolves various issues related to using
  <syntaxhighlight/> blocks in lists and lists suddenly appearing
  inside <syntaxhighlight/> blocks. Fixes T17333, T25674, T104067.

* To prevent <p/>-wrapping resulting from the above, add our own
  wrapper <div/> around the output.

* Since we already have our own wrapper, remove Pygments' one and
  extend it with custom attributes. This resolves some regressions
  from the GeSHi migration. Fixes most of T103964.

Bug: T17333
Bug: T25674
Bug: T103964
Bug: T104067
Change-Id: I3afd1224a18549c62cd4a95fd046affa6d1d3b3f
2015-07-05 22:03:24 +00:00
Translation updater bot 1b3f2c4dd1 Localisation updates from https://translatewiki.net.
Change-Id: I40b6725bafcb9fe210d9e4d09c4ca1e55ab6b86e
2015-07-05 22:01:39 +02:00
jenkins-bot df8416e973 Merge "Add a tracking category on pages that contain invalid <syntaxhighlight> attributes" 2015-07-05 17:03:31 +00:00
Translation updater bot ead316781c Localisation updates from https://translatewiki.net.
Change-Id: Ic92c154eb2146ad65470d911a492e724f1024428
2015-07-04 20:38:55 +02:00
Translation updater bot 770c037576 Localisation updates from https://translatewiki.net.
Change-Id: I8e47cda14752c7b1dad8b892a8de767bf3b7a27e
2015-07-03 20:43:06 +02:00
Ori Livneh f41f26a85c Add a tracking category on pages that contain invalid <syntaxhighlight> attributes
Do this by having SyntaxHighlight_GeSHi::highlight() return a Status object
rather than a plain string, and by making it the highlight method's job to look
up a lexer for a language.  The actual warning text is not outputted anywhere
yet; deferring that for a follow-up patch.

Bug: T103586
Change-Id: Id839f925a56ab09a8423958327b9aefd7207ef37
2015-07-02 23:14:34 -07:00
Translation updater bot 059866eaa9 Localisation updates from https://translatewiki.net.
Change-Id: I2083152007dd2c2058855b42fdcf43ef463ebd58
2015-07-02 21:29:17 +02:00
Translation updater bot 9c0af782b7 Localisation updates from https://translatewiki.net.
Change-Id: I66334561ea8edc4bec8d13172688487aaa54f01c
2015-06-30 21:25:14 +02:00
Translation updater bot 3c9918d599 Localisation updates from https://translatewiki.net.
Change-Id: I636e7fa2b038f25d0117d245ab96313a41ad771f
2015-06-29 20:52:43 +02:00
Translation updater bot edd57c8773 Localisation updates from https://translatewiki.net.
Change-Id: Ifa35c9fbcb3b36bed6d8e4bfe803bf9d5372bab6
2015-06-28 22:17:38 +02:00
Translation updater bot c002db819f Localisation updates from https://translatewiki.net.
Change-Id: I7403992f2054fdf1973f9ccd33b08c37cdf2d494
2015-06-26 21:58:13 +02:00
Ori Livneh 927f40e98a Hide the red border around syntax errors
MZMcBride noticed the red border around '國' in
https://en.wikipedia.org/wiki/Swift_(programming_language)#Example_code

That particular case happens to be a Pygments bug, because multibyte characters
are valid variable names in Swift. But even in cases of legitimate syntax
errors, I don't think we want to show the red border. This behavior may be
useful in code editors, but it is not useful in a wiki environment, especially
given the longstanding habit of using an existing, mostly-compatible lexer to
highlight a language for which no specific lexer exists.

To fix this, override the style in pygments.wrapper.css, and swap the order in
which the two CSS files are concatenated, so that in general we have the
ability to override Pygments-generated CSS.

Change-Id: I304fdaf3a462445d316e0f7fecc983fa87afc629
2015-06-25 17:24:15 -07:00
jenkins-bot b572c46d8f Merge "Avoid displaying double borders for inline code snippets" 2015-06-25 23:40:06 +00:00
Timo Tijhof f8b63304eb Support local composer setup
This makes installation easier for local development.
Per https://www.mediawiki.org/wiki/Manual:External_libraries

I was supicious about whether 'use KzykHys\Pygments\Pygments;'
works in a file if the namespace/class itself is only loaded
later, but it works fine.

Ref T103890.

Change-Id: Ia1a577f555cd8ab09969dec219316bc1e76769f4
2015-06-25 22:49:53 +00:00
Translation updater bot abeb4dd3ca Localisation updates from https://translatewiki.net.
Change-Id: I30c6bf310e0bce91f142678f50fb3a53df5b555c
2015-06-25 20:47:57 +02:00
Bartosz Dziewoński 892b52a30d Avoid displaying double borders for inline code snippets
Before we started using the 'code' tag for inline code snippets,
<code><syntaxhighlight enclose=none ...>...</syntaxhighlight></code>
was a common pattern. Continue supporting it in existing content.

Follow-up to 04293baad9. My IRC comments
about this were seemingly forgotten, and the code I added in
5b7522a5fc to handle this problem
unceremoniously removed.

Bug: T85794
Change-Id: I8e52089fed41e78fb60ddd5b7c12075056265dd9
2015-06-25 13:38:37 +02:00
Bartosz Dziewoński ca778d0a99 Revert "Remove obsolete mw-highlighter styles"
The 'direction' rules must not be applied to regular preformatted
text in MediaWiki core, only to syntax-highlighted programming
language code.

(Not reverting the part that removes 'monospace' rule, *that* is
superfluous.)

This reverts commit f834b719b9.

Bug: T103780
Change-Id: Ie7e9123ab3456aa6fff0485431fe81cd5eb31fa2
2015-06-25 13:05:19 +02:00
Ricordisamoa b8bad5b86f Follow-up for Idb7e03aee: update i18n message for Pygments switch
Change-Id: I6babe03f7de57cfa14dfbc976c73cc68b0204705
2015-06-25 11:27:47 +02:00
Timo Tijhof e033d2db9e Add parser tests for block and inline behaviour
Change-Id: I0af26e8b86f2f9060bd88db6d36449d983978f09
2015-06-25 05:46:42 +01:00
Timo Tijhof f834b719b9 Remove obsolete mw-highlighter styles
The styles in MediaWiki core for <pre> already cover this. And
for skins that want different styles, SyntaxHighlight should not
have been overriding it.

Bug: T103780
Change-Id: Ib863288a9a4530b183cf5fdb692489363d82a50f
2015-06-25 05:43:24 +01:00
Timo Tijhof 6b050bac51 Document the 'enclose' and 'inline' parser tag attributes
It previously supported more values, but since the switch to Pygments
these additional values are no longer supported. It now always
outputs <pre> or <code>, not e.g. <div>.

Change-Id: I406eee0eeeb3b9aaec3fa464ffdf6e200c868b84
2015-06-25 05:43:04 +01:00
Legoktm f1c6b66bac Revert "Add Pyglet, a web micro-service for highlighting using Pygments"
Doesn't work, shouldn't have been self-merged either.

This reverts commit 7e4efbe114.

Change-Id: I52b200d3fb0fea101317740e4ce63a7b71015303
2015-06-25 01:11:54 +00:00
Ori Livneh 7e4efbe114 Add Pyglet, a web micro-service for highlighting using Pygments
Pyglet is an internal web service that listens on port 31337 by default and
which accepts syntax highlighting request via POST. If $wgPygletURL is set to a
URL of a Pyglet instance, the extension will attempt to query the web service
instead of shelling out.

Change-Id: Ic49f4cd77585dbffc5392e80904754ff889b8a63
2015-06-24 17:57:50 -07:00
Timo Tijhof 1a90245838 ext.geshi.visualEditor: Store languages in the module instead of mw.config
Also fixed typo language -> langauge.

Change-Id: Ic4bfeb275c479df17e5dd41d5173d9807f6bc1a0
2015-06-25 00:35:20 +00:00
Timo Tijhof 6ba411fe2f Merge ext.geshi.data and ext.geshi.visualeditor modules
Until and unless there is an explicit need (and intent to support)
a public interface to use this data elsewhere, there is no need
for it to be a separate module.

It can be its own class, but at the resource level this data should
be considered a JavaScript file. And we don't create separate modules
for each file. They are in the same module unless they should be
semantically loaded in unrelated page contexts.

The module registery is not a javascript class autoloader. There
is a global cost to adding more modules to this registry.

Change-Id: Ifeddef8cfe00b6c115734f92eceab251a0b75bdb
2015-06-25 00:32:03 +00:00
Timo Tijhof e880ae6694 Removed unused getDefinitionSummary() implementation.
Follows-up b403b58. When using the content to version the module,
no summaries or modified hashes are used. The content itself is
hashed to naturally invalidate stale cache.

Change-Id: Ic6a20274e19fcf48cb8fe2ef39e48feb7c456391
2015-06-24 22:29:09 +00:00
Ed Sanders b403b58682 Add VisualEditor support
Most functionality is provided by MWExtensionNode & MWLiveExtensionInspector.

Bug: T45126
Bug: T60388
Bug: T69515
Change-Id: If502a8bd2199b6ceb824e02fdfd13c81c39b53b4
2015-06-24 22:43:42 +01:00
Translation updater bot 0e43b2dc8b Localisation updates from https://translatewiki.net.
Change-Id: I0da3c18f5d7f268b3b10c16b406769cf26640afe
2015-06-24 22:07:23 +02:00
jenkins-bot ef3e89cc7c Merge "Use <code> instead of <span> for inline code snippets" 2015-06-24 18:11:32 +00:00
Ori Livneh c134686c4f Follow-up for I07446ec98: update i18n messages for Pygments switch
Change-Id: Idb7e03aeeb3e428f6767c58b92c10b1b7ea58524
2015-06-24 17:13:12 +00:00
jenkins-bot 09cebbb56a Merge "On parser cache invalidation, purge Varnish as well." 2015-06-24 01:19:47 +00:00
Ori Livneh 32547b7657 On parser cache invalidation, purge Varnish as well.
This way, a visit by a logged-in user to a page with stale syntax highlighting
will also trigger a purge of the page for anons in Varnish.

Change-Id: I366563839c89d9546447d3e58bb9239a36bf70bd
2015-06-23 18:09:19 -07:00
jenkins-bot 100f57bd23 Merge "Support 'inline' as an alias for 'enclose="none"'" 2015-06-23 22:55:41 +00:00
Bartosz Dziewoński 8593fef342 Add 'direction: ltr;' to .mw-highlight
I'm not entirely sure that this will always behave correctly on RTL
wikis, but currently we never behave correctly on RTL wikis.

Bug: T85794
Change-Id: I8af2b18884ec619d581f9ceed737c5628b647086
2015-06-23 22:02:35 +00:00
Kunal Mehta 8dc96a9c0f RejectParserCacheValue may pass a WikiPage or Article
Change-Id: I03b6b00ab54037d1adf2b0abd17a88294dfc21ee
2015-06-23 14:56:33 -07:00
Kunal Mehta 01802ac3fb Use RejectParserCacheValue hook to invalidate caches that were using GeSHi
Change-Id: I47de88dc1c2f2380e41e6af0d3222b46c9c65569
2015-06-23 21:26:44 +00:00
Kunal Mehta 139f68c410 Render "xpp" as "java"
Per jayvdb on wikitech-l, who said it looks "quite good":
 https://lists.wikimedia.org/pipermail/wikitech-l/2015-June/082166.html

Change-Id: I234a4da51592cabddce356c692471e90e6f2a829
2015-06-23 11:29:08 -07:00
Ori Livneh 41db8dbe38 Add cache versioning and makeCacheKey method
* Don't json_encode() the whole code block, that's stupidly expensive when the
  code is a string already. It's only the options array that needs to be
  explicitly stringified.
* Incorporate a cache version parameter input in the cache key so we can manage
  changes to the extension's HTML output.
* Only use wfGlobalCacheKey if available, to maintain 1.25 compat.

Change-Id: I8d536f9011763f47667502225ed4459be7d2ed4a
2015-06-23 09:46:58 -07:00
Ori Livneh 04293baad9 Use <code> instead of <span> for inline code snippets
Change-Id: Ibc07169fc3b91509aa2d98b8ae910c901d2f1703
2015-06-23 08:38:56 -07:00
Ori Livneh fa6e77e167 Support 'inline' as an alias for 'enclose="none"'
I think it's easier to understand and easier to remember.

Change-Id: I3c0e8bc209956b8d2ba071baa40142c731f56524
2015-06-23 08:38:56 -07:00
jenkins-bot 9f5eade94c Merge "Add basic parser tests for functionality of non-recognized languages" 2015-06-23 15:29:31 +00:00
Bartosz Dziewoński 6a20c7f38d Correct whitespace around <syntaxhighlight> blocks
Remove trailing \n after closing </div>, as it results in multiple
newlines that confuse the MediaWiki parser into generating <p><br></p>
all over the place.

Bug: T85794
Change-Id: Iffaa73b49c29e94d8a1a659dd40b845a9f4ce0c1
2015-06-23 15:25:57 +00:00
Bartosz Dziewoński 5b7522a5fc Unbreak <syntaxhighlight enclose="none">
It was always "none" and not "span", this must've been an accidental change.

Also add a CSS tweak to better render the common pattern of
<code><syntaxhighlight enclose="none">...</syntaxhighlight></code>.

Bug: T85794
Change-Id: I3ed1b7f3c954374b49fc9a97881ea5236415cb6f
2015-06-23 15:21:29 +00:00
jenkins-bot ce197a5904 Merge "Correct behavior of <syntaxhighlight highlight="[lines]"> with more than one line" 2015-06-23 15:17:46 +00:00
Bartosz Dziewoński d30a5724eb Correct behavior of <syntaxhighlight highlight="[lines]"> with more than one line
* Restore parseHighlightLines() function from before
  6484894497, which introduced a
  regression in parsing line ranges. There are no tests for this and
  I'm not going to debug the regexes.
* Use a space rather than a comma as separator when passing the list
  of line numbers to Pygments.

Bug: T85794
Change-Id: Ib86c216308a973000a4129c2c46286ec1dc988e1
2015-06-23 16:03:17 +02:00
Derk-Jan Hartman d272c1e0e2 Enable syntaxhighlighting on mobile target
Now that we switched to pygments, there should be mo reason not to
enable this on mobile

Bug: T100563
Change-Id: I008b71d4cef04fb7dc7c2ad574032f9c4645b063
2015-06-23 13:17:03 +02:00