Sha256: 3f3760ed8013a8eb24e288aefc48eacd9acbddbbf5effb21b2111f6f4d8fbad0
Contents?: true
Size: 1.26 KB
Versions: 38
Compression:
Stored size: 1.26 KB
Contents
# frozen_string_literal: true module Decidim module ContentParsers # A parser that searches mentions of Proposals in content. # # This parser accepts two ways for linking Proposals. # - Using a standard url starting with http or https. # - With a word starting with `~` and digits afterwards will be considered a possible mentioned proposal. # For example `~1234`, but no `~ 1234`. # # Also fills a `Metadata#linked_proposals` attribute. # # @see BaseParser Examples of how to use a content parser class ProposalParser < ResourceParser # Class used as a container for metadata # # @!attribute linked_proposals # @return [Array] an array of Decidim::Proposals::Proposal mentioned in content Metadata = Struct.new(:linked_proposals) def initialize(content, context) super @metadata = Metadata.new([]) end # (see BaseParser#metadata) attr_reader :metadata private def url_regex %r{#{URL_REGEX_SCHEME}#{URL_REGEX_CONTENT}/proposals/#{URL_REGEX_END_CHAR}+}i end def model_class "Decidim::Proposals::Proposal" end def update_metadata(resource) @metadata.linked_proposals << resource.id end end end end
Version data entries
38 entries across 38 versions & 1 rubygems