protected override StringBuilder OnConvertToCode()

in FigmaSharp.Controls/FigmaSharp.Controls.Cocoa/Converters/Controls/BoxConverter.cs [113:177]


        protected override StringBuilder OnConvertToCode(CodeNode currentNode, CodeNode parentNode, ICodeRenderService rendererService)
        {
            var code = new StringBuilder();
            var frame = (FigmaFrame)currentNode.Node;
            currentNode.Node.TryGetNativeControlType(out FigmaControlType controlType);
            currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant);

            if (rendererService.NeedsRenderConstructor(currentNode, parentNode))
                code.WriteConstructor(currentNode.Name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode));

            if (controlType == FigmaControlType.Separator)
                code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BoxType), NSBoxType.NSBoxSeparator);

            if (controlType == FigmaControlType.BoxCustom)
            {
                code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BoxType), NSBoxType.NSBoxCustom);
              
                RectangleVector rectangle = frame.children
                    .OfType<RectangleVector>()
                    .FirstOrDefault();

                if (rectangle != null )
                {
                    if (rectangle.styles != null)
                    {
                        bool borderSet = false;
                        foreach (var styleMap in rectangle.styles)
                        {
                            if ((rendererService.NodeProvider is NodeProvider nodeProvider) && nodeProvider.TryGetStyle(styleMap.Value, out FigmaStyle style))
                            {
                                if (styleMap.Key == "fill")
                                    code.WritePropertyEquality(currentNode.Name, nameof(NSBox.FillColor), ColorService.GetNSColorString(style.name));

                                if (styleMap.Key == "stroke")
                                {
                                    code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BorderColor), ColorService.GetNSColorString(style.name));
                                    code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BorderWidth), rectangle.strokeWeight.ToString());
                                    borderSet = true;
                                }
                            }
                        }

                        if (!borderSet)
                            code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BorderWidth), "0");
                    }
                    code.WritePropertyEquality(currentNode.Name, nameof(NSBox.CornerRadius), rectangle.cornerRadius.ToString());
                }
            }

            FigmaText text = null;

            if (frame.children != null)
            {
                text = frame.children
               .OfType<FigmaText>()
               .FirstOrDefault(s => (s.name == ComponentString.TITLE && s.visible));
            }

            if (text != null)
                code.WriteTranslatedEquality(currentNode.Name, nameof(NSBox.Title), text.characters, rendererService);
            else
                code.WritePropertyEquality(currentNode.Name, nameof(NSBox.Title), string.Empty, inQuotes: true);

            return code;
        }