Quote Buffer

Dart

Introduction

In the context of source code generation it is required to enclose emitted strings with (escaped) quotation marks. In the following, such strings are called quoted strings. Manually delimiting strings with quotation marks is error-prone and repetitive especially when dealing with a collection of string-items.

The package quote_buffer provides Quote an extension on Dart's StringBuffer that adds methods for transforming single objects and lists of objects into quoted strings.

Usage

To use this library include quote_buffer as dependency in your pubspec.yaml file. The section below lists the methods provided and shows the console output obtained by printing the buffer content.

  1. writeQ(Object obj, {QuotationMark delimiter})

    Writes delimiter, obj, delimiter to the buffer.

    import 'package:quote_buffer/quote_buffer.dart';
    
    final b = StringBuffer();
    b.writeQ(29);
    expect(b.toString(),'\'29\'');
    print(b.toString()); // Console output below
    
    '29'
    
  2. writelnQ(Object obj, {QuotationMark delimiter})

    Writes delimiter, obj, delimiter, newline symbol to the buffer.

    import 'package:quote_buffer/quote_buffer.dart';
    
    final b = StringBuffer();
    b.writelnQ('name', delimiter: QuotationMark.double);
    expect(b.toString(), '\"name\"\n');
    print(b.toString()); // Console output below
    print('--- ---');
    
    "name"
    
    --- ---
    
  3. writeAllQ(Iterable objects, {String separator, QuotationMark delimiter})

    Writes delimiter, first object, delimiter, etc. to the buffer.

    import 'package:quote_buffer/quote_buffer.dart';
    
    final b = StringBuffer();
    b.writeAllQ(
      ['one','two','three'],
       separator: ', ',
    );
    expect(b.toString(), '\'one\', \'two\', \'three\'' );
    print(b.toString()); // Console output below
    
    'one', 'two', 'three'
    
  4. writelnAllQ(Iterable objects, {String separator1, String separator2, QuoationMark delimiter})

    Writes objects in sequence: delimiter, objects0, separator1, delimiter, separator2, newline symbol, etc.

    import 'package:quote_buffer/quote_buffer.dart';
    
    final b = StringBuffer();
    b.writelnAllQ(
      ['one','two','three'],
      separator1: ' #',
      separator2: ',',
      delimiter: QuotationMark.double,
    );
    expect(b.toString(), '\"one #\",\n\"two #\",\n\"three\#');
    print(b.toString()); // Console output below
    print('--- ---');
    
     "one #",
     "two #",
     "three"
    
     --- ---
    

Examples

The example located in the folder example shows how to use the extension Quote to simplify the generation of string literals whose content is enclosed by escaped quotation marks.

Features and bugs

Please file feature requests and bugs at the issue tracker.

Libraries

quote_buffer
Provides an extension on StringBuffer with methods for converting objects to String literals enclosed by quotation marks.