Commit graph

64 commits

Author SHA1 Message Date
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