このコミットが含まれているのは:
@@ -15,7 +15,9 @@ class TagGroupMarkdownRenderer
|
|||||||
placements = @group.fetch('placements')
|
placements = @group.fetch('placements')
|
||||||
validate_membership!(placements)
|
validate_membership!(placements)
|
||||||
blocks = []
|
blocks = []
|
||||||
blocks << clean_text(@group['description']) if @group['description'].present?
|
if @group['description'].present?
|
||||||
|
blocks << clean_text(@group['description'])
|
||||||
|
end
|
||||||
|
|
||||||
sections = placements.select { _1.key?('section_name') }
|
sections = placements.select { _1.key?('section_name') }
|
||||||
if sections.any? && sections.size != placements.size
|
if sections.any? && sections.size != placements.size
|
||||||
@@ -24,7 +26,7 @@ class TagGroupMarkdownRenderer
|
|||||||
end
|
end
|
||||||
|
|
||||||
if placements.all? { _1.key?('section_name') }
|
if placements.all? { _1.key?('section_name') }
|
||||||
blocks.concat(placements.map { render_heading(_1, 1) })
|
blocks.concat(placements.map { render_heading(_1, 2) })
|
||||||
else
|
else
|
||||||
blocks << render_list(placements, 0)
|
blocks << render_list(placements, 0)
|
||||||
end
|
end
|
||||||
@@ -36,15 +38,17 @@ class TagGroupMarkdownRenderer
|
|||||||
|
|
||||||
def validate_membership! placements
|
def validate_membership! placements
|
||||||
placed = placement_members(placements).uniq.sort
|
placed = placement_members(placements).uniq.sort
|
||||||
members = @group.fetch('members').map do |member|
|
members = @group.fetch('members').map { |member|
|
||||||
if member['tag']
|
if member['tag']
|
||||||
['tag', member.fetch('tag').fetch('id')]
|
['tag', member.fetch('tag').fetch('id')]
|
||||||
else
|
else
|
||||||
['tag_group', member.fetch('tag_group').fetch('id')]
|
['tag_group', member.fetch('tag_group').fetch('id')]
|
||||||
end
|
end
|
||||||
end.uniq.sort
|
}.uniq.sort
|
||||||
missing = members - placed
|
missing = members - placed
|
||||||
raise UnsupportedStructure, '掲載位置のない membership は Markdown にできません.' if missing.any?
|
if missing.any?
|
||||||
|
raise UnsupportedStructure, '掲載位置のない membership は Markdown にできません.'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def placement_members nodes
|
def placement_members nodes
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ RSpec.describe 'Tag group Markdown round trips through the Wiki facade', type: :
|
|||||||
let!(:user) { create_member_user! }
|
let!(:user) { create_member_user! }
|
||||||
let!(:series) { group_tag('ぼざろクリーチャーシリーズ') }
|
let!(:series) { group_tag('ぼざろクリーチャーシリーズ') }
|
||||||
let!(:deer) { group_tag('洗澡鹿') }
|
let!(:deer) { group_tag('洗澡鹿') }
|
||||||
let!(:nijika) { group_tag('伊地知ニジカ') }
|
let!(:nizika) { group_tag('伊地知ニジカ') }
|
||||||
let!(:wanted) { group_tag('タグ希望') }
|
let!(:wanted) { group_tag('タグ希望') }
|
||||||
let!(:character) { group_tag('キャラクター名希望') }
|
let!(:character) { group_tag('キャラクター名希望') }
|
||||||
let!(:music) { group_tag('楽曲情報希望') }
|
let!(:music) { group_tag('楽曲情報希望') }
|
||||||
@@ -58,9 +58,9 @@ RSpec.describe 'Tag group Markdown round trips through the Wiki facade', type: :
|
|||||||
|
|
||||||
it 'renders a child Tag Group distinctly from its parent Tags' do
|
it 'renders a child Tag Group distinctly from its parent Tags' do
|
||||||
check_round_trip(
|
check_round_trip(
|
||||||
members: [tag_member(series), tag_member(nijika),
|
members: [tag_member(series), tag_member(nizika),
|
||||||
{ 'tag_group_id' => child_id, 'version_no' => 1 }],
|
{ 'tag_group_id' => child_id, 'version_no' => 1 }],
|
||||||
placements: [tag_node(series, [tag_node(nijika, [
|
placements: [tag_node(series, [tag_node(nizika, [
|
||||||
{ 'tag_group_id' => child_id, 'children' => [] }])])],
|
{ 'tag_group_id' => child_id, 'children' => [] }])])],
|
||||||
markdown: <<~MARKDOWN)
|
markdown: <<~MARKDOWN)
|
||||||
- ぼざろクリーチャーシリーズ
|
- ぼざろクリーチャーシリーズ
|
||||||
@@ -81,14 +81,14 @@ RSpec.describe 'Tag group Markdown round trips through the Wiki facade', type: :
|
|||||||
markdown: <<~MARKDOWN)
|
markdown: <<~MARKDOWN)
|
||||||
全体の説明
|
全体の説明
|
||||||
|
|
||||||
# 要求
|
## 要求
|
||||||
要求の説明
|
要求の説明
|
||||||
|
|
||||||
- タグ希望
|
- タグ希望
|
||||||
- キャラクター名希望
|
- キャラクター名希望
|
||||||
- 楽曲情報希望
|
- 楽曲情報希望
|
||||||
|
|
||||||
# 情報
|
## 情報
|
||||||
- bot操作
|
- bot操作
|
||||||
- ニジラー情報不詳
|
- ニジラー情報不詳
|
||||||
MARKDOWN
|
MARKDOWN
|
||||||
@@ -103,12 +103,12 @@ RSpec.describe 'Tag group Markdown round trips through the Wiki facade', type: :
|
|||||||
{ 'section_name' => '子', 'description' => '子の説明',
|
{ 'section_name' => '子', 'description' => '子の説明',
|
||||||
'children' => [tag_node(deer)] }] }],
|
'children' => [tag_node(deer)] }] }],
|
||||||
markdown: <<~MARKDOWN)
|
markdown: <<~MARKDOWN)
|
||||||
# 親
|
## 親
|
||||||
親の説明
|
親の説明
|
||||||
|
|
||||||
- 洗澡鹿
|
- 洗澡鹿
|
||||||
|
|
||||||
## 子
|
### 子
|
||||||
子の説明
|
子の説明
|
||||||
|
|
||||||
- 洗澡鹿
|
- 洗澡鹿
|
||||||
|
|||||||
新しいイシューから参照
ユーザーをブロックする