Class: Plugin::Metadata
- Inherits:
-
Object
- Object
- Plugin::Metadata
- Defined in:
- lib/plugin/metadata.rb
Constant Summary collapse
- OFFICIAL_PLUGINS =
Set.new( %w[ discourse-adplugin discourse-affiliate discourse-ai discourse-akismet discourse-algolia discourse-apple-auth discourse-assign discourse-auto-deactivate discourse-bbcode discourse-bbcode-color discourse-cakeday discourse-calendar discourse-categories-suppressed discourse-category-experts discourse-characters-required discourse-chat-integration discourse-code-review discourse-crowd discourse-data-explorer discourse-details discourse-docs discourse-follow discourse-fontawesome-pro discourse-gamification discourse-geoblocking discourse-github discourse-gradle-issue discourse-graphviz discourse-group-tracker discourse-hcaptcha discourse-invite-tokens discourse-jira discourse-lazy-videos discourse-local-dates discourse-login-with-amazon discourse-logster-rate-limit-checker discourse-logster-transporter discourse-lti discourse-math discourse-microsoft-auth discourse-narrative-bot discourse-newsletter-integration discourse-no-bump discourse-oauth2-basic discourse-openid-connect discourse-patreon discourse-perspective-api discourse-policy discourse-post-voting discourse-presence discourse-prometheus discourse-prometheus-alert-receiver discourse-push-notifications discourse-reactions discourse-restricted-replies discourse-rss-polling discourse-salesforce discourse-saml discourse-saved-searches discourse-signatures discourse-solved discourse-staff-alias discourse-steam-login discourse-subscriptions discourse-tag-by-group discourse-teambuild discourse-templates discourse-tooltips discourse-topic-voting discourse-translator discourse-user-card-badges discourse-user-notes discourse-vk-auth discourse-whos-online discourse-yearly-review discourse-zendesk-plugin discourse-zoom automation chat checklist docker_manager footnote poll spoiler-alert styleguide ], )
- FIELDS =
%i[name about version authors contact_emails url required_version meta_topic_id label]
- MAX_FIELD_LENGTHS =
{ name: 75, about: 350, authors: 200, contact_emails: 200, url: 500, label: 20, }
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.parse(text) ⇒ Object
120 121 122 123 124 |
# File 'lib/plugin/metadata.rb', line 120 def self.parse(text) = self.new text.each_line { |line| break unless .parse_line(line) } end |
Instance Method Details
#meta_topic_id=(value) ⇒ Object
111 112 113 114 115 116 117 118 |
# File 'lib/plugin/metadata.rb', line 111 def (value) @meta_topic_id = begin Integer(value) rescue StandardError nil end end |
#official? ⇒ Boolean
126 127 128 |
# File 'lib/plugin/metadata.rb', line 126 def official? OFFICIAL_PLUGINS.include?(name) end |
#parse_line(line) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/plugin/metadata.rb', line 130 def parse_line(line) line = line.strip unless line.empty? return false unless line[0] == "#" attribute, *value = line[1..-1].split(":") value = value.join(":") attribute = attribute.strip.gsub(/ /, "_").to_sym if FIELDS.include?(attribute) self.public_send( "#{attribute}=", value.strip.truncate(MAX_FIELD_LENGTHS[attribute] || 1000), ) end end true end |