| # 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) $(>) $(<) |
| } |
| |