Page Speed Optimization Libraries  1.2.24.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Friends
net_instaweb::JsCombineFilter Class Reference

#include "js_combine_filter.h"

Inheritance diagram for net_instaweb::JsCombineFilter:
net_instaweb::RewriteFilter net_instaweb::CommonFilter net_instaweb::EmptyHtmlFilter net_instaweb::HtmlFilter

List of all members.

Public Member Functions

 JsCombineFilter (RewriteDriver *rewrite_driver)
virtual const char * id () const

Static Public Member Functions

static void InitStats (Statistics *statistics)
 Registers the provided statistics variable names with 'statistics'.

Static Public Attributes

static const char kJsFileCountReduction []
 statistics variable name

Protected Member Functions

virtual void StartDocumentImpl ()
 RewriteFilter overrides --- HTML parsing event handlers.
virtual void StartElementImpl (HtmlElement *element)
virtual void EndElementImpl (HtmlElement *element)
virtual void Characters (HtmlCharactersNode *characters)
 Called for raw characters between tags.
virtual void Flush ()
virtual void IEDirective (HtmlIEDirectiveNode *directive)
virtual const char * Name () const
 The name of this filter -- used for logging and debugging.
virtual RewriteContextMakeRewriteContext ()
virtual const UrlSegmentEncoderencoder () const

Friends

class JsCombineFilterTest

Detailed Description

Implements combining of multiple external JS files into one via the following transformation:

<script src="a.js"> <stuff> <script src="b.js">

gets turned into:

<script src="a.js+b.js"> <script>eval(mod_pagespeed_${hash("a.js")})</script> <stuff> <script>eval(mod_pagespeed_${hash("b.js")})</script>

where $hash stands for using the active Hasher and tweaking the result to be a valid identifier continuation. Further, the combined source file has the code: var mod_pagespeed_${hash("a.js")} = "code of a.js as a string literal"; var mod_pagespeed_${hash("b.js")} = "code of b.js as a string literal";


Constructor & Destructor Documentation

rewrite_driver is the context owning us, and filter_id is the ID we are registered under.


Member Function Documentation

virtual const UrlSegmentEncoder* net_instaweb::JsCombineFilter::encoder ( ) const [inline, protected, virtual]

All RewriteFilters define how they encode URLs and other associated information needed for a rewrite into a URL. The default implementation handles a single URL with no extra data. The filter owns the encoder.

Reimplemented from net_instaweb::RewriteFilter.

virtual void net_instaweb::JsCombineFilter::Flush ( ) [protected, virtual]

Notifies the Filter that a flush is occurring. A filter that's generating streamed output should flush at this time. A filter that's mutating elements can mutate any element seen since the most recent flush; once an element is flushed it is already on the wire to its destination and it's too late to mutate. Flush is initiated by an application calling HttpParse::Flush().

Flush() is called after all other handlers during a HttpParse::Flush().

Reimplemented from net_instaweb::EmptyHtmlFilter.

virtual void net_instaweb::JsCombineFilter::IEDirective ( HtmlIEDirectiveNode directive) [protected, virtual]

Called for an IE directive; typically used for CSS styling. See http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx

Todo:
TODO(mdsteele): Should we try to maintain the nested structure of the conditionals, in the same way that we maintain nesting of elements?

Reimplemented from net_instaweb::EmptyHtmlFilter.

Generates a RewriteContext appropriate for this filter. Default implementation returns NULL. This must be overridden by filters. This is used to implement Fetch.

Reimplemented from net_instaweb::RewriteFilter.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines