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 +4 -4
- data/lib/card/content/chunk/escaped_literal.rb +2 -2
- data/lib/card/content/chunk/keep_escaped_literal.rb +2 -2
- data/lib/card/content/chunk/link.rb +8 -5
- data/lib/card/content/chunk/nest.rb +8 -5
- data/lib/card/content/chunk/query_reference.rb +4 -4
- data/lib/card/content/chunk/reference.rb +11 -22
- data/lib/card/content/chunk/uri.rb +119 -114
- data/lib/card/content/chunk/view_stub.rb +1 -5
- data/set/abstract/code_file.rb +0 -1
- data/set/abstract/haml_file.rb +0 -1
- data/set/abstract/lock.rb +1 -0
- data/set/all/chunk.rb +8 -8
- data/set/all/templating.rb +1 -1
- data/set/right/structure.rb +5 -1
- metadata +11 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20ef16ab1cd68c60cef87aac784c6e59e693653c1dd83824c41836c779241dbc
|
4
|
+
data.tar.gz: af181919b1be08412e2f1a58e114ee1bd5f58fd115d23fd1f4971b8bbe0b2e40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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\\\{\{[
|
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\\\{\{[
|
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("
|
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:
|
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(/\{\{[
|
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(
|
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:
|
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
|
-
#
|
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(/\{\{([
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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
|
-
|
13
|
-
@referee_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
|
19
|
-
|
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?
|
31
|
-
name.find_chunks(
|
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
|
-
|
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
|
-
|
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
|
-
|
23
|
-
class
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
last_char = chunk[-1, 1]
|
58
|
-
chunk.gsub!(/(?: )+/, "")
|
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
|
-
|
61
|
-
|
62
|
-
|
63
|
-
chunk.
|
64
|
-
|
58
|
+
def interpret match, _content
|
59
|
+
chunk = match[0]
|
60
|
+
last_char = chunk[-1, 1]
|
61
|
+
chunk.gsub!(/(?: )+/, "")
|
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
|
-
|
80
|
+
private
|
78
81
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
+
def process_text
|
83
|
+
@link_text
|
84
|
+
end
|
82
85
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
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
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
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.
|
27
|
+
@stub_hash.each_key do |key|
|
32
28
|
send "interpret_#{key}"
|
33
29
|
end
|
34
30
|
end
|
data/set/abstract/code_file.rb
CHANGED
data/set/abstract/haml_file.rb
CHANGED
data/set/abstract/lock.rb
CHANGED
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,
|
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,
|
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,
|
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
|
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
|
data/set/all/templating.rb
CHANGED
data/set/right/structure.rb
CHANGED
@@ -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
|
-
#
|
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.
|
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:
|
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.
|
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.
|
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:
|
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.
|
80
|
+
rubygems_version: 3.1.4
|
76
81
|
signing_key:
|
77
82
|
specification_version: 4
|
78
83
|
summary: card content handling
|