[webkit-changes] [WebKit/WebKit] 606056: Add utilities to process-css-properties to make ge...

Sam Weinig noreply at github.com
Sun Nov 27 04:58:21 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6060568db87cd997f4b198faf8da5c8685b608dd
      https://github.com/WebKit/WebKit/commit/6060568db87cd997f4b198faf8da5c8685b608dd
  Author: Sam Weinig <weinig at apple.com>
  Date:   2022-11-27 (Sun, 27 Nov 2022)

  Changed paths:
    M Source/WebCore/css/process-css-properties.py

  Log Message:
  -----------
  Add utilities to process-css-properties to make generation simpler
https://bugs.webkit.org/show_bug.cgi?id=248362
rdar://102682125

Reviewed by Darin Adler.

Adds a few utilities to make code generation a bit more streamlined.

- `Writer` class replaces direct use of file output and now automatically
  handles newlines and indentation for callers. Includes a `context manager`,
  a python object that can be used with a `with` statement to scope some
  activity, call `Indent` to support easy scoped indentation.

  As an example. this snippet shows off both automatic newlines and the
  indentation context manager:

  ```
    writer.write("void foo(int x)")
    writer.write("{")
    with writer.indent():
        writer.write("use(x);")
    writer.write("}")
  ```

  and results in output of:

  ```
    void foo(int x)
    {
        use(x);
    }
  ```

- Additionally, the GenerationContext got some new utilities for creating common
  constructs like includes, forward declarations and namespaces. For namespaces,
  another context manager was added to allow automatic closing of the namespace
  when the `with` block ends.

The new utilities and Writer class still allow for use of custom whitespace where
it is more practical or creates more readable code, so some parts, notably parts
of StyleBuilderGenerated.cpp don't fully adopt the indentation mechanism (though
they do make use of the newline generation).

* Source/WebCore/css/process-css-properties.py:
(Writer):
(Writer.__init__):
(Writer._current_indent):
(Writer.write):
(Writer.write_block):
(Writer.write_lines):
(Writer.newline):
(Writer.Indent):
(Writer.Indent.__init__):
(Writer.Indent.__enter__):
(Writer.Indent.__exit__):
(Writer.indent):
(KeywordTerm.perform_fixups):
(MatchOneTerm.__init__):
(MatchOneTerm):
(MatchOneTerm.terms):
(MatchOneTerm.from_json):
(GenerationContext.generate_heading):
(GenerationContext):
(GenerationContext.generate_required_header_pragma):
(GenerationContext.generate_open_namespaces):
(GenerationContext.generate_close_namespaces):
(GenerationContext.generate_open_namespace):
(GenerationContext.generate_close_namespace):
(GenerationContext.Namespaces):
(GenerationContext.Namespaces.__init__):
(GenerationContext.Namespaces.__enter__):
(GenerationContext.Namespaces.__exit__):
(GenerationContext.namespace):
(GenerationContext.namespaces):
(GenerationContext.generate_using_namespace_declarations):
(GenerationContext.generate_includes):
(GenerationContext.generate_cpp_required_includes):
(GenerationContext.generate_forward_declarations):
(GenerationContext.generate_property_id_switch_function):
(GenerationContext.generate_property_id_switch_function_bool):
(GenerateCSSPropertyNames._generate_css_property_names_gperf_prelude):
(GenerateCSSPropertyNames):
(GenerateCSSPropertyNames._generate_css_property_names_gperf_heading): Deleted.

Canonical link: https://commits.webkit.org/257046@main




More information about the webkit-changes mailing list