shortcode 1.2.1 → 2.0.0.pre
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 +4 -4
- data/.rubocop +1 -0
- data/.rubocop.yml +72 -0
- data/.travis.yml +7 -6
- data/Appraisals +3 -7
- data/Gemfile +2 -2
- data/Gemfile.lock +136 -18
- data/bin/appraisal +17 -0
- data/bin/rspec +17 -0
- data/bin/rubocop +17 -0
- data/gemfiles/rails_4.2.gemfile +1 -1
- data/gemfiles/rails_5.0.gemfile +1 -1
- data/gemfiles/rails_5.1.gemfile +1 -1
- data/lib/shortcode.rb +17 -41
- data/lib/shortcode/configuration.rb +3 -1
- data/lib/shortcode/parser.rb +21 -17
- data/lib/shortcode/presenter.rb +18 -15
- data/lib/shortcode/processor.rb +3 -1
- data/lib/shortcode/railtie.rb +2 -0
- data/lib/shortcode/tag.rb +11 -4
- data/lib/shortcode/template_binding.rb +12 -7
- data/lib/shortcode/transformer.rb +8 -4
- data/lib/shortcode/version.rb +3 -1
- data/shortcode.gemspec +10 -7
- data/spec/.rubocop.yml +17 -0
- data/spec/performance_spec.rb +4 -5
- data/spec/rails_helpers_spec.rb +25 -31
- data/spec/shortcode/parser_spec.rb +313 -0
- data/spec/shortcode/presenter_spec.rb +118 -0
- data/spec/shortcode/tag_spec.rb +73 -0
- data/spec/shortcode_spec.rb +40 -37
- data/spec/spec_helper.rb +6 -20
- data/spec/support/fixtures.rb +4 -6
- data/spec/support/presenters/missing_attributes_presenter.rb +3 -6
- data/spec/support/presenters/missing_content_presenter.rb +3 -6
- data/spec/support/presenters/missing_for_presenter.rb +3 -6
- data/spec/support/presenters/missing_initialize_presenter.rb +3 -6
- data/spec/support/presenters/multiple_presenter.rb +4 -5
- data/spec/support/presenters/my_presenter.rb +3 -4
- data/spec/support/presenters/other_presenter.rb +3 -4
- data/spec/template_parsers_spec.rb +21 -22
- data/spec/transformer_spec.rb +26 -36
- metadata +75 -24
- data/gemfiles/rails_4.1.gemfile +0 -8
- data/spec/parser_spec.rb +0 -307
- data/spec/presenter_spec.rb +0 -126
- data/spec/tag_spec.rb +0 -86
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shortcode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Dyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parslet
|
@@ -38,6 +38,48 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.15'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: coveralls
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.8'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: haml
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rails
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 5.1.4
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 5.1.4
|
41
83
|
- !ruby/object:Gem::Dependency
|
42
84
|
name: rake
|
43
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,64 +100,69 @@ dependencies:
|
|
58
100
|
requirements:
|
59
101
|
- - "~>"
|
60
102
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
103
|
+
version: '3.7'
|
62
104
|
type: :development
|
63
105
|
prerelease: false
|
64
106
|
version_requirements: !ruby/object:Gem::Requirement
|
65
107
|
requirements:
|
66
108
|
- - "~>"
|
67
109
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
110
|
+
version: '3.7'
|
69
111
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
112
|
+
name: rubocop
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
72
114
|
requirements:
|
73
115
|
- - "~>"
|
74
116
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
117
|
+
version: '0.51'
|
76
118
|
type: :development
|
77
119
|
prerelease: false
|
78
120
|
version_requirements: !ruby/object:Gem::Requirement
|
79
121
|
requirements:
|
80
122
|
- - "~>"
|
81
123
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
124
|
+
version: '0.51'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
126
|
+
name: rubocop-rspec
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
86
128
|
requirements:
|
87
129
|
- - "~>"
|
88
130
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
131
|
+
version: '1.19'
|
90
132
|
type: :development
|
91
133
|
prerelease: false
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
93
135
|
requirements:
|
94
136
|
- - "~>"
|
95
137
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
138
|
+
version: '1.19'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
140
|
+
name: slim
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
100
142
|
requirements:
|
101
143
|
- - "~>"
|
102
144
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
145
|
+
version: '3.0'
|
104
146
|
type: :development
|
105
147
|
prerelease: false
|
106
148
|
version_requirements: !ruby/object:Gem::Requirement
|
107
149
|
requirements:
|
108
150
|
- - "~>"
|
109
151
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
152
|
+
version: '3.0'
|
111
153
|
description: Gem for parsing wordpress style shortcodes
|
112
154
|
email:
|
113
155
|
- jamie@kernowsoul.com
|
114
|
-
executables:
|
156
|
+
executables:
|
157
|
+
- appraisal
|
158
|
+
- rspec
|
159
|
+
- rubocop
|
115
160
|
extensions: []
|
116
161
|
extra_rdoc_files: []
|
117
162
|
files:
|
118
163
|
- ".gitignore"
|
164
|
+
- ".rubocop"
|
165
|
+
- ".rubocop.yml"
|
119
166
|
- ".ruby-version"
|
120
167
|
- ".travis.yml"
|
121
168
|
- Appraisals
|
@@ -125,7 +172,9 @@ files:
|
|
125
172
|
- LICENSE.txt
|
126
173
|
- README.md
|
127
174
|
- Rakefile
|
128
|
-
-
|
175
|
+
- bin/appraisal
|
176
|
+
- bin/rspec
|
177
|
+
- bin/rubocop
|
129
178
|
- gemfiles/rails_4.2.gemfile
|
130
179
|
- gemfiles/rails_5.0.gemfile
|
131
180
|
- gemfiles/rails_5.1.gemfile
|
@@ -141,10 +190,12 @@ files:
|
|
141
190
|
- lib/shortcode/transformer.rb
|
142
191
|
- lib/shortcode/version.rb
|
143
192
|
- shortcode.gemspec
|
144
|
-
- spec
|
193
|
+
- spec/.rubocop.yml
|
145
194
|
- spec/performance_spec.rb
|
146
|
-
- spec/presenter_spec.rb
|
147
195
|
- spec/rails_helpers_spec.rb
|
196
|
+
- spec/shortcode/parser_spec.rb
|
197
|
+
- spec/shortcode/presenter_spec.rb
|
198
|
+
- spec/shortcode/tag_spec.rb
|
148
199
|
- spec/shortcode_spec.rb
|
149
200
|
- spec/spec_helper.rb
|
150
201
|
- spec/support/fixtures.rb
|
@@ -198,7 +249,6 @@ files:
|
|
198
249
|
- spec/support/templates/haml/rails_helper.html.haml
|
199
250
|
- spec/support/templates/slim/quote.html.slim
|
200
251
|
- spec/support/templates/slim/rails_helper.html.slim
|
201
|
-
- spec/tag_spec.rb
|
202
252
|
- spec/template_parsers_spec.rb
|
203
253
|
- spec/transformer_spec.rb
|
204
254
|
homepage: https://github.com/kernow/shortcode
|
@@ -216,20 +266,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
266
|
version: '0'
|
217
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
268
|
requirements:
|
219
|
-
- - "
|
269
|
+
- - ">"
|
220
270
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
271
|
+
version: 1.3.1
|
222
272
|
requirements: []
|
223
273
|
rubyforge_project:
|
224
|
-
rubygems_version: 2.
|
274
|
+
rubygems_version: 2.6.13
|
225
275
|
signing_key:
|
226
276
|
specification_version: 4
|
227
277
|
summary: Gem for parsing wordpress style shortcodes in ruby projects
|
228
278
|
test_files:
|
229
|
-
- spec
|
279
|
+
- spec/.rubocop.yml
|
230
280
|
- spec/performance_spec.rb
|
231
|
-
- spec/presenter_spec.rb
|
232
281
|
- spec/rails_helpers_spec.rb
|
282
|
+
- spec/shortcode/parser_spec.rb
|
283
|
+
- spec/shortcode/presenter_spec.rb
|
284
|
+
- spec/shortcode/tag_spec.rb
|
233
285
|
- spec/shortcode_spec.rb
|
234
286
|
- spec/spec_helper.rb
|
235
287
|
- spec/support/fixtures.rb
|
@@ -283,6 +335,5 @@ test_files:
|
|
283
335
|
- spec/support/templates/haml/rails_helper.html.haml
|
284
336
|
- spec/support/templates/slim/quote.html.slim
|
285
337
|
- spec/support/templates/slim/rails_helper.html.slim
|
286
|
-
- spec/tag_spec.rb
|
287
338
|
- spec/template_parsers_spec.rb
|
288
339
|
- spec/transformer_spec.rb
|
data/gemfiles/rails_4.1.gemfile
DELETED
data/spec/parser_spec.rb
DELETED
@@ -1,307 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'parslet/rig/rspec'
|
3
|
-
require 'pp'
|
4
|
-
|
5
|
-
describe Shortcode::Parser do
|
6
|
-
configuration = Shortcode.singleton.send(:configuration)
|
7
|
-
let(:parser) { Shortcode::Parser.new(configuration) }
|
8
|
-
|
9
|
-
let(:simple_quote) { load_fixture :simple_quote }
|
10
|
-
let(:full_quote) { load_fixture :full_quote }
|
11
|
-
let(:without_quotes) { load_fixture :without_quotes }
|
12
|
-
let(:quote_with_extras) { load_fixture :quote_with_extras }
|
13
|
-
let(:simple_list) { load_fixture :simple_list }
|
14
|
-
let(:timeline_event) { load_fixture :timeline_event }
|
15
|
-
let(:timeline_info) { load_fixture :timeline_info }
|
16
|
-
let(:timeline_person) { load_fixture :timeline_person }
|
17
|
-
let(:complex_snippet) { load_fixture :complex_snippet }
|
18
|
-
|
19
|
-
let(:quotes) { [simple_quote, full_quote, quote_with_extras] }
|
20
|
-
let(:collapsible_lists) { [simple_list] }
|
21
|
-
let(:timelines) { [timeline_event, timeline_info, timeline_person] }
|
22
|
-
|
23
|
-
it "parses quote shortcodes" do
|
24
|
-
quotes.each do |string|
|
25
|
-
expect(parser).to parse(string)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "matching similar tags" do
|
30
|
-
|
31
|
-
context "with the smaller tag listed first" do
|
32
|
-
|
33
|
-
before do
|
34
|
-
Shortcode.setup do |config|
|
35
|
-
config.block_tags = [:xx, :xxx]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
it "parses xx" do
|
40
|
-
expect(parser.open).to parse("[xx]")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "parses xxx" do
|
44
|
-
expect(parser.open).to parse("[xxx]")
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
context "with the smaller tag listed last" do
|
50
|
-
|
51
|
-
before do
|
52
|
-
Shortcode.setup do |config|
|
53
|
-
config.block_tags = [:xxx, :xx]
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
it "parses xx" do
|
58
|
-
expect(parser.open).to parse("[xx]")
|
59
|
-
end
|
60
|
-
|
61
|
-
it "parses xxx" do
|
62
|
-
expect(parser.open).to parse("[xxx]")
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
context "attribute_quote_type configuration" do
|
70
|
-
|
71
|
-
before do
|
72
|
-
Shortcode.setup do |config|
|
73
|
-
config.attribute_quote_type = "'"
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
it "parses quotes using custom quotations" do
|
78
|
-
quotes.each do |string|
|
79
|
-
# Change double quotes to single quotes in the fixture
|
80
|
-
expect(parser).to parse(string.gsub '"', "'")
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
context "use_attribute_quotes configuration" do
|
87
|
-
|
88
|
-
before do
|
89
|
-
Shortcode.setup do |config|
|
90
|
-
config.use_attribute_quotes = false
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
it "parses shortcodes with optional quotes" do
|
95
|
-
expect(parser).to parse(without_quotes)
|
96
|
-
end
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
it "parses list shortcodes" do
|
101
|
-
collapsible_lists.each do |string|
|
102
|
-
expect(parser).to parse(string)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
it "parses timeline shortcodes" do
|
107
|
-
timelines.each do |string|
|
108
|
-
expect(parser).to parse(string)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
it "parses complex nested shortcodes" do
|
113
|
-
expect(parser).to parse(complex_snippet)
|
114
|
-
end
|
115
|
-
|
116
|
-
describe "parsed strings" do
|
117
|
-
|
118
|
-
context "simple_quote" do
|
119
|
-
|
120
|
-
let(:parsed_object) { parser.parse(simple_quote) }
|
121
|
-
|
122
|
-
it "created the expected object" do
|
123
|
-
expect(parsed_object[:body]).to eq([{ open: "quote", options: [], inner: [{ text: "hello" }], close: "quote" }])
|
124
|
-
end
|
125
|
-
|
126
|
-
end
|
127
|
-
|
128
|
-
context "full_quote" do
|
129
|
-
|
130
|
-
let(:parsed_object) { parser.parse(full_quote) }
|
131
|
-
|
132
|
-
it "created the expected object" do
|
133
|
-
expect(parsed_object[:body]).to eq([{
|
134
|
-
open: "quote",
|
135
|
-
options: [
|
136
|
-
{ key: "author", value: "Jamie Dyer" },
|
137
|
-
{ key: "title", value: "King of England" }
|
138
|
-
],
|
139
|
-
inner: [{ text: "A quote" }],
|
140
|
-
close: "quote"
|
141
|
-
}])
|
142
|
-
end
|
143
|
-
|
144
|
-
end
|
145
|
-
|
146
|
-
context "quote_with_extras" do
|
147
|
-
|
148
|
-
let(:parsed_object) { parser.parse(quote_with_extras) }
|
149
|
-
|
150
|
-
it "created the expected object" do
|
151
|
-
expect(parsed_object[:body]).to eq([
|
152
|
-
{ text: "Blah blah " },
|
153
|
-
{
|
154
|
-
open: "quote",
|
155
|
-
options: [
|
156
|
-
{ key: "author", value: "Jamie Dyer" }
|
157
|
-
],
|
158
|
-
inner: [{ text: "A quote" }],
|
159
|
-
close: "quote"
|
160
|
-
},
|
161
|
-
{ text: " <br> blah blah\n" }
|
162
|
-
])
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
|
-
context "simple_list" do
|
168
|
-
|
169
|
-
let(:parsed_object) { parser.parse(simple_list) }
|
170
|
-
|
171
|
-
it "created the expected object" do
|
172
|
-
expect(parsed_object[:body]).to eq([{
|
173
|
-
open: "collapsible_list",
|
174
|
-
options: [],
|
175
|
-
inner: [{
|
176
|
-
open: "item",
|
177
|
-
options: [{ key: "title", value: "Example title 1" }],
|
178
|
-
inner: [{ text: "Example content 1" }],
|
179
|
-
close: "item"
|
180
|
-
},
|
181
|
-
{
|
182
|
-
open: "item",
|
183
|
-
options: [{ key: "title", value: "Example title 2" }],
|
184
|
-
inner: [{ text: "Example content 2" }],
|
185
|
-
close: "item"
|
186
|
-
},
|
187
|
-
{
|
188
|
-
open: "item",
|
189
|
-
options: [{ key: "title", value: "Example title 3" }],
|
190
|
-
inner: [{ text: "Example content 3" }],
|
191
|
-
close: "item"
|
192
|
-
}],
|
193
|
-
close: "collapsible_list"
|
194
|
-
}])
|
195
|
-
end
|
196
|
-
|
197
|
-
end
|
198
|
-
|
199
|
-
context "timeline_event" do
|
200
|
-
|
201
|
-
let(:parsed_object) { parser.parse(timeline_event) }
|
202
|
-
|
203
|
-
it "created the expected object" do
|
204
|
-
expect(parsed_object[:body]).to eq([{
|
205
|
-
open_close: "timeline_event",
|
206
|
-
options: [
|
207
|
-
{ key: "date", value: "March 2013" },
|
208
|
-
{ key: "title", value: "a title" },
|
209
|
-
{ key: "link", value: "http://blah.com" }
|
210
|
-
]
|
211
|
-
}])
|
212
|
-
end
|
213
|
-
|
214
|
-
end
|
215
|
-
|
216
|
-
context "timeline_info" do
|
217
|
-
|
218
|
-
let(:parsed_object) { parser.parse(timeline_info) }
|
219
|
-
|
220
|
-
it "created the expected object" do
|
221
|
-
expect(parsed_object[:body]).to eq([{
|
222
|
-
open_close: "timeline_info",
|
223
|
-
options: [
|
224
|
-
{ key: "date", value: "Feb 2013" },
|
225
|
-
{ key: "title", value: "Something amazing" }
|
226
|
-
]
|
227
|
-
}])
|
228
|
-
end
|
229
|
-
|
230
|
-
end
|
231
|
-
|
232
|
-
context "timeline_person" do
|
233
|
-
|
234
|
-
let(:parsed_object) { parser.parse(timeline_person) }
|
235
|
-
|
236
|
-
it "created the expected object" do
|
237
|
-
expect(parsed_object[:body]).to eq([{
|
238
|
-
open: "timeline_person",
|
239
|
-
options: [
|
240
|
-
{ key: "date", value: "Jan 2012" },
|
241
|
-
{ key: "title", value: "A real title" },
|
242
|
-
{ key: "image", value: "/images/person.jpg" },
|
243
|
-
{ key: "name", value: "Sam Smith" },
|
244
|
-
{ key: "position", value: "Presedent" },
|
245
|
-
{ key: "link", value: "http://blah.com" }
|
246
|
-
],
|
247
|
-
inner: [{ text: "A bit of body copy\nwith a newline\n" }],
|
248
|
-
close: "timeline_person"
|
249
|
-
}])
|
250
|
-
end
|
251
|
-
|
252
|
-
end
|
253
|
-
|
254
|
-
context "complex_snippet" do
|
255
|
-
|
256
|
-
let(:parsed_object) { parser.parse(complex_snippet) }
|
257
|
-
|
258
|
-
it "created the expected object" do
|
259
|
-
expect(parsed_object[:body]).to eq([{
|
260
|
-
text: "<h3>A page title</h3>\n<p>Some text</p>\n"},
|
261
|
-
{
|
262
|
-
open: "collapsible_list",
|
263
|
-
options: [],
|
264
|
-
inner: [{
|
265
|
-
open: "item",
|
266
|
-
options: [{ key: "title", value: "Example title 1" }],
|
267
|
-
inner: [{
|
268
|
-
open: "quote",
|
269
|
-
options: [
|
270
|
-
{ key: "author", value: "Jamie Dyer" },
|
271
|
-
{ key: "title", value: "King of England" }
|
272
|
-
],
|
273
|
-
inner: [{ text: "A quote" }],
|
274
|
-
close: "quote"
|
275
|
-
},
|
276
|
-
{ text: "I'm inbetween 2 quotes!\n " },
|
277
|
-
{
|
278
|
-
open: "quote",
|
279
|
-
options: [
|
280
|
-
{ key: "author", value: "Forrest Gump" },
|
281
|
-
{ key: "title", value: "Idiot" }
|
282
|
-
],
|
283
|
-
inner: [{text: "Life is like..."}],
|
284
|
-
close: "quote"
|
285
|
-
}],
|
286
|
-
close: "item"
|
287
|
-
},
|
288
|
-
{
|
289
|
-
open: "item",
|
290
|
-
options: [{ key: "title", value: "Example title 2" }],
|
291
|
-
inner: [{ text: "Example content 2" }],
|
292
|
-
close: "item"
|
293
|
-
},
|
294
|
-
{
|
295
|
-
open: "item",
|
296
|
-
options: [{ key: "title", value: "Example title 3" }],
|
297
|
-
inner: [{ text: "Example content 3" }],
|
298
|
-
close: "item"
|
299
|
-
}],
|
300
|
-
close: "collapsible_list"
|
301
|
-
},
|
302
|
-
{ text: "\n<p>Some more text</p>\n" }
|
303
|
-
])
|
304
|
-
end
|
305
|
-
end
|
306
|
-
end
|
307
|
-
end
|