Skip to content

Commit bea788c

Browse files
Fixes in Basic vs Pro comparison table (#1235)
* Update comparison table Signed-off-by: Emilio Cuesta <emiliocuesta@eprosima.com> * Resolve pathto Signed-off-by: Emilio Cuesta <emiliocuesta@eprosima.com> --------- Signed-off-by: Emilio Cuesta <emiliocuesta@eprosima.com>
1 parent 970931c commit bea788c

2 files changed

Lines changed: 75 additions & 24 deletions

File tree

docs/02-formalia/titlepage.rst

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -77,66 +77,73 @@ The following table contains a brief comparison between *Fast DDS* and *Fast DDS
7777
<tr>
7878
<th style="width:20%"></th>
7979
<th style="width:40%; text-align:center; vertical-align:bottom;">
80-
<img src="_static/fast-dds-pro-logo-large.png" alt="Fast DDS Pro" width="300px"><br>
80+
<img src="pathto('_static/fast-dds-pro-logo-large.png', 1)" alt="Fast DDS Pro" width="300px"><br>
8181
</th>
8282
<th style="width:40%; text-align:center; vertical-align:bottom;">
83-
<img src="_static/fast-dds-logo-large.png" alt="Fast DDS" width="250px"><br>
83+
<img src="pathto('_static/fast-dds-logo-large.png', 1)" alt="Fast DDS (Community)" width="250px"><br>
8484
</th>
8585
</tr>
8686
</thead>
8787
<tbody>
8888
<tr>
89-
<td>Uses</td>
90-
<td>Industrial &amp; Defense</td>
91-
<td>R&amp;D</td>
89+
<th>Target usage</th>
90+
<td>Production systems, industrial, robotics, defense</td>
91+
<td>Evaluation, prototyping, early development, research</td>
9292
</tr>
9393
<tr>
94-
<td>OS</td>
95-
<td>POSIX compliant (Linux, Windows, MacOS)</td>
96-
<td>POSIX compliant (Linux, Windows, MacOS)</td>
94+
<th>License</th>
95+
<td>Commercial</td>
96+
<td>Open Source (Apache 2.0)</td>
9797
</tr>
9898
<tr>
99-
<td>License</td>
100-
<td>Commercial</td>
101-
<td>Open Source</td>
99+
<th>Support</th>
100+
<td>✅ Direct engineering support (unlimited)</td>
101+
<td>❌ Community-based</td>
102+
</tr>
103+
<tr>
104+
<th>Maintenance / LTS</th>
105+
<td>✅ Long-term support (~24 months, backports)</td>
106+
<td>❌ No guaranteed maintenance</td>
102107
</tr>
103108
<tr>
104-
<td colspan="3" class="section-header">Feature Set</td>
109+
<th>Predictability</th>
110+
<td>✅ Controlled releases &amp; fixes</td>
111+
<td>⚠️ Best-effort evolution</td>
105112
</tr>
106113
<tr>
107-
<td>DDS Pub/Sub &amp; QoS</td>
108-
<td>✅ With extended features</td>
109-
<td>✅ With extended features</td>
114+
<th>DDS Pub/Sub &amp; QoS</th>
115+
<td>✅ Full</td>
116+
<td>✅ Full</td>
110117
</tr>
111118
<tr>
112-
<td>TSN over DDS</td>
119+
<th>TSN over DDS</th>
113120
<td>✅</td>
114121
<td>❌</td>
115122
</tr>
116123
<tr>
117-
<td>RPC over DDS</td>
118-
<td>✅ Including RPC streaming</td>
124+
<th>RPC over DDS</th>
125+
<td>✅ (incl. streaming)</td>
119126
<td>❌</td>
120127
</tr>
121128
<tr>
122-
<td>IP Mobility</td>
129+
<th>IP Mobility</th>
123130
<td>✅</td>
124131
<td>❌</td>
125132
</tr>
126133
<tr>
127-
<td>Low Bandwidth Transports</td>
134+
<th>Low Bandwidth Transports</th>
128135
<td>✅</td>
129136
<td>❌</td>
130137
</tr>
131138
<tr>
132-
<td>Adaptive Congestion Control</td>
139+
<th>Adaptive Congestion Control</th>
133140
<td>✅</td>
134141
<td>❌</td>
135142
</tr>
136143
<tr>
137-
<td>Discovery Server</td>
138-
<td>✅ With enhanced matching algorithm</td>
139-
<td>⚠️ Basic functionality</td>
144+
<th>Discovery Server</th>
145+
<td>✅ Advanced / optimized matching</td>
146+
<td>⚠️ Standard functionality</td>
140147
</tr>
141148
</tbody>
142149
</table>

docs/conf.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@
1818
#
1919
# import sys
2020
# sys.path.insert(0, os.path.abspath('.'))
21+
from docutils import nodes
2122
import git
2223
import json
2324
import os
2425
import os.path
2526
import pathlib
27+
import posixpath
28+
import re
2629
import requests
2730
import shutil
2831
import subprocess
@@ -32,6 +35,47 @@
3235
def setup(app):
3336
# Add property to avoid warning.
3437
app.add_config_value("skip_python", None, "")
38+
app.connect("doctree-resolved", replace_pathto_in_raw_html)
39+
40+
41+
_PATHTO_RE = re.compile(
42+
r"""pathto\(\s*(['"])(?P<target>[^'"]+)\1(?:\s*,\s*(?P<resource>\d+))?\s*\)"""
43+
)
44+
45+
46+
def replace_pathto_in_raw_html(app, doctree, docname):
47+
"""
48+
Replace pathto(...) usages inside raw HTML nodes.
49+
50+
Sphinx only expands ``pathto`` in Jinja templates, not in reStructuredText
51+
document bodies. Some pages embed raw HTML and expect ``pathto('_static/...', 1)``
52+
to resolve to the correct relative asset path. Convert those calls after the
53+
doctree has been resolved so included documents are rewritten using the final
54+
output page path.
55+
"""
56+
57+
if app.builder.format != "html":
58+
return
59+
60+
depth = docname.count("/")
61+
prefix = "../" * depth
62+
63+
def repl(match):
64+
target = match.group("target").lstrip("/")
65+
if "://" in target or target.startswith(("#", "mailto:", "javascript:")):
66+
return target
67+
return posixpath.normpath(prefix + target)
68+
69+
for node in doctree.findall():
70+
if node.tagname != "raw":
71+
continue
72+
if "html" not in node.get("format", "").split():
73+
continue
74+
updated = _PATHTO_RE.sub(repl, node.astext())
75+
if updated == node.astext():
76+
continue
77+
node.rawsource = updated
78+
node.children = [nodes.Text(updated)]
3579

3680

3781
def download_json():

0 commit comments

Comments
 (0)