Commit graph

20 commits

Author SHA1 Message Date
Subramanya Sastry e59aaecbcf Use TokenStreamPatcher to convert table tags outside wikitables to text
* Keep track of table nesting in token stream patcher and use it to
  convert <td>, <tr>, and <th> tags to plain strings.

* This fix is only enabled on the top-level token stream.
  To support this, fixed the resetState function in the parser
  construction code to pass in a toplevel flag which lets the
  token stream patcher know the context it is in.

* Fixes 29 (wt2html,wt2wt,html2html,selser) tests and improves
  results of 1 previously blacklisted tests. The failing selser
  test is actually a false failure because selser is more accurate
  than non-selser wts.

* Consolidated a few separate tests into a single test that covers
  all this functionality.
  - This new test fails wt2wt and html2wt modes because serializer
    uses tokenizer information which continues to return table tokens
    and results in <nowiki> wrappers.

Bug: 66489
Bug: 66498
Change-Id: I9f42354ea9efb0f8adfc96c23760012220d00dd4
2014-06-24 12:33:55 -05:00
Gabriel Wicke 7db2d118dc Work around Cite reset issue
The Cite extension does not currently handle resetState calls in
sub-pipelines, and relies on sharing a single Cite instance between all
pipelines. Fixing this is a longer project, so this patch works around the
issue for now by passing a flag indicating resetState calls in sub-pipelines
and ignoring the call in Cite in that case.

Change-Id: If3d426a5311a55d1c1530860d2b665d3681f1aa9
2014-04-30 10:02:39 -07:00
Arlo Breault 8ed953ee0f Temp fix for handling non-string ref attribute vals
* Entities in ref name weren't expected

 * Fixes the crash from arwiki:تأثير_الدمعة_السوداء

 * Makes use of the fix from de3642b8dd4a804ac654f2943a900496f2c8b3f3

Bug: 63790
Change-Id: Icb8781b4d9decc5a8b115d0b11def4d18f5d5025
2014-04-15 14:27:12 -07:00
Arlo Breault a28fbbbac7 Only pass document.body to the post-processors
* With some other cleanup pulled out of the external ids patch.

Change-Id: I8cee994079579d922da97a4c1c793540bfd8d1b1
2014-04-03 16:05:36 -07:00
Subramanya Sastry d99166010c Minor code cleanup: Use forEach instead of map where appropriate
* Also replaced buf with newTokens in ext.core.TemplateHandler.js

Change-Id: I81e05a13c9373aa298d710b7942f9fe3cd802e63
2014-03-26 16:48:18 -05:00
Subramanya Sastry e8351a4f07 Cite: Parse <references> content all the way to DOM.
* Thus far, <references> tag content was being parsed to
  stage 2 and merged into main pipeline. This patch takes
  this all the way to DOM. This required some tweaks to
  handling of <ref>s nested inside <references>.

* Fixed up a buggy parser test in the bargain -- the old parsoid
  result was buggy as well. I verified output in the enwp
  sandbox.

Change-Id: Iff6c528066b71ce1b00dd769910a04ee66623340
2014-03-11 10:06:53 -05:00
Marc Ordinas i Llopis 99b75249f1 <references> handler should respect inTemplate pipeline option
Change-Id: Ibfc1ea97aef8681bfd3cf04dba0aa32824c076f0
2014-03-07 18:39:28 +01:00
Subramanya Sastry 5445cfcd92 DSR computation: Handle <ref> tags nested in <references>
* The current fix is a hack to fix dsr issues right away.
  Meanwhile, will invesitigate a fix that will involve processing
  <references> in its own subpipeline and persisting state into
  the top-level page.

* Fixes a known selser failure from bug 62025.

Change-Id: I0f80d68e927f500939a44af401cc73c07e24721f
2014-02-28 15:56:19 -06:00
Subramanya Sastry 742b5d4453 Renamed function name & reorder args for clarity + added docs.
* Renamed buildDOMFragmentForTokenStream --> buildDOMFragmentTokens
  and made env. the first arg.

* Added documentation to buildDOMFragmentTokens and encapsulateHTML

Change-Id: I7eccfd3f4dc5b4b91d20d1d24d98ec514df6dfbc
2014-02-21 14:37:10 -06:00
Subramanya Sastry 7a949a4eb5 Code cleanup: Pipeline utilities now take env and parent frame.
* Removed manager and passed in env and parent-frame to all
  utilities that process content in new pipelines.

* Added more documentation to mediawiki.Util.js.

* Renamed processAttributeToDOM to a more appropriate name.

* Added pipelineFactory property to env and used that to
  construct parsing pipelines everywhere.

Change-Id: Ic612e5630d19d4e3f5d6388bc5cd117d337fd799
2014-02-12 01:21:15 +00:00
Arlo Breault a0cbd6e4de Remove token caching and cloning
Bug: 51203
Change-Id: Ia377d5878ac048bab15dbd42187330bee653c6eb
2014-02-11 00:47:58 +00:00
Subramanya Sastry 34c33103bf Use Map.delete(..) to remove an entry from a map.
* Fixes crasher on frwiki:Mundos_opuestos_2 with oldid 99313179

Change-Id: Ide5a9594ebc7622bb7ff5fc3d6eac09a0f0e1642
2014-02-03 20:10:54 +00:00
Subramanya Sastry fc7985f5ca Added a flag to DOM-fragment unpacking to update fragment DSR
* This patch adds a flag to DOM fragment unpacking to update
  fragment DSR in cases where the fragment needs it (references
  block + reused template/extension/images content). In other
  cases of dom-fragment use, the DSR should not be updated.

  Ex: All cases where fragments are used to implement parsing
  scopes (all A-tag content currently) since DSR computation
  is set up with offsets in the top-level source.

  This is not just an optimization, but a correctness issue
  since the fragment unwrapper always sets the fragment DSR
  on the first node which would be incorrect in scenarios where
  the fragment DOM has multiple top-level nodes.

* Parser test runs now have better DSR values in certain cases.

Change-Id: If1f5bf98dab246a3c8a1869b38335e90268cb5c5
2014-01-30 18:19:10 -06:00
Gabriel Wicke 32a1718133 A few small performance tweaks
* Use string concatenation instead of Array.push & join for accumulators:
  http://stackoverflow.com/questions/7299010/why-is-string-concatenation-faster-than-array-join

Overall parser tests might be slightly faster, but the improvement seems to be
within the margin of error.

Change-Id: I5d9e4191a79253fa808c9b0a26052470e8613a79
2014-01-30 11:14:55 -08:00
C. Scott Ananian 301b9541b5 Uniformly use Array.isArray to test whether an object is an array.
This reads better than manually testing the constructor, and often
leads to terser code since we don't have to check whether the argument
is an non-null object before querying the constructor field.

Change-Id: I53ec87d6e80d658aa3d26dc2b613dc6c58e2d026
2014-01-27 17:28:11 -05:00
C. Scott Ananian b4fd3bef6f Use es6 methods instead of fakejquery.
In particular, use `Array.isArray` instead of `$.isArray`, and
`Object.assign` instead of `$.extend`.  `Object.assign` operates only on own
properties, so use `Object.create` on the prototype where necessary to
get inherited properties.  `Object.assign` does a simple assignment and
is appropriate in most places, but be careful if we ever install
getters/setters on a prototype.

Implement `Util.clone()` from scratch to have a jquery-compatible deep
clone operation.  In particular, this needs to ignore objects which
aren't "plain objects", so we don't try to clone DOM nodes.  Our
definition of a "plain object" is compatible with jquery/zepto.js, and
is thus something of a hack.  We should eventually replace this with a
`console.assert()` and remove/rewrite the places where we try to clone
objects which contain DOM trees and other cruft.

Change-Id: I88c8fe41a9be84c167d5a0ea1187fd258f077968
2014-01-27 17:21:28 -05:00
Arlo Breault eced96cc2c Move .data off DOM nodes
* For now it stores in .dataobject, freeing up .data to
   handle <object> elements.

 * Adds a test that crashes master.

Bug: 57394
Change-Id: I4207d76ad9dab660e890008b2ee5014554ce52c8
2014-01-15 16:59:18 -06:00
Arlo Breault d2ba2d73e7 Properly bump reference anchors
* Adds an index of all the references on a page in order to avoid
   repeating attrs when multiple <references /> tags are present.

 * Update tests to reflect the new behaviour.

Bug: 59782
Change-Id: Ia44bf59a9304788aca170041d3b85f53557151fc
2014-01-13 12:09:54 -05:00
Arlo Breault a372d97939 Use maps where wanting
Comments seemed to indicate so.

Change-Id: I63d0524d134d8be166403cfa9d6400cecc1749ed
2014-01-09 22:33:57 -05:00
Gabriel Wicke 4cfad3a771 Clean up repo for Parsoid service only
* remove non-JS code (PHP, cpp, misc)
* move js code to the root dir

Change-Id: Ibdf1c0ea46f128adc91238b145c46382c6f4d550
2013-12-13 14:53:24 -08:00
Renamed from js/lib/ext.Cite.js (Browse further)