overblog / GraphQLBundle

This bundle provides tools to build a complete GraphQL API server in your Symfony App.
MIT License
777 stars 224 forks source link

Multiline documentation with a graphql schema leads to unnececairy indent/code block formatting #1167

Open mousetail opened 3 months ago

mousetail commented 3 months ago
Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no
Version/Branch 1.2.0

I have a schema like this:

"""
A date time in RFC3339-Extended format.

Eg. 2023-03-02T14:12:12.1222Z
"""
scalar DateTime

However, it renders like this:

afbeelding

In the JSON schema:

"A date time in RFC3339-Extended format.\n            \n            Eg. 2023-03-02T14:12:12.1222Z"

It seems to be inserting unnecessary spaces after every line break.

Some more debug info

The generated class seems to have indented the string:


<?php
/**
 * THIS FILE WAS GENERATED AND SHOULD NOT BE EDITED MANUALLY.
 */
final class DateTimeType extends CustomScalarType implements GeneratedTypeInterface, AliasedInterface
{
    public const NAME = 'DateTime';

    public function __construct(ConfigProcessor $configProcessor, GraphQLServices $services)
    {
        $config = [
            'name' => self::NAME,
            'description' => 'A date time in RFC3339-Extended format.

            Eg. 2023-03-02T14:12:12.1222Z',
            'serialize' => fn() => CustomScalarNode::mustOverrideConfig(...\func_get_args()),
            'parseValue' => fn() => CustomScalarNode::mustOverrideConfig(...\func_get_args()),
            'parseLiteral' => fn() => CustomScalarNode::mustOverrideConfig(...\func_get_args()),
        ];

Using a double quoted string with escapes instead of actual newlines might be better, or wrapping it in a function that can properly remove the indentation.

Vincz commented 3 months ago

The generation is made by https://github.com/murtukov/php-code-generator.git It should be handled there. @mousetail can you re-open the issue here describing the need to have multilines string?