diff --git a/.gitignore b/.gitignore index 7bf00e82..50602ac6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,11 @@ -# See https://www.dartlang.org/guides/libraries/private-files - # Files and directories created by pub .dart_tool/ .packages -.pub/ -build/ -# If you're building an application, you may want to check-in your pubspec.lock +# Remove the following pattern if you wish to check in your lock file pubspec.lock +# Conventional directory for build outputs +build/ + # Directory created by dartdoc -# If you don't generate documentation locally you can remove this line. doc/api/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..687440ba --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version, created by Stagehand diff --git a/README.md b/README.md index b8b81b7d..840574ba 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,45 @@ -# angel_jinja +# jinja Angel support for the Jinja2 templating engine, ported from Python to Dart. + +[![Pub](https://img.shields.io/pub/v/angel_jinja.svg)](https://pub.dartlang.org/packages/angel_jinja) + +# Example +```dart +import 'dart:io'; +import 'package:angel_framework/angel_framework.dart'; +import 'package:angel_framework/http.dart'; +import 'package:angel_jinja/angel_jinja.dart'; +import 'package:path/path.dart' as p; + +main() async { + var app = Angel(); + var http = AngelHttp(app); + var viewsDir = p.join( + p.dirname( + p.fromUri(Platform.script), + ), + 'views', + ); + + // Enable Jinja2 views + await app.configure(jinja(path: viewsDir)); + + // Add routes. + // See: https://github.com/ykmnkmi/jinja.dart/blob/master/example/bin/server.dart + + app + ..get('/', (req, res) => res.render('index.html')) + ..get('/hello', (req, res) => res.render('hello.html', {'name': 'user'})) + ..get('/hello/:name', (req, res) => res.render('hello.html', req.params)); + + app.fallback((req, res) { + res + ..statusCode = 404 + ..write('404 Not Found :('); + }); + + // Start the server + await http.startServer('127.0.0.1', 3000); + print('Listening at ${http.uri}'); +} +``` \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 00000000..c230cee7 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:pedantic/analysis_options.yaml +analyzer: + strong-mode: + implicit-casts: false \ No newline at end of file diff --git a/example/main.dart b/example/main.dart new file mode 100644 index 00000000..b40937c0 --- /dev/null +++ b/example/main.dart @@ -0,0 +1,37 @@ +import 'dart:io'; +import 'package:angel_framework/angel_framework.dart'; +import 'package:angel_framework/http.dart'; +import 'package:angel_jinja/angel_jinja.dart'; +import 'package:path/path.dart' as p; + +main() async { + var app = Angel(); + var http = AngelHttp(app); + var viewsDir = p.join( + p.dirname( + p.fromUri(Platform.script), + ), + 'views', + ); + + // Enable Jinja2 views + await app.configure(jinja(path: viewsDir)); + + // Add routes. + // See: https://github.com/ykmnkmi/jinja.dart/blob/master/example/bin/server.dart + + app + ..get('/', (req, res) => res.render('index.html')) + ..get('/hello', (req, res) => res.render('hello.html', {'name': 'user'})) + ..get('/hello/:name', (req, res) => res.render('hello.html', req.params)); + + app.fallback((req, res) { + res + ..statusCode = 404 + ..write('404 Not Found :('); + }); + + // Start the server + await http.startServer('127.0.0.1', 3000); + print('Listening at ${http.uri}'); +} diff --git a/example/views/hello.html b/example/views/hello.html new file mode 100644 index 00000000..22d1c470 --- /dev/null +++ b/example/views/hello.html @@ -0,0 +1,5 @@ +{% extends "layout.html" %} +{% block title %}hello {{ name }}!{% endblock %} +{% block body %} +
hello {{ name }}!
+{% endblock %} \ No newline at end of file diff --git a/example/views/index.html b/example/views/index.html new file mode 100644 index 00000000..cb403f32 --- /dev/null +++ b/example/views/index.html @@ -0,0 +1,6 @@ +{% extends "layout.html" %} +{% block title %}Jinja.Dart!{% endblock %} +{% block body %} +hello Jinja.Dart!
+ hello Joe! +{% endblock %} \ No newline at end of file diff --git a/example/views/layout.html b/example/views/layout.html new file mode 100644 index 00000000..4f1f056e --- /dev/null +++ b/example/views/layout.html @@ -0,0 +1,10 @@ + + + + +