Skip to content

Support single-line objects/arrays #586

Closed

Description

This could be implemented by #498, but the other option is to somehow do this without ,

Activity

  1. benc-uk commented on Nov 5, 2020

    @benc-uk

    Please... especially when LoC and verbosity are some of the advantages of Bicep

    By single line assume we mean allowing something like

        addressSpace: {
          addressPrefixes: [ '10.0.0.0/16' ]
        }
    
  2. ChristopherGLewis commented on Jan 13, 2021

    @ChristopherGLewis
    Contributor

    One comment I'd have is that as you start to think about single line objects, consider what would happen if you have a bicep linter and your linter converts from single-line to multi-line.

    With single line, these would be the same in bicep:

        addressSpace: {
          addressPrefixes: [ '10.0.0.0/16', '10.1.0.0/16' ]
        }
    ...
        addressSpace: {
          addressPrefixes: [ 
            '10.0.0.0/16'
            '10.1.0.0/16'
          ]
        }
    

    However, a simple code formatting tool may have issues converting between the two since there's not just a white space change.
    The linting tool would have to know that the comma is needed in single-line, but not needed in multi-line.

    Give that changing lines involved more than just white-space, my suggestion is that you either support just a white-space separator or support both white-space and comma.

    This would mean that this would be valid syntax:

        addressSpace: {
          addressPrefixes: [ '10.0.0.0/16' '10.1.0.0/16' ]
        }
    ...
        addressSpace: {
          addressPrefixes: [ 
            '10.0.0.0/16'
            '10.1.0.0/16'
          ]
        }
    

    Along with

        addressSpace: {
          addressPrefixes: [ '10.0.0.0/16', '10.1.0.0/16' ]
        }
    ...
        addressSpace: {
          addressPrefixes: [ 
            '10.0.0.0/16',
            '10.1.0.0/16'
          ]
        }
    

    Personally, I support the second syntax (commas) because then each object is a (semi) valid JSON primitive. It would be super nice if it was a valid primitive, but that would require supporting real quote characters :-)

  3. changed the title [-]Support single-line objects arrays[/-] [+]Support single-line objects/arrays[/+] on Feb 23, 2021
  4. dciborow commented on Aug 27, 2021

    @dciborow
    Contributor

    An alternative could be simply providing a folding option in VS Code, which also shows the "folded" contents in a csv list.

    Here is an example of how PyCharm does this folding docstrings.
    image

    image

  5. MariusStorhaug commented on Mar 5, 2022

    @MariusStorhaug

    Seems the same applies for the contains() function.

    Instead of writing

    var supportsBlobService = storageAccountKind == 'BlockBlobStorage' || storageAccountKind == 'BlobStorage' || storageAccountKind == 'StorageV2' || storageAccountKind == 'Storage'

    I would rather be able to write:

    var supportsBlobService = contains(['BlockBlobStorage', 'BlobStorage', 'StorageV2', 'Storage'], storageAccountKind)
  6. ChristopherGLewis commented on Mar 7, 2022

    @ChristopherGLewis
    Contributor

    I get around the || with another var and a contains:

    param subnetName string
    
    var specialSubnet = [
      'GatewaySubnet'
      'AzureBastionSubnet'
      'AzureFirewallSubnet'
    ]
    
    var isSpecial = contains(specialSubnet, subnetName )
    
  7. miqm commented on Jun 20, 2022

    @miqm
    Collaborator

    Anthony Martin (@anthony-c-martin) - we can probably remove this from the limitation list in Readme.md :)

  8. HenrikSommer-Energinet commented on Jul 6, 2022

    @HenrikSommer-Energinet
  9. anthony-c-martin commented on Jul 6, 2022

    @anthony-c-martin
    Member

    @HenrikSommer-eng, thanks for reminding me - I have raised https://github.com/MicrosoftDocs/azure-docs/issues/95371 for our docs team to pick up.

  10. ghost locked as resolved and limited conversation to collaborators on May 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions