Skip to content

Commit

Permalink
Merge pull request #215 from ma10/add-related-faq-field-20240329
Browse files Browse the repository at this point in the history
FAQに関連FAQのフィールドを追加
  • Loading branch information
ma10 authored Mar 29, 2024
2 parents 7b09c3f + 5f1a9c0 commit 7232b9b
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .lintstagedrc.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ export default {
'data/yaml/gl/**/*.yaml': (files) => files.map((file) => `ajv validate --spec=draft2020 -s data/json/schemas/guideline.json -r data/json/schemas/common.json -d ${file}`),
'data/yaml/checks/**/*.yaml': (files) => files.map((file) => `ajv validate --spec=draft2020 -s data/json/schemas/check.json -r data/json/schemas/common.json -d ${file}`),
'data/yaml/faq/**/*.yaml': (files) => files.map((file) => `ajv validate --spec=draft2020 -s data/json/schemas/faq.json -r data/json/schemas/common.json -d ${file}`),
'*.rst': 'sphinx-lint --enable all --disable line-too-long',
'(ja|en)/**/*.rst': 'sphinx-lint --enable all --disable line-too-long',
}
8 changes: 8 additions & 0 deletions data/json/schemas/faq.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@
"items": {
"type": "string"
}
},
"faqs": {
"description": "related FAQ entry if any",
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
Expand Down
34 changes: 33 additions & 1 deletion tools/yaml2rst/a11y_guidelines.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ def __init__(self):
if self._initialized:
return
self._data = {}
self._unresolved_faqs = {}
self._initialized = True

def associate_objects(self, obj1, obj2):
Expand All @@ -41,6 +42,23 @@ def associate_objects(self, obj1, obj2):
if obj1 not in self._data[obj2_type][obj2_id][obj1_type]:
self._data[obj2_type][obj2_id][obj1_type].append(obj1)

def add_unresolved_faqs(self, faq1, faq2):
if faq1 not in self._unresolved_faqs:
self._unresolved_faqs[faq1] = []
if faq2 not in self._unresolved_faqs[faq1]:
self._unresolved_faqs[faq1].append(faq2)
if faq2 not in self._unresolved_faqs:
self._unresolved_faqs[faq2] = []
if faq1 not in self._unresolved_faqs[faq2]:
self._unresolved_faqs[faq2].append(faq1)

def resolve_faqs(self):
for faq_id in self._unresolved_faqs:
for faq2_id in self._unresolved_faqs[faq_id]:
faq1 = Faq.get_by_id(faq_id)
faq2 = Faq.get_by_id(faq2_id)
self.associate_objects(faq1, faq2)

def get_guidelines_to_category(self):
mapping = {}
for category in self._data['category']:
Expand Down Expand Up @@ -119,6 +137,11 @@ def get_info_to_faqs(self, info):
return self._data['info_ref'][info.id]['faq']
return []

def get_related_faqs(self, faq):
if faq.id not in self._unresolved_faqs:
return []
return sorted(self._data['faq'][faq.id]['faq'], key=lambda item: item.sort_key)

def get_axe_to_wcagsc(self, axe_rule):
if 'wcag_sc' in self._data['axe_rule'][axe_rule.id]:
return self._data['axe_rule'][axe_rule.id]['wcag_sc']
Expand Down Expand Up @@ -304,7 +327,9 @@ def __init__(self, faq):
if 'info' in faq:
for info in faq['info']:
rel.associate_objects(self, InfoRef(info))

if 'faqs' in faq:
for related_faq in faq['faqs']:
rel.add_unresolved_faqs(self.id, related_faq)
Faq.all_faqs[self.id] = self

def get_dependency(self):
Expand Down Expand Up @@ -344,6 +369,9 @@ def template_object(self, lang):
info = rel.get_faq_to_info(self)
if len(info):
template_object['info'] = [inforef.refstring() for inforef in info]
related_faqs = rel.get_related_faqs(self)
if len(related_faqs) > 0:
template_object['related_faqs'] = [faq.id for faq in related_faqs]
return template_object

@classmethod
Expand All @@ -358,6 +386,10 @@ def list_all_src_paths(cls):
for faq in cls.all_faqs.values():
yield faq.src_path

@classmethod
def get_by_id(cls, faq_id):
return cls.all_faqs.get(faq_id)

class Category:
all_categories = {}

Expand Down
4 changes: 3 additions & 1 deletion tools/yaml2rst/a11y_guidelines_initializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ def setup_instances(settings):

process_axe_rules(src_path['axe_rules'], src_path['axe_msg_ja'], src_path['axe_pkg'], DEQUE_URL)

return RelationshipManager()
rel = RelationshipManager()
rel.resolve_faqs()
return rel

def process_axe_rules(axe_rules_dir, axe_msg_ja_file, axe_pkg_file, base_url):
try:
Expand Down
26 changes: 16 additions & 10 deletions tools/yaml2rst/templates/en/faq/article.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,30 +26,36 @@ Explanation
{%- endfilter %}

{{ explanation }}
{% if related_faqs is defined %}
{% filter make_heading(2) -%}
Related FAQs
{%- endfilter %}

{% if guidelines is defined -%}
{%- filter make_heading(2) -%}
{% for faq in related_faqs -%}
* :ref:`faq-{{ faq }}`
{% endfor %}
{%- endif -%}
{% if guidelines is defined %}
{% filter make_heading(2) -%}
Related Guidelines
{%- endfilter %}

{% for gl in guidelines -%}
* {{ gl.category }}: :ref:`{{ gl.guideline }}`
{% endfor %}
{%- endif %}

{% if checks is defined -%}
{%- filter make_heading(2) -%}
{%- endif -%}
{% if checks is defined %}
{% filter make_heading(2) -%}
Related Checklist Items
{%- endfilter %}

{% for check in checks -%}
:ref:`check-{{ check.id }}`
{{ check.check | indent(3) }}
{% endfor %}
{%- endif %}

{% if info is defined -%}
{%- filter make_heading(2) -%}
{%- endif -%}
{% if info is defined %}
{% filter make_heading(2) -%}
Related Supplementary Information
{%- endfilter %}

Expand Down
28 changes: 16 additions & 12 deletions tools/yaml2rst/templates/ja/faq/article.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,38 +26,42 @@
{%- endfilter %}

{{ explanation }}
{% if related_faqs is defined %}
{% filter make_heading(2) -%}
関連FAQ
{%- endfilter %}

{% if guidelines is defined -%}
{%- filter make_heading(2) -%}
{% for faq in related_faqs -%}
* :ref:`faq-{{ faq }}`
{% endfor %}
{%- endif -%}
{% if guidelines is defined %}
{% filter make_heading(2) -%}
関連ガイドライン項目
{%- endfilter %}

{% for gl in guidelines -%}
* {{ gl.category }}: :ref:`{{ gl.guideline }}`
{% endfor %}
{%- endif %}

{% if checks is defined -%}
{%- filter make_heading(2) -%}
{%- endif -%}
{% if checks is defined %}
{% filter make_heading(2) -%}
関連チェック内容
{%- endfilter %}

{% for check in checks -%}
:ref:`check-{{ check.id }}`
{{ check.check | indent(3) }}
{% endfor %}
{%- endif %}

{% if info is defined -%}
{%- filter make_heading(2) -%}
{%- endif -%}
{% if info is defined %}
{% filter make_heading(2) -%}
関連する参考情報
{%- endfilter %}

{% for i in info -%}
* {{ i }}
{% endfor %}
{%- endif %}


.. translated:: true

0 comments on commit 7232b9b

Please sign in to comment.