83167


Sphinx拡張を実装する際のパラメータ値の使い方についての質問です。  
よろしくお願いします。

■質問  
index/glossaryディレクティブでのデータの取り込み処理で、conf.pyの設定値を使う方法。

■備考  
現状は次のように考えており、対応策もありますしダメ元な質問です。

  * 方法はない。
  * 次のように対処する： 
    1. データの受入処理では、データの取り込みだけに留める
    2. 表示する直前で、設置値が必要な処理を行う

■背景  
index/glossaryディレクティブでの単語/用語について、読み仮名情報を付与する拡張を作りました。  
読み仮名情報及びルビ表示指定の情報を付与するに当たって「r'|'」「r'^'」をメタ文字として使っています。

念の為、これを設定により変更可能としたいのですが、ディレクティブ毎の指定ではなくconf.pyで統一的に設定する方法を実現したいと思っています。

索引ページ（genindex.html）の対応については表示処理（*1）で行われているので「self.config.{パラメータ名}」で取れるのですが、index/glossaryディレクティブ（*2,3）では「config」が見当たりません。

> 「そのためにディレクティブにはオプションがあるのか」と初めて理解しました…）

■確認したこと  
*1 索引ページの表示処理の場所

  * sphinx/builder/html/ **init**.py
  * StandaloneHTMLBuilderクラス/write_genindex()メソッド
  * IndexEntries(self.env).create_index(self)の前後に処理を入れています。

*2 indexディレクティブの取り込み処理の場所

  * sphinx/domains/index.py
  * IndexDirectiveクラス/run()メソッド
  * 「config」「cfg」という文字列がないことを確認

*3 glossaryディレクティブの取り込み処理の場所

  * sphinx/domains/std.py
  * Glossaryクラス/run()メソッド
  * 「config」「cfg」という文字列がないことを確認

*4 その他

  * glossaryディレクティブの表示処理については、HTML5Translatorクラス/visit_term()メソッドを書き換えて、ここで自前のクラスを投入しています。 
    * sphinx/writers/html5.py
    * HTML5Translatorクラス/visit_term()メソッド
  * 設定値の登録方法は、他の方のSphinx拡張を見てsetup()にapp.add_config_value()があることを確認しました。

以上


CC BY-SA 4.0
2021-10-03T17:54:05.877
82849
2021-10-18T20:34:04.597
2021-10-06T00:57:49.343
48452
48452
question
python3 sphinx
index/glossaryディレクティブでのデータの取り込み処理で、conf.pyの設定値を使う方法。


reSTのdirectiveでconf.pyの設定値を参照するには以下の様に書きます。

[code]

    class SomeDirective(SphinxDirective):
        def run(self):
            conf_val = self.config.your_config_value
    
[/code]

ドキュメント  
<https://www.sphinx-doc.org/en/master/extdev/utils.html?highlight=config>

コード  
<https://github.com/sphinx-
doc/sphinx/blob/56f97d71a2b1733ebf401d357a634e2d7e4c896e/sphinx/util/docutils.py#L315>


CC BY-SA 4.0
2021-10-18T20:34:04.597
83167
2021-10-18T20:34:04.597
806
82849
answer