* Only one instance of Cite handler is created and it deals with the
final expanded token stream. So, effectively there is no information
about whether we are processing in a top-level or nested template
context. So, we instead use tsr.
Change-Id: I002f421fc78576e869cc8fbcdc386ef0abb09ca9
* Added template-wrapping information in cite-expansion with
Object/Ext/Cite RDFa type.
* Added 'ref' tag to whitelisted tags (temporary workaround to
let <ref name='blah' /> to RT correctly till we handle this
properly).
* Added support for self-closing, but non-void tags.
* Deleted Object/Template/Content type attribute since it was
not used.
* Renamed Object/Template/Attributes to ExpandedAttrs/Template
to distinguish template attribute code paths from content
code paths -- could possibly be renamed to something more
suitable later on.
Results:
- With this experimental support, RT diffs on the en:Barack_Obama
page are vastly reduced.
Change-Id: I018f03df102764d3e39442ae359b751056a38c2f
* Moved tokensToString and KVtoHash from parser.environment
to Util -- got rid of excessive warnings from tokensToString.
* Replaced used of Util.lookupKV(blah).v with Util.lookup(blah)
Change-Id: Ic48d5d0c79045b9789dc61a2b14df3fc2acf7aa5
* Nested parser functions are no longer meta-wrapped similar to
nested templates.
* HTML attributes which derive all or part of their key/value
from a template are not template-wrapped, but are marked to
be tracked via different rdfa meta attributes. The actual
tracking and addition of new meta attrs. is yet to be
implemented.
* Parser pipeline construction updated to use an options object
rather than individual option args -- used to support the two
features above.
* With this fix, we can now distinguish between the following
scenarios:
Templates:
- {{echo|[[Foo|bar]]}} -- regular wrapping of the entire link
- [[{{echo|Foo}}|bar]] -- no wrapping, but href marked for tracking
- [[Foo|{{echo|bar}}]] -- link text is wrapped.
Parser functions:
- {{uc:foo}} -- regular wrapping.
- {{uc:{{lc:{{uc:foo}}}}}} -- only the top-level parser function
is wrapped, the nested lc and uc parser functions are not.
Change-Id: I512b8de9838ad42d9255ebcd73074b3898294cd8
* /js/ for JavaScript / nodjs implementation
* /js/lib for js modules
* /js/tests for js test runners and unit tests
Change-Id: I7da1ea2a62b9312be0f1b492447340427f6a14fb
* Copied over utility methods from mediawiki.parser.environment.js
to ext.Util.js.
* Moved over utility method from mediawiki.parser.defines.js to
ext.Util.js.
* Converted Util to be a singleton object rather than an allocatable
class. There is no reason to allocate a new utility class everywhere
since this utility object has no useful state.
* Fixed up use of utility methods to use Util rather than env.
Change-Id: Ib81f96b894f6528f2ccbe36e1fd4c3d50cd1f6b7
- Added extra debug_name parameter to addTransform which is
used in addTransform to output useful trace info.
Change-Id: I160ba0c45f681149375e32ab19f97baa439b09a8
Pages titles with a wikipedia interwiki prefix now load the page from
corresponding Wikipedia. Links in a page then stay within the given language.
Note that Parsoid currently makes no effort to recognize localized namespaces,
so it won't render media files, categories etc correctly.
Change-Id: I7bc4102e81a402772ea23231170734d580ea15b9
other tokens. This is only the first half of the conversion. The next step is
to drop the type attribute on most tokens and match on the constructor in the
token transform machinery.
* TokenTransformDispatcher is now renamed to TokenTransformManager, and is
also turned into a base class
* SyncTokenTransformManager and AsyncTokenTransformManager subclass
TokenTransformManager and implement synchronous (phase 1,3) and asynchronous
(phase 2) transformation stages.
* Communication between stages uses the same chunk / end events as all the
other token stages.
* The AsyncTokenTransformManager now supports the creation of nested
AsyncTokenTransformManagers for template expansion.
The AsyncTokenTransformManager object takes on the responsibilities of a
preprocessor frame. Transforms are newly created (or potentially resurrected
from a cache), so that transforms do not have to worry about concurrency.
* The environment is pushed through to all transform managers and the
individual transforms.
This required a few further additions to the TokenTransformDispatcher. In
particular, there is now an 'any' token match whose callbacks are executed
before more specific callbacks. This is used by the Cite extension to eat all
tokens between ref and /ref tags. This need is very common, so should be
broken out to an intermediate layer in the future.
In general, the requirements for the TokenTransformDispatcher API are now
clearer, and the API should likely be cleaned up / simplified.