1<?php
2// $Header: /cvsroot/html2ps/css.content.inc.php,v 1.8 2007/03/15 18:37:30 Konstantin Exp $
3
4require_once(HTML2PS_DIR.'value.content.php');
5
6/**
7 * Handles 'content' CSS property (
8 *
9 * 'content'
10 *  Value:   normal   |   [   <string>   |   <uri>   |   <counter>   |
11 *  attr(<identifier>)  | open-quote |  close-quote |  no-open-quote |
12 *  no-close-quote ]+ | inherit
13 *  Initial:  	normal
14 *  Applies to:  	:before and :after pseudo-elements
15 *  Inherited:  	no
16 *  Percentages:  	N/A
17 *  Media:  	all
18 *  Computed  value: for  URI  values, the  absolute  URI; for  attr()
19 *  values, the resulting string; otherwise as specified
20 *
21 * This property  is used with the :before  and :after pseudo-elements
22 * to  generate  content in  a  document.  Values  have the  following
23 * meanings:
24 *
25 * normal
26 *    The pseudo-element is not generated.
27 * <string>
28 *    Text content (see the section on strings).
29 * <uri>
30 *    The value  is a URI that  designates an external  resource. If a
31 *    user  agent cannot  support the  resource because  of  the media
32 *    types it supports, it must ignore the resource.
33 * <counter>
34 *    Counters  may   be  specified  with   two  different  functions:
35 *    'counter()'   or  'counters()'.  The   former  has   two  forms:
36 *    'counter(name)' or 'counter(name, style)'. The generated text is
37 *    the value of  the named counter at this  point in the formatting
38 *    structure; it is formatted  in the indicated style ('decimal' by
39 *    default).   The   latter    function   also   has   two   forms:
40 *    'counters(name, string)' or 'counters(name, string, style)'. The
41 *    generated text is the value  of all counters with the given name
42 *    at  this point  in the  formatting structure,  separated  by the
43 *    specified  string. The  counters are  rendered in  the indicated
44 *    style  ('decimal'  by default).  See  the  section on  automatic
45 *    counters and numbering for more information.
46 * open-quote and close-quote
47 *    These  values are replaced  by the  appropriate string  from the
48 *    'quotes' property.
49 * no-open-quote and no-close-quote
50 *    Same as 'none', but increments (decrements) the level of nesting
51 *    for quotes.
52 * attr(X)
53 *    This function returns  as a string the value  of attribute X for
54 *    the subject of the selector. The string is not parsed by the CSS
55 *    processor.  If  the subject  of  the  selector  doesn't have  an
56 *    attribute X,  an empty string is  returned. The case-sensitivity
57 *    of attribute  names depends on  the document language.  Note. In
58 *    CSS 2.1,  it is  not possible to  refer to attribute  values for
59 *    other elements than the subject of the selector.
60 */
61class CSSContent extends CSSPropertyHandler {
62  function CSSContent() {
63    $this->CSSPropertyHandler(false, false);
64  }
65
66  function &default_value() {
67    $data =& new ValueContent();
68    return $data;
69  }
70
71  // CSS 2.1 p 12.2:
72  // Value: [ <string> | <uri> | <counter> | attr(X) | open-quote | close-quote | no-open-quote | no-close-quote ]+ | inherit
73  //
74  // TODO: process values other than <string>
75  //
76  function &parse($value) {
77    if ($value == 'inherit') {
78      return CSS_PROPERTY_INHERIT;
79    };
80
81    $value_obj =& ValueContent::parse($value);
82    return $value_obj;
83  }
84
85  function get_property_code() {
86    return CSS_CONTENT;
87  }
88
89  function get_property_name() {
90    return 'content';
91  }
92}
93
94CSS::register_css_property(new CSSContent);
95
96?>