File: docutils.jam

package info (click to toggle)
boost-build 2.0-m11-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 4,624 kB
  • ctags: 2,387
  • sloc: ansic: 12,978; python: 5,209; xml: 4,782; cpp: 555; yacc: 456; sh: 237; makefile: 71
file content (67 lines) | stat: -rwxr-xr-x 1,508 bytes parent folder | download | duplicates (2)
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
# 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 ;

.initialized = ;

type.register ReST : rst ;

class rst-scanner : common-scanner
{
    rule pattern ( )
    {
         return "^\\w*\\.\\.\\w+include::\w+(.*)"
        "^\\w*\\.\\.\\w+image::\w+(.*)"
        "^\\w*\\.\\.\\w+figure::\w+(.*)"
        ;
    }
}

scanner.register rst-scanner : include ;
type.set-scanner ReST : rst-scanner ;

generators.register-standard docutils.html : ReST : HTML ;

rule init ( docutils-dir )
{
    docutils-dir ?= [ modules.peek : DOCUTILS_DIR ] ;

    if ! $(.initialized)
    {
        .initialized = true ;
        .docutils-dir = $(docutils-dir) ;
        
        .setup = [ 
          common.prepend-path-variable-command PYTHONPATH 
            : $(.docutils-dir) $(.docutils-dir)/extras ] ;
    }
}

rule html ( target : source : properties *  )
{
    docutils-dir on $(target) = $(.docutils-dir) ;
}


feature docutils : : free ;
feature docutils-html : : free ;
toolset.flags docutils COMMON-FLAGS : <docutils> ;
toolset.flags docutils HTML-FLAGS : <docutils-html> ;
  
actions html
{
    $(.setup)
    python $(docutils-dir)/tools/rst2html.py $(COMMON-FLAGS) $(HTML-FLAGS) $(>) $(<)
}