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
7
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