textwrap 2.0.1
textwrap: ^2.0.1 copied to clipboard
Text wrapping and filling. It's a pure port of textwrap from Python.
textwrap #
A Dart library for intelligent text wrapping and filling. This is a pure port of Python's textwrap module, providing powerful text formatting utilities for console applications, documentation generation, and formatted output.
Features #
- Smart text wrapping with customizable width and indentation
- Paragraph filling that preserves formatting
- Flexible indentation for first line and subsequent lines
- Whitespace handling with configurable options
- Long word breaking for words that exceed line width
- Pure Dart implementation with no external dependencies
Installation #
Add this to your package's pubspec.yaml
file:
dependencies:
textwrap: ^1.0.0
Then run:
dart pub get
Usage #
Basic Text Wrapping #
import 'package:textwrap/textwrap.dart';
void main() {
// Simple wrapping
print(fill('Text wrapping and filling with intelligent line breaks.', width: 16));
// Output:
// Text wrapping
// and filling
// with
// intelligent line
// breaks.
}
Advanced Options #
import 'package:textwrap/textwrap.dart';
void main() {
final text = 'This is a long paragraph that needs to be wrapped nicely.';
// Wrap with custom indentation
print(fill(text,
width: 30,
initialIndent: '>>> ',
subsequentIndent: ' '
));
// Output:
// >>> This is a long paragraph
// that needs to be wrapped
// nicely.
// Just get the wrapped lines as a list
final lines = wrap(text, width: 20);
for (final line in lines) {
print('| $line');
}
}
Using TextWrapper class #
For repeated text wrapping with the same configuration, use the TextWrapper
class:
import 'package:textwrap/textwrap.dart';
void main() {
// Create a reusable wrapper with specific settings
final wrapper = TextWrapper(
width: 40,
initialIndent: ' ',
subsequentIndent: ' ',
breakLongWords: false,
);
// Apply the same formatting to multiple texts
print(wrapper.fill('First paragraph to be wrapped with consistent formatting.'));
print('');
print(wrapper.fill('Second paragraph with the same indentation and width settings.'));
// Get lines as a list
final lines = wrapper.wrap('Third paragraph for line-by-line processing.');
}
Text Shortening #
import 'package:textwrap/textwrap.dart';
void main() {
final longText = 'This is a very long piece of text that needs to be shortened';
// Shorten text to fit in limited space
print(shorten(longText, 30));
// Output: 'This is a very long piece ...'
// Custom placeholder
print(shorten(longText, 25, placeholder: ' [more]'));
// Output: 'This is a very [more]'
}
Working with Code and Preformatted Text #
final code = '''
def hello_world():
print("Hello, World!")
return True
''';
// Preserve indentation while wrapping
print(fill(code, width: 25, expandTabs: false));
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
License #
This project is licensed under the MIT License.
Features and bugs #
Please file feature requests and bugs at the issue tracker.