renpy_parser 0.0.1 copy "renpy_parser: ^0.0.1" to clipboard
renpy_parser: ^0.0.1 copied to clipboard

RenPy .rpy format script parser in Dart for Flutter.

example/renpy_parser_example.dart

import 'dart:io';
import 'package:renpy_parser/renpy_parser.dart';

/// Simple CLI example that parses a .rpy file and prints a short summary.
///
/// Run with:
///   dart run example/renpy_parser_example.dart <path-to-.rpy>
Future<void> main(List<String> args) async {
  if (args.isEmpty) {
    stderr.writeln(
      'Usage: dart run example/renpy_parser_example.dart <file.rpy>',
    );
    exitCode = 64; // EX_USAGE
    return;
  }

  final file = File(args.first);
  if (!await file.exists()) {
    stderr.writeln('File not found: ${file.path}');
    exitCode = 66; // EX_NOINPUT
    return;
  }

  final source = await file.readAsString();
  final parser = RenPyParser();
  final result = parser.parse(source, file.path);

  // Show any non-fatal warnings.
  if (result.warnings.isNotEmpty) {
    stdout.writeln('— Warnings —');
    result.warnings.forEach(stdout.writeln);
    stdout.writeln();
  }

  stdout.writeln('Parsed OK!');
  stdout.writeln('Top-level statements  : ${result.script.statements.length}');
  stdout.writeln(
    'Labels                : ${result.script.labels.keys.join(", ")}',
  );
  stdout.writeln(
    'Characters defined    : ${result.script.characters.keys.join(", ")}',
  );

  final images = result.script
      .findStatements<RenPyImageStatement>((_) => true)
      .map((i) => '${i.name}  →  ${i.expression}')
      .join('\n');
  if (images.isNotEmpty) {
    stdout.writeln('\nImages found:\n$images');
  }
}
0
likes
140
points
12
downloads

Publisher

verified publishercypherstack.com

Weekly Downloads

RenPy .rpy format script parser in Dart for Flutter.

Repository

Documentation

API reference

License

MIT (license)

Dependencies

collection

More

Packages that depend on renpy_parser