| | 1 | = インタフェースのリファレンス = |
| | 2 | Tracは、[wiki:TracDoc/ComponentArhitectureJa ComponentArchitecture]に基づき多くのインタフェースをプラグイン開発者に提供しています。[[BR]] |
| | 3 | が、資料はほとんどないので、ここにまとめてみました。 |
| | 4 | |
| | 5 | == インタフェース一覧 == |
| | 6 | 0.10で若干インタフェースが増えてるようです。 |
| | 7 | |
| | 8 | ||パッケージ||インタフェース||Trac 0.9||Trac 0.10|| |
| | 9 | ||trac.db.api||IDatabaseConnector||-||○|| |
| | 10 | ||trac.mimeview.api||IHTMLPreviewRenderer||○||○|| |
| | 11 | ||trac.mimeview.api||IHTMLPreviewAnnotator||○||○|| |
| | 12 | ||trac.tests.core||ITest||-||○|| |
| | 13 | ||trac.ticket.api||ITicketChangeListener||-||○|| |
| | 14 | ||trac.ticket.api||ITicketManipulator||-||○|| |
| | 15 | ||trac.versioncontrol.api||IRepositoryConnector||||○|| |
| | 16 | ||trac.web.api||IAuthenticator||○||○|| |
| | 17 | ||trac.web.api||IRequestHandler||○||○|| |
| | 18 | ||trac.web.chrome||INavigationContributor||○||○|| |
| | 19 | ||trac.web.chrome||ITemplateProvider||○||○|| |
| | 20 | ||trac.wiki.api||IWikiChangeListener||○||○|| |
| | 21 | ||trac.wiki.api||IWikiPageManipulator||-||○|| |
| | 22 | ||trac.wiki.api||IWikiMacroProvider||○||○|| |
| | 23 | ||trac.wiki.api||IWikiSyntaxProvider||○||○|| |
| | 24 | ||trac.env||IEnvironmentSetupParticipant||○||○|| |
| | 25 | ||trac.perm||IPermissionRequestor||○||○|| |
| | 26 | ||trac.perm||IPermissionStore||○||○|| |
| | 27 | ||trac.perm||IPermissionGroupProvider||○||○|| |
| | 28 | ||trac.Search||ISearchSource||○||○|| |
| | 29 | ||trac.Timeline||ITimelineEventProvider||○||○|| |
| | 30 | |
| | 31 | == リファレンス == |
| | 32 | === IDatabaseConnector === |
| | 33 | Trac 0.10以降。DB接続先を変えるためのインタフェースみたいです。 |
| | 34 | {{{ |
| | 35 | #!python |
| | 36 | class IDatabaseConnector(Interface): |
| | 37 | """Extension point interface for components that support the connection to |
| | 38 | relational databases.""" |
| | 39 | |
| | 40 | def get_supported_schemes(): |
| | 41 | """Return the connection URL schemes supported by the connector, and |
| | 42 | their relative priorities as an iterable of `(scheme, priority)` tuples. |
| | 43 | """ |
| | 44 | |
| | 45 | def get_connection(**kwargs): |
| | 46 | """Create a new connection to the database.""" |
| | 47 | |
| | 48 | def init_db(**kwargs): |
| | 49 | """Initialize the database.""" |
| | 50 | |
| | 51 | def to_sql(table): |
| | 52 | """Return the DDL statements necessary to create the specified table, |
| | 53 | including indices.""" |
| | 54 | }}} |
| | 55 | === IHTMLPreviewRenderer === |
| | 56 | リポジトリブラウザで、MimeTypeに紐づくHTMLを出力するためのインタフェース。 |
| | 57 | 特定のMimeTypeに対して、リポジトリブラウザでデータを見せたいときにこれを使います。 |
| | 58 | {{{ |
| | 59 | class IHTMLPreviewRenderer(Interface): |
| | 60 | """Extension point interface for components that add HTML renderers of |
| | 61 | specific content types to the `Mimeview` component. |
| | 62 | """ |
| | 63 | |
| | 64 | # implementing classes should set this property to True if they |
| | 65 | # support text content where Trac should expand tabs into spaces |
| | 66 | expand_tabs = False |
| | 67 | |
| | 68 | def get_quality_ratio(mimetype): |
| | 69 | """Return the level of support this renderer provides for the `content` |
| | 70 | of the specified MIME type. The return value must be a number between |
| | 71 | 0 and 9, where 0 means no support and 9 means "perfect" support. |
| | 72 | """ |
| | 73 | |
| | 74 | def render(req, mimetype, content, filename=None, url=None): |
| | 75 | """Render an XHTML preview of the raw `content`. |
| | 76 | |
| | 77 | The `content` might be: |
| | 78 | * a `str` object |
| | 79 | * an `unicode` string |
| | 80 | * any object with a `read` method, returning one of the above |
| | 81 | |
| | 82 | It is assumed that the content will correspond to the given `mimetype`. |
| | 83 | |
| | 84 | Besides the `content` value, the same content may eventually |
| | 85 | be available through the `filename` or `url` parameters. |
| | 86 | This is useful for renderers that embed objects, using <object> or |
| | 87 | <img> instead of including the content inline. |
| | 88 | |
| | 89 | Can return the generated XHTML text as a single string or as an |
| | 90 | iterable that yields strings. In the latter case, the list will |
| | 91 | be considered to correspond to lines of text in the original content. |
| | 92 | """ |
| | 93 | }}} |
| | 94 | サンプル: |
| | 95 | source:/trunk/xdocviewplugin/xdocview/xdocview.py#36 |
| | 96 | === IHTMLPreviewAnnotator === |
| | 97 | IHTMLPreviewRendererと似てますが、これはXHTML版なのかな?使ってるのは見たことありません。 |
| | 98 | {{{ |
| | 99 | class IHTMLPreviewAnnotator(Interface): |
| | 100 | """Extension point interface for components that can annotate an XHTML |
| | 101 | representation of file contents with additional information.""" |
| | 102 | |
| | 103 | def get_annotation_type(): |
| | 104 | """Return a (type, label, description) tuple that defines the type of |
| | 105 | annotation and provides human readable names. The `type` element should |
| | 106 | be unique to the annotator. The `label` element is used as column |
| | 107 | heading for the table, while `description` is used as a display name to |
| | 108 | let the user toggle the appearance of the annotation type. |
| | 109 | """ |
| | 110 | |
| | 111 | def annotate_line(number, content): |
| | 112 | """Return the XHTML markup for the table cell that contains the |
| | 113 | annotation data.""" |
| | 114 | }}} |