Help language development. Donate to The Perl Foundation

CSS::Properties zef:dwarring last updated on 2022-09-29

0.9.5  2022-09-30T05:13:03+13:00
    - fix parsing of rgb//hsl alpha channel as a percentage

0.9.4  2022-09-07T06:58:00+12:00
    Finesse tests & doc for CSS::Module 0.6.6, which supports:
    -- typeless extensions properties, which can hold any value
    -- :vivify mode - allow any property

0.9.3  2022-08-30T07:42:02+12:00
    - Handle measuring of SVG opacity & stroke related properties

0.9.2  2022-08-28T06:10:12+12:00
    - Fixed some SVG tests for CSS::Module 0.6.2+

0.9.1  2022-08-24T08:45:33+12:00
    - Add documentation on lengths and measuring

0.9.0  2022-08-22T06:52:05+12:00
    - Fix parsing to call &coerce sub #20
    - Initial CSS::Module::SVG integration (experimental)

0.8.5  2022-07-01T09:35:55+12:00
    - Add CSS::Box::Rect data structure. Use it to represent content,
      padding, border and margin boxes

0.8.4  2022-06-21T13:05:44+12:00
    - Fix cloning of a property-set that has explicit inherited
      properties #19

0.8.3  2022-06-16T09:53:11+12:00
    - Fix test in t/01-property-basic.t, failing with CSS::Module v0.5.11+
    - Fix another thread-safety issue

0.8.2  2022-05-22T20:08:37+12:00
    - Rename class CSS::Properties::Property to
    - Make independent property sets thread-safe. Add tests t/threads.t

0.8.1  2022-04-01T15:22:26+13:00
    - Upload to zef ecosystem

0.8.0  2022-02-08T13:51:46+13:00
    - Optionally use Raku FontConfig package for font matching
    - Add new CSS::Font::Pattern class to encapsulate font matching
    - CSS::Font pattern() now returns pattern objects
    - Deprecate $.write(:terse) option in favor of :!pretty #17

0.7.8  2021-11-21T05:44:57+13:00
    - Tweak measure() method
    - Extend copy() method to work at the class level

0.7.7  2021-11-09T06:56:03+13:00
    - Fix :$declarations handling in TWEAK; Fixes CSS::TagSet::Pango

0.7.6  2021-11-08T08:13:12+13:00
   - Add CSS::Font::Descriptor COERCE() method
   - Modified Bool() method. Returns True if defined and has properties,
     False otherwise.
   - Remove stray JSON::Fast usage

0.7.5  2021-09-04T11:09:17+12:00
   - Add CSS::Font::Descriptor; A CSS::Font subclass for @font-face rules.
   - Fix CSS::Font nearest-weight matching in match() method
   - Fix missing commas in @font-face 'src' serialization
   - Fix default value handling
   - Add copy() method

0.7.4  2021-08-19T09:24:58+12:00
   - Adjust at-font-face.t tests to CSS::Module 0.5.9+, which groups
     @font-face src comma separated terms into expression nodes.
   - Undo deprecation of fontconfig-pattern and find-font in last release.
     Electing to subclass and leave this in place as light-weight alternative.

0.7.3  2021-08-17T10:54:17+12:00
   - match() now returns a list of candidate fonts to allow final filtering
     by agent.
   - Filter ',' from @font-face src property.
   - Factor out CSS::Font::Loader as a separate module. Deprecating
     CSS::Font fontconfig-pattern() and load-font() methods.

0.7.2  2021-08-09T13:18:13+12:00
   - Rename CSS::Font select() to match() to match W3c terminology; more
     fully implement and test font matching to match on font stretch, style
     and weight.
   - convert font stretch to numeric in fontconfg-pattern() and pattern()
     methods. This makes it easier to implement the select() method.

0.7.1  2021-08-07T09:21:25+12:00
    - Deprecate CSS::Properties::Units in favor of CSS::Units
    - Add CSS::Font select() method. Scans a list of @font-face
      properties and returns the first match. Purely matches on
      font names (case insensitive), without considering
      character sets.
    - Fixed CSS::Font fontconfig-pattern() to correctly handle commas
      as separators.

0.7.0  2021-05-13T07:36:27+12:00
    - Add POD documentation + generated markdown in docs/ directory.
    - Remove classes:
      -- CSS::Properties::Box (deprecated)
      -- CSS::Properties::PageBox (deprecated)
      -- CSS::Properties::Edges (internal)
    - Rename class CSS::Properties::Font -> CSS::Font

0.6.6  2021-04-22T15:56:11+12:00
    - Add ast(:keep-defaults) option. These need to be retained in CSS::Rulesets
      when writing.

0.6.5  2021-04-07T09:10:49+12:00
    - Optimize to parent properties, for example 'background-color:blue;'
      now optimizes to 'background:blue;'

0.6.4  2021-04-06T12:17:57+12:00
    - Factored out CSS::Properties::Optimizer from CSS::Properties

0.6.3  2021-04-01T15:21:18+13:00
    - Width draw box css-width() and css-height() methods - Not
      strongly related to the box model. Moved to PDF::Style.  
    - Changed from-ast() and to-ast() from methods to subroutines

0.6.2  2021-03-24T09:19:40+13:00
   - Fixed font inheritance and improved other optimisations E.g.
     background-repeat: no-repeat; background-position: 50% 75%;
     now combines to: background:no-repeat 50% 75%;
   - Fixed property assignment sequence #13; border: 2px; border-bottom: 1px;
     now works as expected.
   - Fixed dropping of some terms with zero first value #14; background-position: 0 50%
     now serialises as expected
   - Fixed box property optimisations #15; border-style: solid; border-bottom-style: none;
     now serialises to: border-left-style:solid; border-right-style:solid; border-top-style:solid;
     (todo optimise to: border-style:solid solid none;)

0.6.1  2021-03-16T10:56:25+13:00
   - Fix computed() and inherit() regressions #11

0.6.0  2021-03-16T08:49:00+13:00
   - Added new CSS::Properties::Calculator class; factored out from
   - Fix handling of percentage values for margin and padding. Ignore
     (treat as zero) for border-width. Better conformance (hopefully)

   - refactored .can() .dispatch() and .FALLBACK() methods
   - rework 'dpi', 'dpcm', and 'dppx' units. Express as reciprocals
     of 'in', 'cm', and 'px'
   - further development of CSS::Properties::Font measure() method;
     add computed() method
   - rename sources *.pm6 -> *.rakumod
   - renamed classes CSS::Properties::Units -> CSS::Units, CSS::Properties::Box
     -> CSS::Box, CSS::Properties::PageBox -> CSS::PageBox
   - issue #4 !important is not inherited and has no affect on inheritance.
   - add '.important()' (parameter-less) candidate, which returns a map of all
     !important properties: my Bool %important{Str} = $css.important();
   - issue #5 don't inherit relative quantities, e.g. 'font-size: 1.5em'.
     generally these shouldn't be propagated and re-applied.
   - also add .parent() attribute and .inherited method to make it easier
     for agents to do their own inheritance.
   - issue #6 - fix optimization of 'inherit' and 'initial' component properties
   - Added CSS::Module::Property - A CStruct representation of property
     definitions to facilitate downstream optimizations (CSS::Properties).
   - Added .property-exists() method
   - Add t/extensions.t - just to make sure we handle alias extension properties
     introduced with CSS::Module 0.5.1
   - Skip unknown properties starting with '-' when inheriting. These are
     custom properties by definition.
   - Renamed role CSS::Properties::Units::Type ->
     CSS::Properties::Units. Added .scale() method. Define Time, Angle and
     Frequency units
   - Add CSS::Properties::Font .Str method
   - Add measure() and units() methods. Allow for
     variable base units, (e.g. 'pt', or 'in').
   - Add viewport-width and viewport-height attributes
   - Renamed method widths to measurements
   - Reintroduce '+' and '-' infix overloading for
     units calculations. '+css' and '-css' are
     still available as more explicit and strongly
     typed operators.
   - Adding CSS::Properties::PageBox (WIP)
   - Minor adjustments for Rakudo 2018.11+ Bleed
   - Adjust to Rakudo 2018.06+, including unordered
     hash keys and rw proxy accessors
   - Added +css and -css as experimental infix operators
   - Minor refactors to ast and optimize methods
   - Rename module CSS::Declarations -> CSS::Properties
    - CSS::Declarations::measure replaces CSS::Declarations::Font::pt
    - Assigning Nil to a property now deletes it. 
    - Support Color object assignments, e.g.:
      $css.border-color =, 255, 0);
    - Fix over-zealous optimization:
      This: border:5pt solid; border-color:red green blue yellow;
      Was optimized to: border:5pt solid red green blue yellow;
      Which is a step too far. The optimize() method now leaves the
      above alone. The general rule is that a property with multiple
      terms won't be further optimized.
    - Add fc-pattern method. a computed pattern for fontconfig matching
    - Fixed bug with processing a list of font families
    - Adjust for latest Color module; include Color::Conversion
    - Add bounds checks top >= bottom, right >= left
    - Add `move` and `translate` methods
    - Saner `Array` rw accessor
    - Replace .leading() method with .line-height()
    - Remove default exports. Everything is now tagged. :pt, :pt,
      :em, :ex, etc.
    - Avoid implicit export of '+' and '-' operators.
    - Add :ops export tag, which exports '➕' and '➖' for
      addition and subtraction with units conversion.
    - Remove rendering-specific 'build-box' method
    - Add 'font-length' method
    - Removed $!width & $!height - now handled as TWEAK options
    - Add 'em', 'ex' and '%' postfix operators
0.2.0 Add CSS::Declarations::Box, CSS::Declarations::Font
0.1.2 - Add :declarations constructor option. to enable construction from
        CSS declarations AST node.
      - Allow inheritance from objects or style strings
0.1.1 Added `.optimize` method. For direct optimization of ASTs, without
      the need to create intermediate objects
0.1.0 Improved write optimizations
      For example now rewrites style: margin-top: 1pt; margin-right: 2pt;
      as "margin:1pt 2pt"
0.0.4 CSS::Declarations:
     - allow list assignment. E.g.: $ :background-position<top left>;
       shortcut for: $ :background-position("top left");
0.0.3 CSS::Declarations::Units
    - Use 'but' for role application, not global 'does'.
    - Warn, but otherwise ignore illegal assignments:
      $css.azimuth = 'over-yonder'; # has no affect
    - handle default dependencies:
      -- border-color defaults to color
      -- text-align is 'left' or 'right' depending on direction
      (See Properties appendix)
0.0.1 Initial release