Add 'packages/jinja/' from commit '2a5abb684b7b68f0da4775e9ceaa22cb295d58da'
git-subtree-dir: packages/jinja git-subtree-mainline:4e69153e3e
git-subtree-split:2a5abb684b
This commit is contained in:
commit
834de0300f
11 changed files with 210 additions and 0 deletions
11
packages/jinja/.gitignore
vendored
Normal file
11
packages/jinja/.gitignore
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Files and directories created by pub
|
||||
.dart_tool/
|
||||
.packages
|
||||
# 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
|
||||
doc/api/
|
3
packages/jinja/CHANGELOG.md
Normal file
3
packages/jinja/CHANGELOG.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
## 1.0.0
|
||||
|
||||
- Initial version, created by Stagehand
|
21
packages/jinja/LICENSE
Normal file
21
packages/jinja/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Tobe Osakwe
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
45
packages/jinja/README.md
Normal file
45
packages/jinja/README.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
# 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}');
|
||||
}
|
||||
```
|
4
packages/jinja/analysis_options.yaml
Normal file
4
packages/jinja/analysis_options.yaml
Normal file
|
@ -0,0 +1,4 @@
|
|||
include: package:pedantic/analysis_options.yaml
|
||||
analyzer:
|
||||
strong-mode:
|
||||
implicit-casts: false
|
37
packages/jinja/example/main.dart
Normal file
37
packages/jinja/example/main.dart
Normal file
|
@ -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}');
|
||||
}
|
5
packages/jinja/example/views/hello.html
Normal file
5
packages/jinja/example/views/hello.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% extends "layout.html" %}
|
||||
{% block title %}hello {{ name }}!{% endblock %}
|
||||
{% block body %}
|
||||
<p>hello {{ name }}!</p>
|
||||
{% endblock %}
|
6
packages/jinja/example/views/index.html
Normal file
6
packages/jinja/example/views/index.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
{% extends "layout.html" %}
|
||||
{% block title %}Jinja.Dart!{% endblock %}
|
||||
{% block body %}
|
||||
<p>hello Jinja.Dart!</p>
|
||||
<a href="/hello/Joe">hello Joe!</a>
|
||||
{% endblock %}
|
10
packages/jinja/example/views/layout.html
Normal file
10
packages/jinja/example/views/layout.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
</head>
|
||||
<body>
|
||||
{% block body %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
53
packages/jinja/lib/angel_jinja.dart
Normal file
53
packages/jinja/lib/angel_jinja.dart
Normal file
|
@ -0,0 +1,53 @@
|
|||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:jinja/jinja.dart';
|
||||
|
||||
/// Configures an Angel server to use Jinja2 to render templates.
|
||||
///
|
||||
/// By default, templates are loaded from the filesystem;
|
||||
/// pass your own [createLoader] callback to override this.
|
||||
///
|
||||
/// All options other than [createLoader] are passed to either [FileSystemLoader]
|
||||
/// or [Environment].
|
||||
AngelConfigurer jinja({
|
||||
Iterable<String> ext = const ['html'],
|
||||
String path = 'lib/src/templates',
|
||||
bool followLinks = true,
|
||||
String stmtOpen = '{%',
|
||||
String stmtClose = '%}',
|
||||
String varOpen = '{{',
|
||||
String varClose = '}}',
|
||||
String commentOpen = '{#',
|
||||
String commentClose = '#}',
|
||||
defaultValue,
|
||||
bool autoReload = true,
|
||||
Map<String, Function> filters = const <String, Function>{},
|
||||
Map<String, Function> tests = const <String, Function>{},
|
||||
Loader Function() createLoader,
|
||||
}) {
|
||||
return (app) {
|
||||
createLoader ??= () {
|
||||
return FileSystemLoader(
|
||||
ext: ext.toList(),
|
||||
path: path,
|
||||
followLinks: followLinks,
|
||||
);
|
||||
};
|
||||
var env = Environment(
|
||||
loader: createLoader(),
|
||||
stmtOpen: stmtOpen,
|
||||
stmtClose: stmtClose,
|
||||
varOpen: varOpen,
|
||||
varClose: varClose,
|
||||
commentOpen: commentOpen,
|
||||
commentClose: commentClose,
|
||||
defaultValue: defaultValue,
|
||||
autoReload: autoReload,
|
||||
filters: filters,
|
||||
tests: tests,
|
||||
);
|
||||
|
||||
app.viewGenerator = (path, [values]) {
|
||||
return env.getTemplate(path).render(values);
|
||||
};
|
||||
};
|
||||
}
|
15
packages/jinja/pubspec.yaml
Normal file
15
packages/jinja/pubspec.yaml
Normal file
|
@ -0,0 +1,15 @@
|
|||
name: angel_jinja
|
||||
description: Angel support for the Jinja2 templating engine, ported from Python to Dart.
|
||||
version: 1.0.0-rc.0
|
||||
homepage: https://github.com/angel-dart/jinja
|
||||
author: Tobe O <thosakwe@gmail.com>
|
||||
environment:
|
||||
sdk: '>=2.0.0-dev <3.0.0'
|
||||
dependencies:
|
||||
angel_framework: ^2.0.0-alpha
|
||||
jinja: ^0.0.4
|
||||
dev_dependencies:
|
||||
angel_test: ^2.0.0
|
||||
path: ^1.0.0
|
||||
pedantic: ^1.0.0
|
||||
test: ^1.0.0
|
Loading…
Reference in a new issue