blob: bf0616174b28a8ad19800c3f5326a3ab0b4812b8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# Copyright David Abrahams 2004. Distributed under the Boost
# Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
# Support for docutils ReStructuredText processing.
import type ;
import scanner ;
import generators ;
import os ;
import common ;
import toolset ;
import path ;
import feature : feature ;
import property ;
.initialized = ;
type.register ReST : rst ;
class rst-scanner : common-scanner
{
rule __init__ ( paths * )
{
common-scanner.__init__ . $(paths) ;
}
rule pattern ( )
{
return "^[ ]*\\.\\.[ ]+include::[ ]+([^
]+)"
"^[ ]*\\.\\.[ ]+image::[ ]+([^
]+)"
"^[ ]*\\.\\.[ ]+figure::[ ]+([^
]+)"
;
}
}
scanner.register rst-scanner : include ;
type.set-scanner ReST : rst-scanner ;
generators.register-standard docutils.html : ReST : HTML ;
rule init ( docutils-dir ? : tools-dir ? )
{
docutils-dir ?= [ modules.peek : DOCUTILS_DIR ] ;
tools-dir ?= $(docutils-dir)/tools ;
if ! $(.initialized)
{
.initialized = true ;
.docutils-dir = $(docutils-dir) ;
.tools-dir = $(tools-dir:R="") ;
.setup = [
common.prepend-path-variable-command PYTHONPATH
: $(.docutils-dir) $(.docutils-dir)/extras ] ;
}
}
rule html ( target : source : properties * )
{
if ! [ on $(target) return $(RST2XXX) ]
{
local python-cmd = [ property.select <python.interpreter> : $(properties) ] ;
RST2XXX on $(target) = $(python-cmd:G=:E="python") $(.tools-dir)/rst2html.py ;
}
}
feature docutils : : free ;
feature docutils-html : : free ;
feature docutils-cmd : : free ;
toolset.flags docutils COMMON-FLAGS : <docutils> ;
toolset.flags docutils HTML-FLAGS : <docutils-html> ;
toolset.flags docutils RST2XXX : <docutils-cmd> ;
actions html
{
$(.setup)
"$(RST2XXX)" $(COMMON-FLAGS) $(HTML-FLAGS) $(>) $(<)
}
|