card-mod-content 0.11.0 → 0.11.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb52b2764cccee68e9de8d73edf69ae8be71529d81728b009fbf2f93bac63964
4
- data.tar.gz: 576999f00236a239917c9671a301358987554468e9e6b1640616f3c5a6cd1134
3
+ metadata.gz: 20ef16ab1cd68c60cef87aac784c6e59e693653c1dd83824c41836c779241dbc
4
+ data.tar.gz: af181919b1be08412e2f1a58e114ee1bd5f58fd115d23fd1f4971b8bbe0b2e40
5
5
  SHA512:
6
- metadata.gz: d375445000c6b0de05d4f455f24b45dde8999bc38e1e5021342865e74aa8d8e02ad057460411fa79c52892d15bdc97c0897ed4fe59a8a5cb37ab5ab08b234575
7
- data.tar.gz: b01ba00743f9392eee0ace1b6717fcbd5a2ca21c5b4b619a01ef51fd66ecb4e3c15628d6d90e90d0850cff22a8693ef4a2e3c516ae2c6b2c8f16c539cd82d813
6
+ metadata.gz: e4a460218fb818da58cfc64fdd5bee8ad0a88901833d03fa2a2bb7291386986dbb9acc0130b8f8a1ad9091ef779cd8d22d9f3537003d1ddc3b07a09a1a0c2c50
7
+ data.tar.gz: 6dfa5408e034673b954087356ee7f9c90f2e331c584e7b6761ae559b9571b487267091a4334346d80dc7edb0e13813200387d5108f271dc90b7b84901041f8e4
@@ -9,10 +9,10 @@ class Card
9
9
  # and within HTML tags.
10
10
  class EscapedLiteral < Abstract
11
11
  FULL_RE = { "[" => /\A\\\[\[[^\]]*\]\]/,
12
- "{" => /\A\\\{\{[^\}]*\}\}/ }.freeze
12
+ "{" => /\A\\\{\{[^}]*\}\}/ }.freeze
13
13
  Card::Content::Chunk.register_class self,
14
14
  prefix_re: '\\\\(?:\\[\\[|\\{\\{)',
15
- idx_char: '\\'
15
+ idx_char: "\\"
16
16
 
17
17
  def self.full_re prefix
18
18
  FULL_RE[prefix[1, 1]]
@@ -8,10 +8,10 @@ class Card
8
8
  # the escaping survives the markdown rendering.
9
9
  class KeepEscapedLiteral < Abstract
10
10
  FULL_RE = { "[" => /\A\\\[\[[^\]]*\]\]/,
11
- "{" => /\A\\\{\{[^\}]*\}\}/ }.freeze
11
+ "{" => /\A\\\{\{[^}]*\}\}/ }.freeze
12
12
  Card::Content::Chunk.register_class self,
13
13
  prefix_re: '\\\\(?:\\[\\[|\\{\\{)',
14
- idx_char: '\\'
14
+ idx_char: "\\"
15
15
 
16
16
  def self.full_re prefix
17
17
  FULL_RE[prefix[1, 1]]
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  # require File.expand_path("../reference", __FILE__)
4
- load File.expand_path("../reference.rb", __FILE__)
4
+ load File.expand_path("reference.rb", __dir__)
5
5
 
6
6
  class Card
7
7
  class Content
@@ -12,11 +12,12 @@ class Card
12
12
  class Link < Card::Content::Chunk::Reference
13
13
  CODE = "L".freeze # L for "Link"
14
14
  attr_reader :link_text
15
+
15
16
  # Groups: $1, [$2]: [[$1]] or [[$1|$2]] or $3, $4: [$3][$4]
16
17
  Card::Content::Chunk.register_class self,
17
18
  prefix_re: '\\[\\[',
18
- full_re: /\A\[\[([^\]]+)\]\]/,
19
- idx_char: "["
19
+ full_re: /\A\[\[([^\]]+)\]\]/,
20
+ idx_char: "["
20
21
  def reference_code
21
22
  CODE
22
23
  end
@@ -46,8 +47,9 @@ class Card
46
47
  # there's probably a better way to do the following.
47
48
  # point is to find the first pipe that's not inside an nest
48
49
  return unless string.index "|"
50
+
49
51
  string_copy = string.dup
50
- string.scan(/\{\{[^\}]*\}\}/) do |incl|
52
+ string.scan(/\{\{[^}]*\}\}/) do |incl|
51
53
  string_copy.gsub! incl, ("x" * incl.length)
52
54
  end
53
55
  string_copy.index "|"
@@ -60,6 +62,7 @@ class Card
60
62
 
61
63
  def objectify raw
62
64
  return unless raw
65
+
63
66
  raw.strip!
64
67
  if raw.match?(/(^|[^\\])\{\{/)
65
68
  Card::Content.new raw, format
@@ -107,7 +110,7 @@ class Card
107
110
 
108
111
  def replace_link_text old_name, new_name
109
112
  if @link_text.is_a?(Card::Content)
110
- @link_text.find_chunks(Card::Content::Chunk::Reference).each do |chunk|
113
+ @link_text.find_chunks(:Reference).each do |chunk|
111
114
  chunk.replace_reference old_name, new_name
112
115
  end
113
116
  elsif @link_text.present?
@@ -8,11 +8,12 @@ class Card
8
8
  # Handler for nest chunks: {{example}}
9
9
  class Nest < Reference
10
10
  attr_reader :options
11
+
11
12
  DEFAULT_OPTION = :view # a value without a key is interpreted as view
12
13
 
13
14
  Chunk.register_class(self, prefix_re: '\\{\\{',
14
- full_re: /\A\{\{([^\{\}]*)\}\}/,
15
- idx_char: "{")
15
+ full_re: /\A\{\{([^{}]*)\}\}/,
16
+ idx_char: "{")
16
17
 
17
18
  def interpret match, _content
18
19
  in_brackets = strip_tags match[1]
@@ -27,9 +28,9 @@ class Card
27
28
  end
28
29
 
29
30
  def strip_tags string
30
- # note: not using ActionView's strip_tags here
31
+ # NOTE: not using ActionView's strip_tags here
31
32
  # because this needs to be super fast.
32
- string.gsub(/\<[^\>]*\>/, "")
33
+ string.gsub(/<[^>]*>/, "")
33
34
  end
34
35
 
35
36
  def visible_comment message
@@ -83,6 +84,7 @@ class Card
83
84
 
84
85
  def explicit_view= view
85
86
  return if @options[:view]
87
+
86
88
  # could check to make sure it's not already the default...
87
89
  if @text.match?(/\|/)
88
90
  @text.sub! "|", "|#{view};"
@@ -100,7 +102,7 @@ class Card
100
102
  end
101
103
 
102
104
  def self.gsub string
103
- string.gsub(/\{\{([^\}]*)\}\}/) do |_match|
105
+ string.gsub(/\{\{([^}]*)\}\}/) do |_match|
104
106
  yield(Regexp.last_match[1])
105
107
  end
106
108
  end
@@ -113,6 +115,7 @@ class Card
113
115
 
114
116
  def each_option attr_string
115
117
  return if attr_string.blank?
118
+
116
119
  attr_string.strip.split(";").each do |pair|
117
120
  # key is optional for view option
118
121
  value, key = pair.split(":", 2).reverse
@@ -19,10 +19,10 @@ class Card
19
19
  class QueryReference < Reference
20
20
  QUERY_KEYWORDS = ::Set.new(
21
21
  (
22
- ::Card::Query::MODIFIERS.keys +
23
- ::Card::Query::OPERATORS.keys +
24
- ::Card::Query::ATTRIBUTES.keys +
25
- ::Card::Query::CONJUNCTIONS.keys +
22
+ Query::MODIFIERS.keys +
23
+ Query::OPERATORS.keys +
24
+ Query.attributes.keys +
25
+ Query::CONJUNCTIONS.keys +
26
26
  %w[desc asc count]
27
27
  ).map(&:to_s)
28
28
  )
@@ -9,26 +9,28 @@ class Card
9
9
 
10
10
  def referee_name
11
11
  return if name.nil?
12
- @referee_name ||= referee_name_from_rendered(render_obj(name))
13
- @referee_name = @referee_name.absolute(card.name).to_name
12
+
13
+ @referee_name ||= referee_raw_name
14
+ @referee_name = @referee_name.absolute_name card.name
14
15
  rescue Card::Error::NotFound
15
16
  # do not break on missing id/codename references.
16
17
  end
17
18
 
18
- def referee_name_from_rendered rendered_name
19
- ref_card = fetch_referee_card rendered_name
20
- ref_card ? ref_card.name : rendered_name.to_name
19
+ def referee_raw_name
20
+ Name[render_obj(name)]
21
21
  end
22
22
 
23
23
  def referee_card
24
24
  @referee_card ||= referee_name && Card.fetch(referee_name)
25
25
  end
26
26
 
27
+ private
28
+
27
29
  def replace_name_reference old_name, new_name
28
30
  @referee_card = nil
29
31
  @referee_name = nil
30
- if name.is_a? Card::Content
31
- name.find_chunks(Chunk::Reference).each do |chunk|
32
+ if name.is_a? Content
33
+ name.find_chunks(:Reference).each do |chunk|
32
34
  chunk.replace_reference old_name, new_name
33
35
  end
34
36
  else
@@ -37,22 +39,9 @@ class Card
37
39
  end
38
40
 
39
41
  def render_obj raw
40
- if format && raw.is_a?(Card::Content)
41
- format.process_content raw
42
- else
43
- raw
44
- end
45
- end
46
-
47
- private
42
+ return raw unless format && raw.is_a?(Content)
48
43
 
49
- def fetch_referee_card rendered_name
50
- case rendered_name # FIXME: this should be standard fetch option.
51
- when /^\~(\d+)$/ # get by id
52
- Card.fetch Regexp.last_match(1).to_i
53
- when /^\:(\w+)$/ # get by codename
54
- Card.fetch Regexp.last_match(1).to_sym
55
- end
44
+ format.process_content raw
56
45
  end
57
46
  end
58
47
  end
@@ -19,127 +19,132 @@ require "uri"
19
19
  # suffixes.
20
20
  # The generic names are from www.bnoack.com/data/countrycode2.html)
21
21
  # [iso3166]: http://geotags.com/iso3166/
22
- module Card::Content::Chunk
23
- class Uri < Abstract
24
- SCHEMES = %w[irc http https ftp ssh git sftp file ldap ldaps mailto].freeze
25
-
26
- REJECTED_PREFIX_RE = %w{! ": " ' ](}.map { |s| Regexp.escape s } * "|"
27
-
28
- attr_reader :uri, :link_text
29
- delegate :to, :scheme, :host, :port, :path, :query, :fragment, to: :uri
30
-
31
- Card::Content::Chunk.register_class(
32
- self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})(?:#{SCHEMES * '|'})\\:)",
33
- full_re: /\A#{::URI.regexp(SCHEMES)}/,
34
- idx_char: ":"
35
- )
36
-
37
- class << self
38
- def full_match content, prefix
39
- prepend_str = if prefix[-1, 1] != ":" && config[:prepend_str]
40
- config[:prepend_str]
41
- else
42
- ""
43
- end
44
- content = prepend_str + content
45
- match = super content, prefix
46
- [match, prepend_str.length]
47
- end
48
-
49
- def context_ok? content, chunk_start
50
- preceding_string = content[chunk_start - 2..chunk_start - 1]
51
- preceding_string !~ /(?:#{REJECTED_PREFIX_RE})$/
52
- end
53
- end
54
-
55
- def interpret match, _content
56
- chunk = match[0]
57
- last_char = chunk[-1, 1]
58
- chunk.gsub!(/(?:&nbsp;)+/, "")
22
+ class Card
23
+ class Content
24
+ module Chunk
25
+ class Uri < Abstract
26
+ SCHEMES = %w[irc http https ftp ssh git sftp file ldap ldaps mailto].freeze
27
+
28
+ REJECTED_PREFIX_RE = %w{! ": " ' ](}.map { |s| Regexp.escape s } * "|"
29
+
30
+ attr_reader :uri, :link_text
31
+
32
+ delegate :to, :scheme, :host, :port, :path, :query, :fragment, to: :uri
33
+
34
+ Card::Content::Chunk.register_class(
35
+ self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})(?:#{SCHEMES * '|'})\\:)",
36
+ full_re: /\A#{::URI::DEFAULT_PARSER.make_regexp(SCHEMES)}/,
37
+ idx_char: ":"
38
+ )
39
+
40
+ class << self
41
+ def full_match content, prefix
42
+ prepend_str = if prefix[-1, 1] != ":" && config[:prepend_str]
43
+ config[:prepend_str]
44
+ else
45
+ ""
46
+ end
47
+ content = prepend_str + content
48
+ match = super content, prefix
49
+ [match, prepend_str.length]
50
+ end
51
+
52
+ def context_ok? content, chunk_start
53
+ preceding_string = content[chunk_start - 2..chunk_start - 1]
54
+ preceding_string !~ /(?:#{REJECTED_PREFIX_RE})$/
55
+ end
56
+ end
59
57
 
60
- @trailing_punctuation =
61
- if %w[, . ) ! ? :].member?(last_char)
62
- @text.chop!
63
- chunk.chop!
64
- last_char
58
+ def interpret match, _content
59
+ chunk = match[0]
60
+ last_char = chunk[-1, 1]
61
+ chunk.gsub!(/(?:&nbsp;)+/, "")
62
+
63
+ @trailing_punctuation =
64
+ if %w[, . ) ! ? :].member?(last_char)
65
+ @text.chop!
66
+ chunk.chop!
67
+ last_char
68
+ end
69
+ chunk.sub!(/\.$/, "")
70
+
71
+ @link_text = chunk
72
+ @uri = ::URI.parse(chunk)
73
+ @process_chunk = process_uri_chunk
74
+ rescue ::URI::Error => e
75
+ # warn "rescue parse #{chunk_class}:
76
+ # '#{m}' #{e.inspect} #{e.backtrace*"\n"}"
77
+ Rails.logger.warn "rescue parse #{self.class}: #{e.inspect}"
65
78
  end
66
- chunk.sub!(/\.$/, "")
67
-
68
- @link_text = chunk
69
- @uri = ::URI.parse(chunk)
70
- @process_chunk = process_uri_chunk
71
- rescue ::URI::Error => e
72
- # warn "rescue parse #{chunk_class}:
73
- # '#{m}' #{e.inspect} #{e.backtrace*"\n"}"
74
- Rails.logger.warn "rescue parse #{self.class}: #{e.inspect}"
75
- end
76
79
 
77
- private
80
+ private
78
81
 
79
- def process_text
80
- @link_text
81
- end
82
+ def process_text
83
+ @link_text
84
+ end
82
85
 
83
- def process_uri_chunk
84
- link = format.link_to_resource @link_text, process_text
85
- "#{link}#{@trailing_punctuation}"
86
- end
87
- end
86
+ def process_uri_chunk
87
+ link = format.link_to_resource @link_text, process_text
88
+ "#{link}#{@trailing_punctuation}"
89
+ end
90
+ end
88
91
 
89
- # FIXME: DRY, merge these two into one class
90
- class EmailUri < Uri
91
- PREPEND_STR = "mailto:".freeze
92
- EMAIL = '[a-zA-Z\\d](?:[-a-zA-Z\\d.]*[a-zA-Z\\d])?\\@'.freeze
93
-
94
- Card::Content::Chunk.register_class(
95
- self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{EMAIL})\\b",
96
- full_re: /\A#{::URI.regexp(SCHEMES)}/,
97
- prepend_str: PREPEND_STR,
98
- idx_char: "@"
99
- )
100
-
101
- # removes the prepended string from the unchanged match text
102
- def process_text
103
- @text = @text.sub(/^mailto:/, "")
104
- end
105
- end
92
+ # FIXME: DRY, merge these two into one class
93
+ class EmailUri < Uri
94
+ PREPEND_STR = "mailto:".freeze
95
+ EMAIL = '[a-zA-Z\\d](?:[-a-zA-Z\\d.]*[a-zA-Z\\d])?\\@'.freeze
96
+
97
+ Card::Content::Chunk.register_class(
98
+ self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{EMAIL})\\b",
99
+ full_re: /\A#{::URI::DEFAULT_PARSER.make_regexp(SCHEMES)}/,
100
+ prepend_str: PREPEND_STR,
101
+ idx_char: "@"
102
+ )
103
+
104
+ # removes the prepended string from the unchanged match text
105
+ def process_text
106
+ @text = @text.sub(/^mailto:/, "")
107
+ end
108
+ end
106
109
 
107
- class HostUri < Uri
108
- GENERIC = "aero|biz|com|coop|edu|gov|info|int|mil|" \
109
- "museum|name|net|org".freeze
110
-
111
- COUNTRY = "ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|" \
112
- "bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cd|cg|" \
113
- "ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|" \
114
- "ec|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|" \
115
- "gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|" \
116
- "il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|" \
117
- "kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|" \
118
- "mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|" \
119
- "no|np|nr|nt|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|" \
120
- "qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|" \
121
- "st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|" \
122
- "tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|" \
123
- "za|zm|zr|zw|" \
124
- "eu".freeze # made this separate, since it's not technically
125
- # a country -efm
126
- # These are needed otherwise HOST will match almost anything
127
-
128
- TLDS = "(?:#{GENERIC}|#{COUNTRY})".freeze
129
- # TLDS = "(?:#{GENERIC})"
130
-
131
- PREPEND_STR = "http://".freeze
132
- HOST = "(?:[a-zA-Z\\d](?:[-a-zA-Z\\d]*[a-zA-Z\\d])?\\.)+#{TLDS}".freeze
133
-
134
- Card::Content::Chunk.register_class(
135
- self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{HOST})\\b",
136
- full_re: /\A#{::URI.regexp(SCHEMES)}/,
137
- prepend_str: PREPEND_STR
138
- )
139
-
140
- # removes the prepended string from the unchanged match text
141
- def process_text
142
- @text = @text.sub(%r{^http://}, "")
110
+ class HostUri < Uri
111
+ GENERIC = "aero|biz|com|coop|edu|gov|info|int|mil|" \
112
+ "museum|name|net|org".freeze
113
+
114
+ COUNTRY = "ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|" \
115
+ "bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cd|cg|" \
116
+ "ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|" \
117
+ "ec|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|" \
118
+ "gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|" \
119
+ "il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|" \
120
+ "kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|" \
121
+ "mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|" \
122
+ "no|np|nr|nt|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|" \
123
+ "qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|" \
124
+ "st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|" \
125
+ "tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|" \
126
+ "za|zm|zr|zw|" \
127
+ "eu".freeze # made this separate, since it's not technically
128
+ # a country -efm
129
+ # These are needed otherwise HOST will match almost anything
130
+
131
+ TLDS = "(?:#{GENERIC}|#{COUNTRY})".freeze
132
+ # TLDS = "(?:#{GENERIC})"
133
+
134
+ PREPEND_STR = "http://".freeze
135
+ HOST = "(?:[a-zA-Z\\d](?:[-a-zA-Z\\d]*[a-zA-Z\\d])?\\.)+#{TLDS}".freeze
136
+
137
+ Card::Content::Chunk.register_class(
138
+ self, prefix_re: "(?:(?!#{REJECTED_PREFIX_RE})#{HOST})\\b",
139
+ full_re: /\A#{::URI::DEFAULT_PARSER.make_regexp(SCHEMES)}/,
140
+ prepend_str: PREPEND_STR
141
+ )
142
+
143
+ # removes the prepended string from the unchanged match text
144
+ def process_text
145
+ @text = @text.sub(%r{^http://}, "")
146
+ end
147
+ end
143
148
  end
144
149
  end
145
150
  end
@@ -9,10 +9,6 @@ class Card
9
9
  idx_char: "("
10
10
  )
11
11
 
12
- def initialize text, content
13
- super
14
- end
15
-
16
12
  def interpret match, _content
17
13
  @stub_hash = initial_stub_hash match[1]
18
14
  interpret_hash_values
@@ -28,7 +24,7 @@ class Card
28
24
  end
29
25
 
30
26
  def interpret_hash_values
31
- @stub_hash.keys.each do |key|
27
+ @stub_hash.each_key do |key|
32
28
  send "interpret_#{key}"
33
29
  end
34
30
  end
@@ -1,5 +1,4 @@
1
1
  class << self
2
-
3
2
  def included host_class
4
3
  track_mod_name host_class, caller
5
4
  end
@@ -1,4 +1,3 @@
1
-
2
1
  def self.included host_class
3
2
  host_class.mattr_accessor :template_path
4
3
  host_class.extend Card::Set::Format::HamlPaths
data/set/abstract/lock.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  def lock
2
2
  was_already_locked = locked?
3
3
  return if was_already_locked
4
+
4
5
  Auth.as_bot do
5
6
  lock!
6
7
  yield
data/set/all/chunk.rb CHANGED
@@ -1,23 +1,21 @@
1
-
2
- def chunks content, type, named=false
1
+ def chunks content, type=nil, named=false
3
2
  content ||= self.content
4
- type ||= Card::Content::Chunk
5
3
  all_chunks = Card::Content.new(content, self).find_chunks type
6
4
  named ? all_chunks.select(&:referee_name) : all_chunks
7
5
  end
8
6
 
9
7
  def reference_chunks content=nil, named=true
10
- chunks content, Card::Content::Chunk::Reference, named
8
+ chunks content, :Reference, named
11
9
  end
12
10
 
13
11
  # named=true rejects commented nests
14
12
  def nest_chunks content=nil, named=true
15
- chunks content, Card::Content::Chunk::Nest, named
13
+ chunks content, :Nest, named
16
14
  end
17
15
 
18
16
  # named=true rejects external links (since the don't refer to a card name)
19
17
  def link_chunks content=nil, named=false
20
- chunks content, Card::Content::Chunk::Link, named
18
+ chunks content, :Link, named
21
19
  end
22
20
 
23
21
  def each_item_name_with_options content=nil
@@ -76,6 +74,7 @@ format do
76
74
 
77
75
  def each_nested_chunk content: nil, fields: false, uniq: true, virtual: true, &block
78
76
  return unless block_given?
77
+
79
78
  chunks = prepare_nested_chunks content, fields, uniq
80
79
  process_nested_chunks chunks, virtual, &block
81
80
  end
@@ -117,8 +116,8 @@ format do
117
116
  end
118
117
  end
119
118
 
120
- def process_virtual_chunk chunk
121
- subformat(chunk.referee_card).each_nested_field_chunk { |sub_chunk| yield sub_chunk }
119
+ def process_virtual_chunk chunk, &block
120
+ subformat(chunk.referee_card).each_nested_field_chunk(&block)
122
121
  end
123
122
 
124
123
  def explicit_edit_fields_config
@@ -137,6 +136,7 @@ format do
137
136
  def normalized_edit_field_mark cardish, options
138
137
  return cardish if cardish.is_a?(Card) ||
139
138
  (options.is_a?(Hash) && options.delete(:absolute))
139
+
140
140
  card.name.field cardish
141
141
  end
142
142
  end
@@ -1,4 +1,3 @@
1
-
2
1
  def is_template?
3
2
  return @is_template unless @is_template.nil?
4
3
 
@@ -46,6 +45,7 @@ end
46
45
 
47
46
  def assign_type_to? structure
48
47
  return if type_id == structure.type_id
48
+
49
49
  structure.assigns_type?
50
50
  end
51
51
 
@@ -1,5 +1,9 @@
1
1
  include_set Abstract::TemplatedNests
2
2
 
3
+ def item_names args={}
4
+ item_strings(args).compact.map(&:to_name)
5
+ end
6
+
3
7
  format :rss do
4
8
  def raw_feed_items
5
9
  [card]
@@ -51,7 +55,7 @@ def structuree_names
51
55
  end
52
56
 
53
57
  def update_structurees args
54
- # note that this is not smart about overriding templating rules
58
+ # NOTE: that this is not smart about overriding templating rules
55
59
  # for example, if someone were to change the type of a
56
60
  # +*right+*structure rule that was overridden
57
61
  # by a +*type plus right+*structure rule, the override would not be respected.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-content
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-12-24 00:00:00.000000000 Z
13
+ date: 2021-05-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.101.0
21
+ version: 1.101.5
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.101.0
28
+ version: 1.101.5
29
29
  description: ''
30
30
  email:
31
31
  - info@decko.org
@@ -52,10 +52,15 @@ files:
52
52
  - set/right/structure.rb
53
53
  - set/self/default.rb
54
54
  - set/self/structure.rb
55
- homepage: http://decko.org
55
+ homepage: https://decko.org
56
56
  licenses:
57
57
  - GPL-3.0
58
58
  metadata:
59
+ source_code_uri: https://github.com/decko-commons/decko
60
+ homepage_uri: https://decko.org
61
+ bug_tracker_uri: https://github.com/decko-commons/decko/issues
62
+ wiki_uri: https://decko.org
63
+ documentation_url: http://docs.decko.org/
59
64
  card-mod: content
60
65
  post_install_message:
61
66
  rdoc_options: []
@@ -72,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
77
  - !ruby/object:Gem::Version
73
78
  version: '0'
74
79
  requirements: []
75
- rubygems_version: 3.0.3
80
+ rubygems_version: 3.1.4
76
81
  signing_key:
77
82
  specification_version: 4
78
83
  summary: card content handling