data_walker

Creator: coderz1093

Last updated:

0 purchases

data_walker Image
data_walker Images

Languages

Categories

Add to Cart

Description:

data walker

A library to supply sequential or random objects within the given range and repeats
Features #

The base class DataWalker supplies sequential or random indices between 0 and length, and reiterates the process for a given number of repeats
Derived classes supply sequential or random objects (date/times, ints, nums, random Unicode strings, iterables) mapped to the indices generated by the base class
Sequential or random pre-defined strings can be generated using a list of strings.
Random strings are implemented via StringWalker with the help of the random_unicode package.

Usage #
The working example which can also be found in the repository in example/data_walker_example.dart
import 'dart:math';

import 'package:data_walker/data_walker.dart';

/// Custom Color class for the example
///
enum Color {
black,
blue,
yellow,
white;

@override
String toString() => name;
}

/// Custom IconColor class for the example
///
class IconColors {
final Color fg;
final Color bg;
IconColors(this.fg, this.bg);
@override
String toString() => '$fg on $bg';
}

/// Custom IconSizePrice class for the example
///
class IconSizePrice {
final int size;
final num price;
IconSizePrice(this.size, this.price);
@override
String toString() => '$size x $size, Price: \$${price.toStringAsFixed(2)}';
}

/// Main entry point for the example
///
void main() {
print('\n*** Sequential Aggregated ListWalkers ***\n');

final walkers = <String, DataWalker>{
'Icon': ListWalker<String>([
'new',
'open',
'save',
'edit',
'find',
'replace',
]),
'Colors': ListWalker<IconColors>([
IconColors(Color.black, Color.white),
IconColors(Color.white, Color.black),
IconColors(Color.yellow, Color.blue),
IconColors(Color.blue, Color.yellow),
]),
'Size': ListWalker<IconSizePrice>([
IconSizePrice(16, 0.10),
IconSizePrice(24, 0.15),
IconSizePrice(32, 0.20),
IconSizePrice(48, 0.25),
IconSizePrice(64, 0.30),
IconSizePrice(80, 0.35),
IconSizePrice(96, 0.40),
])
};

walkers.exec(
repeats: 1,
valueProc: (values) {
print(walkers.valuesToString(values, useKeys: false));
});

print('\n*** Sequential Plain NumWalker ***\n');

var walker = NumWalker(0.1, 1.0, step: 0.05, repeats: 2);

while (true) {
final n = walker.next().toStringAsFixed(2);

if (walker.isFinished) {
break;
}

print('r:${walker.repeatNo + 1}, #${walker.currentNo + 1}: $n');
}

print('\n*** Random Plain NumWalker ***\n');

walker = walker.copyWith(repeats: 10, random: Random.secure());

while (true) {
final n = walker.next().toStringAsFixed(2);

if (walker.isFinished) {
break;
}

print('r:${walker.repeatNo + 1}, #${walker.currentNo + 1}: $n');
}
}
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.