Page Speed Optimization Libraries  1.9.32.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
css_minify.h
Go to the documentation of this file.
1 /*
2  * Copyright 2010 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http:///www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
18 
19 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_CSS_MINIFY_H_
20 #define NET_INSTAWEB_REWRITER_PUBLIC_CSS_MINIFY_H_
21 
22 #include "pagespeed/kernel/base/basictypes.h"
23 #include "pagespeed/kernel/base/string_util.h"
24 
25 namespace Css {
26 class Stylesheet;
27 class Charsets;
28 class Import;
29 class MediaQuery;
30 class MediaQueries;
31 class MediaExpression;
32 class FontFace;
33 class Ruleset;
34 class Selector;
35 class SimpleSelector;
36 class SimpleSelectors;
37 class Declaration;
38 class Declarations;
39 class Value;
40 class Values;
41 class FunctionParameters;
42 class UnparsedRegion;
43 }
44 
45 class UnicodeText;
46 
47 namespace net_instaweb {
48 
49 class MessageHandler;
50 class Writer;
51 
53 class CssMinify {
54  public:
56  static bool Stylesheet(const Css::Stylesheet& stylesheet,
57  Writer* writer,
58  MessageHandler* handler);
59 
61  static bool Declarations(const Css::Declarations& declarations,
62  Writer* writer,
63  MessageHandler* handler);
64 
65  private:
66  CssMinify(Writer* writer, MessageHandler* handler);
67  ~CssMinify();
68 
69  void Write(const StringPiece& str);
70  void WriteURL(const UnicodeText& url);
71 
72  template<typename Container>
73  void JoinMinify(const Container& container, const StringPiece& sep);
74  template<typename Iterator>
75  void JoinMinifyIter(const Iterator& begin, const Iterator& end,
76  const StringPiece& sep);
77 
80  void Minify(const Css::Stylesheet& stylesheet);
81  void Minify(const Css::Charsets& charsets);
82  void Minify(const Css::Import& import);
83  void Minify(const Css::MediaQuery& media_query);
84  void Minify(const Css::MediaExpression& expression);
85  void Minify(const Css::Selector& selector);
86  void Minify(const Css::SimpleSelectors& sselectors, bool isfirst = false);
87  void Minify(const Css::SimpleSelector& sselector);
88  void Minify(const Css::Declaration& declaration);
89  void Minify(const Css::Value& value);
90  void Minify(const Css::FunctionParameters& parameters);
91  void Minify(const Css::UnparsedRegion& unparsed_region);
92 
96 
98  void MinifyMediaStart(const Css::MediaQueries& media_queries);
100  void MinifyMediaEnd(const Css::MediaQueries& media_queries);
101 
103  void MinifyFontFaceIgnoringMedia(const Css::FontFace& font_face);
104  void MinifyRulesetIgnoringMedia(const Css::Ruleset& ruleset);
105 
107  void MinifyFont(const Css::Values& font_values);
108 
109  bool Equals(const Css::MediaQueries& a, const Css::MediaQueries& b) const;
110  bool Equals(const Css::MediaQuery& a, const Css::MediaQuery& b) const;
111  bool Equals(const Css::MediaExpression& a,
112  const Css::MediaExpression& b) const;
113 
114  Writer* writer_;
115  MessageHandler* handler_;
116  bool ok_;
117 
118  DISALLOW_COPY_AND_ASSIGN(CssMinify);
119 };
120 
121 }
122 
123 #endif
static bool Declarations(const Css::Declarations &declarations, Writer *writer, MessageHandler *handler)
Write minified Declarations (style attribute contents).
static bool Stylesheet(const Css::Stylesheet &stylesheet, Writer *writer, MessageHandler *handler)
Write minified Stylesheet.
Definition: css_minify.h:53