card-mod-content 0.11.0 → 0.11.5

Sign up to get free protection for your applications and to get access to all the features.
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