jael 2.0.1+2

jael #

Pub build status

A simple server-side HTML templating engine for Dart.

See documentation.

Installation #

In your pubspec.yaml:

dependencies:
  jael: ^2.0.0

API #

The core jael package exports classes for parsing Jael templates, an AST library, and a Renderer class that generates HTML on-the-fly.

import 'package:code_buffer/code_buffer.dart';
import 'package:jael/jael.dart' as jael;
import 'package:symbol_table/symbol_table.dart';

void myFunction() {
    const template = '''
<html>
  <body>
    <h1>Hello</h1>
    <img src=profile['avatar']>
  </body>
</html>
''';

    var buf = new CodeBuffer();
    var document = jael.parseDocument(template, sourceUrl: 'test.jl', asDSX: false);
    var scope = new SymbolTable(values: {
      'profile': {
        'avatar': 'thosakwe.png',
      }
    });

    const jael.Renderer().render(document, buf, scope);
    print(buf);
}

Pre-processing (i.e. handling of blocks and includes) is handled by package:jael_preprocessor..

2.0.1 #

  • Fixed bug where the textarea name check would never return true.

2.0.0+1 #

  • Meta-update for Pub score.

2.0.0 #

  • Dart 2 updates.
  • Remove usage of package:dart2_constant.

1.0.6+1 #

  • Ensure <element> passes attributes.

1.0.6 #

  • Add index-as to for-each.
  • Support registering + rendering custom elements.
  • Improve handling of booleans in non-strict mode.

1.0.5 #

  • Add support for DSX, a port of JSX to Dart.

1.0.4 #

  • Skip HTML comments in free text.

1.0.3 #

  • Fix a scanner bug that prevented proper parsing of HTML nodes followed by free text.
  • Don't trim <textarea> content.

1.0.2 #

  • Use package:dart2_constant.
  • Upgrade package:symbol_table.
  • Added Renderer.errorDocument.

1.0.1 #

  • Reworked the scanner; thereby fixing an extremely pesky bug that prevented successful parsing of Jael files containing JavaScript.

example/main.dart

import 'dart:io';
import 'package:charcode/charcode.dart';
import 'package:code_buffer/code_buffer.dart';
import 'package:jael/jael.dart' as jael;
import 'package:symbol_table/symbol_table.dart';

main() {
  while (true) {
    var buf = new StringBuffer();
    int ch;
    print('Enter lines of Jael text, terminated by CTRL^D.');
    print('All environment variables are injected into the template scope.');

    while ((ch = stdin.readByteSync()) != $eot && ch != -1) {
      buf.writeCharCode(ch);
    }

    var document = jael.parseDocument(
      buf.toString(),
      sourceUrl: 'stdin',
      onError: stderr.writeln,
    );

    if (document == null) {
      stderr.writeln('Could not parse the given text.');
    } else {
      var output = new CodeBuffer();
      const jael.Renderer().render(
        document,
        output,
        new SymbolTable(values: Platform.environment),
        strictResolution: false,
      );
      print('GENERATED HTML:\n$output');
    }
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  jael: ^2.0.1+2

2. Install it

You can install packages from the command line:

with pub:


$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:jael/jael.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
33
Health:
Code health derived from static analysis. [more]
--
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
--
Overall:
Weighted score of the above. [more]
17
Learn more about scoring.

The package version is not analyzed, because it does not support Dart 2. Until this is resolved, the package will receive a health and maintenance score of 0.

Analysis issues and suggestions

Support Dart 2 in pubspec.yaml.

The SDK constraint in pubspec.yaml doesn't allow the Dart 2.0.0 release. For information about upgrading it to be Dart 2 compatible, please see https://dart.dev/dart-2#migration.

Maintenance issues and suggestions

Make sure dartdoc successfully runs on your package's source files. (-10 points)

Dependencies were not resolved.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev <=3.0.0

Admin