このコミットが含まれているのは:
@@ -210,23 +210,19 @@ class CountsPopulation
|
||||
|
||||
raw = params['tags']
|
||||
tokens = raw.split.reject { _1.downcase == 'type:or' }
|
||||
refs = PostTagSearch.parse_references(params, tokens, partial: true)
|
||||
locale = Locale.find_by(code: params.fetch('locale', 'ja'))
|
||||
raise ArgumentError unless locale
|
||||
|
||||
literals = PostTagSearch.literals(locale, tokens.join(' '), references: refs)
|
||||
literals = PostTagSearch.literals(locale, tokens.join(' '))
|
||||
identities = PostTagSearch.references_for(locale, literals)
|
||||
predicates = literals.map do |literal|
|
||||
reference = literal[:reference]
|
||||
expression = if reference
|
||||
parts = { 'internal' => reference['tag_id'],
|
||||
'external' => reference['external_tag_id'] }.filter_map do |kind, id|
|
||||
snapshot_membership("#{ kind }:#{ id }") if id
|
||||
end
|
||||
parts.empty? ? 'FALSE' : "(#{ parts.join(' OR ') })"
|
||||
else
|
||||
@condition ||= CountsCondition.new(self)
|
||||
@condition.tag_name_match(literal[:name])
|
||||
end
|
||||
# Resolve current names/aliases exactly as normal post search does. Only
|
||||
# membership comes from history; snapshot names never identify a tag.
|
||||
internal, external = identities.fetch(literal[:name])
|
||||
parts = { 'internal' => internal, 'external' => external }.flat_map do |kind, ids|
|
||||
Array(ids).map { |id| snapshot_membership("#{ kind }:#{ id }") }
|
||||
end
|
||||
expression = parts.empty? ? 'FALSE' : "(#{ parts.join(' OR ') })"
|
||||
literal[:negative] ? "NOT #{ expression }" : expression
|
||||
end
|
||||
return if predicates.empty?
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする