88import doctest
99import errno
1010from docutils import nodes , statemachine
11+ from docutils .parsers .rst import Directive
1112
1213from sphinx .builders import Builder
1314from sphinx .util .console import bold
14- from sphinx .util .compat import Directive , make_admonition
1515
1616def write_if_changed (filename , text , logger ):
1717 """Write file to disk, only if contents would be different.
@@ -65,6 +65,23 @@ def depart_codesnippet_node(self, node):
6565class CodeSnippet (nodes .Admonition , nodes .Element ):
6666 pass
6767
68+
69+ # imported from sphinx/util/compat.py
70+ def _make_admonition (node_class , name , title_text , options , content , lineno ,
71+ content_offset , block_text , state , state_machine ):
72+ text = '\n ' .join (content )
73+ admonition_node = node_class (text )
74+ textnodes , messages = state .inline_text (title_text , lineno )
75+ admonition_node += nodes .title (title_text , '' , * textnodes )
76+ admonition_node += messages
77+ if 'class' in options :
78+ classes = options ['class' ]
79+ else :
80+ classes = ['admonition-' + nodes .make_id (title_text )]
81+ admonition_node ['classes' ] += classes
82+ state .nested_parse (content , content_offset , admonition_node )
83+ return [admonition_node ]
84+
6885class CodeSnippetDirective (Directive ):
6986 has_content = True
7087
@@ -74,12 +91,13 @@ def run(self):
7491 self .content = statemachine .StringList ([ SNIPTEXT % link ])
7592 targetid = "codesnippet-%d" % env .new_serialno ('codesnippet' )
7693 targetnode = nodes .target ('' , '' , ids = [targetid ])
77- ad = make_admonition (CodeSnippet , self .name , [ 'CodeSnippet' ] ,
78- self .options ,
79- self .content , self .lineno , self .content_offset ,
80- self .block_text , self .state , self .state_machine )
94+ ad = _make_admonition (CodeSnippet , self .name , 'CodeSnippet' ,
95+ self .options ,
96+ self .content , self .lineno , self .content_offset ,
97+ self .block_text , self .state , self .state_machine )
8198 return [targetnode ] + ad
8299
100+
83101class CodeSnippetBuilder (Builder ):
84102 name = 'codesnippet'
85103
0 commit comments