govspeak 0.8.12 → 0.8.13
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.
- data/README.md +11 -11
- data/lib/govspeak.rb +7 -7
- data/lib/govspeak/version.rb +1 -1
- data/test/govspeak_test.rb +27 -27
- data/test/govspeak_test_helper.rb +9 -9
- data/test/test_helper.rb +2 -2
- metadata +5 -5
data/README.md
CHANGED
@@ -20,7 +20,7 @@ then create a new document
|
|
20
20
|
|
21
21
|
# Extensions
|
22
22
|
|
23
|
-
In addition to the [standard Markdown syntax](http://daringfireball.net/projects/markdown/syntax "Markdown syntax"), we have added our own extensions.
|
23
|
+
In addition to the [standard Markdown syntax](http://daringfireball.net/projects/markdown/syntax "Markdown syntax"), we have added our own extensions.
|
24
24
|
|
25
25
|
## Callouts
|
26
26
|
|
@@ -30,8 +30,8 @@ In addition to the [standard Markdown syntax](http://daringfireball.net/projects
|
|
30
30
|
|
31
31
|
creates a callout with an info (i) icon.
|
32
32
|
|
33
|
-
<div class="application-notice info-notice">
|
34
|
-
<p>This is an information callout</p>
|
33
|
+
<div class="application-notice info-notice">
|
34
|
+
<p>This is an information callout</p>
|
35
35
|
</div>
|
36
36
|
|
37
37
|
### Warning callouts
|
@@ -40,8 +40,8 @@ creates a callout with an info (i) icon.
|
|
40
40
|
|
41
41
|
creates a callout with a warning or alert (!) icon
|
42
42
|
|
43
|
-
<div class="application-notice help-notice">
|
44
|
-
<p>This is a warning callout</p>
|
43
|
+
<div class="application-notice help-notice">
|
44
|
+
<p>This is a warning callout</p>
|
45
45
|
</div>
|
46
46
|
|
47
47
|
### Example callout
|
@@ -51,7 +51,7 @@ creates a callout with a warning or alert (!) icon
|
|
51
51
|
$E
|
52
52
|
|
53
53
|
creates an example box
|
54
|
-
|
54
|
+
|
55
55
|
<div class="example">
|
56
56
|
<p><strong>Example:</strong> Open the pod bay doors</p>
|
57
57
|
</div>
|
@@ -66,7 +66,7 @@ highlights the enclosed text in yellow
|
|
66
66
|
|
67
67
|
<h3 class="advisory">
|
68
68
|
<span>This is a very important message or warning</span>
|
69
|
-
</h3>
|
69
|
+
</h3>
|
70
70
|
|
71
71
|
### Answer
|
72
72
|
|
@@ -85,8 +85,8 @@ creates a large pink highlight box with optional preamble text and giant text de
|
|
85
85
|
### Contact
|
86
86
|
|
87
87
|
$C
|
88
|
-
**Student Finance England**
|
89
|
-
**Telephone:** 0845 300 50 90
|
88
|
+
**Student Finance England**
|
89
|
+
**Telephone:** 0845 300 50 90
|
90
90
|
**Minicom:** 0845 604 44 34
|
91
91
|
$C
|
92
92
|
|
@@ -108,8 +108,8 @@ creates an address box
|
|
108
108
|
|
109
109
|
<div class="address vcard"><div class="adr org fn"><p>
|
110
110
|
Hercules House
|
111
|
-
<br>Hercules Road
|
112
|
-
<br>London SE1 7DU
|
111
|
+
<br>Hercules Road
|
112
|
+
<br>London SE1 7DU
|
113
113
|
<br></p></div></div>
|
114
114
|
|
115
115
|
## Downloads
|
data/lib/govspeak.rb
CHANGED
@@ -9,7 +9,7 @@ module Govspeak
|
|
9
9
|
@@extensions = []
|
10
10
|
|
11
11
|
attr_accessor :images
|
12
|
-
|
12
|
+
|
13
13
|
def self.to_html(source, options = {})
|
14
14
|
new(source, options).to_html
|
15
15
|
end
|
@@ -25,7 +25,7 @@ module Govspeak
|
|
25
25
|
@kramdown_doc ||= Kramdown::Document.new(preprocess(@source), @options)
|
26
26
|
end
|
27
27
|
private :kramdown_doc
|
28
|
-
|
28
|
+
|
29
29
|
def to_html
|
30
30
|
kramdown_doc.to_html
|
31
31
|
end
|
@@ -46,7 +46,7 @@ module Govspeak
|
|
46
46
|
end
|
47
47
|
source
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
def encode(text)
|
51
51
|
HTMLEntities.new.encode(text)
|
52
52
|
end
|
@@ -72,8 +72,8 @@ module Govspeak
|
|
72
72
|
content = parser ? parser.new("#{body.strip}\n").to_html : body.strip
|
73
73
|
%{<div class="#{class_name}">\n#{content}</div>\n}
|
74
74
|
}
|
75
|
-
end
|
76
|
-
|
75
|
+
end
|
76
|
+
|
77
77
|
def insert_strong_inside_p(body, parser=Kramdown::Document)
|
78
78
|
parser.new(body.strip).to_html.sub(/^<p>(.*)<\/p>$/,"<p><strong>\\1</strong></p>")
|
79
79
|
end
|
@@ -107,7 +107,7 @@ module Govspeak
|
|
107
107
|
extension('map_link', surrounded_by("((", "))")) { |body|
|
108
108
|
%{<div class="map"><iframe width="200" height="200" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="#{body.strip}&output=embed"></iframe><br /><small><a href="#{body.strip}">View Larger Map</a></small></div>}
|
109
109
|
}
|
110
|
-
|
110
|
+
|
111
111
|
extension('attached-image', /^!!([0-9]+)/) do |image_number|
|
112
112
|
image = images[image_number.to_i - 1]
|
113
113
|
if image
|
@@ -117,7 +117,7 @@ module Govspeak
|
|
117
117
|
""
|
118
118
|
end
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
def render_image(url, alt_text, caption = nil)
|
122
122
|
lines = []
|
123
123
|
lines << '<figure class="image embedded">'
|
data/lib/govspeak/version.rb
CHANGED
data/test/govspeak_test.rb
CHANGED
@@ -11,7 +11,7 @@ require 'govspeak_test_helper'
|
|
11
11
|
|
12
12
|
class GovspeakTest < Test::Unit::TestCase
|
13
13
|
include GovspeakTestHelper
|
14
|
-
|
14
|
+
|
15
15
|
test "simple smoke-test" do
|
16
16
|
rendered = Govspeak::Document.new("*this is markdown*").to_html
|
17
17
|
assert_equal "<p><em>this is markdown</em></p>\n", rendered
|
@@ -31,7 +31,7 @@ class GovspeakTest < Test::Unit::TestCase
|
|
31
31
|
rendered = Govspeak::Document.new("this \n{::highlight-answer}Lead in to *BIG TEXT*\n{:/highlight-answer}").to_html
|
32
32
|
assert_equal %Q{<p>this </p>\n\n<div class="highlight-answer">\n<p>Lead in to <em>BIG TEXT</em></p>\n</div>\n}, rendered
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
test "extracts headers with text, level and generated id" do
|
36
36
|
document = Govspeak::Document.new %{
|
37
37
|
# Big title
|
@@ -94,7 +94,7 @@ Teston
|
|
94
94
|
</div>}
|
95
95
|
assert_text_output "The following is very informational I am very informational"
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
test_given_govspeak "^ I am very informational" do
|
99
99
|
assert_html_output %{
|
100
100
|
<div class="application-notice info-notice">
|
@@ -102,14 +102,14 @@ Teston
|
|
102
102
|
</div>}
|
103
103
|
assert_text_output "I am very informational"
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
test_given_govspeak "@ I am very important @" do
|
107
107
|
assert_html_output %{
|
108
108
|
<div class="advisory"><p><strong>I am very important</strong></p>
|
109
109
|
</div>}
|
110
110
|
assert_text_output "I am very important"
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
test_given_govspeak "
|
114
114
|
The following is very important
|
115
115
|
@ I am very important @
|
@@ -121,7 +121,7 @@ Teston
|
|
121
121
|
</div>}
|
122
122
|
assert_text_output "The following is very important I am very important"
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
test_given_govspeak "% I am very helpful %" do
|
126
126
|
assert_html_output %{
|
127
127
|
<div class="application-notice help-notice">
|
@@ -129,7 +129,7 @@ Teston
|
|
129
129
|
</div>}
|
130
130
|
assert_text_output "I am very helpful"
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
test_given_govspeak "The following is very helpful\n% I am very helpful %" do
|
134
134
|
assert_html_output %{
|
135
135
|
<p>The following is very helpful</p>
|
@@ -139,7 +139,7 @@ Teston
|
|
139
139
|
</div>}
|
140
140
|
assert_text_output "The following is very helpful I am very helpful"
|
141
141
|
end
|
142
|
-
|
142
|
+
|
143
143
|
test_given_govspeak "## Hello ##\n\n% I am very helpful %\r\n### Young Workers ###\n\n" do
|
144
144
|
assert_html_output %{
|
145
145
|
<h2 id="hello">Hello</h2>
|
@@ -151,7 +151,7 @@ Teston
|
|
151
151
|
<h3 id="young-workers">Young Workers</h3>}
|
152
152
|
assert_text_output "Hello I am very helpful Young Workers"
|
153
153
|
end
|
154
|
-
|
154
|
+
|
155
155
|
test_given_govspeak "% I am very helpful" do
|
156
156
|
assert_html_output %{
|
157
157
|
<div class="application-notice help-notice">
|
@@ -159,17 +159,17 @@ Teston
|
|
159
159
|
</div>}
|
160
160
|
assert_text_output "I am very helpful"
|
161
161
|
end
|
162
|
-
|
162
|
+
|
163
163
|
test_given_govspeak "This is a [link](http://www.google.com) isn't it?" do
|
164
164
|
assert_html_output '<p>This is a <a href="http://www.google.com">link</a> isn’t it?</p>'
|
165
165
|
assert_text_output "This is a link isn’t it?"
|
166
166
|
end
|
167
|
-
|
167
|
+
|
168
168
|
test_given_govspeak "This is a [link with an at sign in it](http://www.google.com/@dg/@this) isn't it?" do
|
169
169
|
assert_html_output '<p>This is a <a href="http://www.google.com/@dg/@this">link with an at sign in it</a> isn’t it?</p>'
|
170
170
|
assert_text_output "This is a link with an at sign in it isn’t it?"
|
171
171
|
end
|
172
|
-
|
172
|
+
|
173
173
|
test_given_govspeak "
|
174
174
|
HTML
|
175
175
|
|
@@ -177,12 +177,12 @@ Teston
|
|
177
177
|
assert_html_output %{<p><abbr title="Hyper Text Markup Language">HTML</abbr></p>}
|
178
178
|
assert_text_output "HTML"
|
179
179
|
end
|
180
|
-
|
180
|
+
|
181
181
|
test_given_govspeak "x[a link](http://rubyforge.org)x" do
|
182
182
|
assert_html_output '<p><a href="http://rubyforge.org" rel="external">a link</a></p>'
|
183
183
|
assert_text_output "a link"
|
184
184
|
end
|
185
|
-
|
185
|
+
|
186
186
|
# Regression test - the surrounded_by helper doesn't require the closing x
|
187
187
|
# so 'xaa' was getting picked up by the external link helper above
|
188
188
|
# TODO: review whether we should require closing symbols for these extensions
|
@@ -202,7 +202,7 @@ Teston
|
|
202
202
|
</div>}
|
203
203
|
assert_text_output "rainbow"
|
204
204
|
end
|
205
|
-
|
205
|
+
|
206
206
|
test_given_govspeak "$C help, send cake $C" do
|
207
207
|
assert_html_output %{
|
208
208
|
<div class="contact">
|
@@ -210,7 +210,7 @@ Teston
|
|
210
210
|
</div>}
|
211
211
|
assert_text_output "help, send cake"
|
212
212
|
end
|
213
|
-
|
213
|
+
|
214
214
|
test_given_govspeak "
|
215
215
|
$A
|
216
216
|
street
|
@@ -222,7 +222,7 @@ Teston
|
|
222
222
|
</p></div></div>}
|
223
223
|
assert_text_output "street road"
|
224
224
|
end
|
225
|
-
|
225
|
+
|
226
226
|
test_given_govspeak "
|
227
227
|
$P
|
228
228
|
$I
|
@@ -232,7 +232,7 @@ Teston
|
|
232
232
|
assert_html_output %{<div class="place">\n<div class="information">\n<p>help</p>\n</div>\n</div>}
|
233
233
|
assert_text_output "help"
|
234
234
|
end
|
235
|
-
|
235
|
+
|
236
236
|
test_given_govspeak "
|
237
237
|
$D
|
238
238
|
can you tell me how to get to...
|
@@ -243,7 +243,7 @@ Teston
|
|
243
243
|
</div>}
|
244
244
|
assert_text_output "can you tell me how to get to…"
|
245
245
|
end
|
246
|
-
|
246
|
+
|
247
247
|
test_given_govspeak "
|
248
248
|
1. rod
|
249
249
|
2. jane
|
@@ -251,14 +251,14 @@ Teston
|
|
251
251
|
assert_html_output "<ol>\n <li>rod</li>\n <li>jane</li>\n <li>freddy</li>\n</ol>"
|
252
252
|
assert_text_output "rod jane freddy"
|
253
253
|
end
|
254
|
-
|
254
|
+
|
255
255
|
test_given_govspeak "
|
256
256
|
((http://maps.google.co.uk/maps?q=Winkfield+Rd,+Windsor,+Berkshire+SL4+4AY&hl=en&sll=53.800651,-4.064941&sspn=17.759517,42.055664&vpsrc=0&z=14))
|
257
257
|
" do
|
258
258
|
assert_html_output %{<div class="map"><iframe width="200" height="200" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?q=Winkfield+Rd,+Windsor,+Berkshire+SL4+4AY&hl=en&sll=53.800651,-4.064941&sspn=17.759517,42.055664&vpsrc=0&z=14&output=embed"></iframe><br /><small><a href="http://maps.google.co.uk/maps?q=Winkfield+Rd,+Windsor,+Berkshire+SL4+4AY&hl=en&sll=53.800651,-4.064941&sspn=17.759517,42.055664&vpsrc=0&z=14">View Larger Map</a></small></div>}
|
259
259
|
assert_text_output "View Larger Map"
|
260
260
|
end
|
261
|
-
|
261
|
+
|
262
262
|
test_given_govspeak "
|
263
263
|
s1. zippy
|
264
264
|
s2. bungle
|
@@ -275,7 +275,7 @@ Teston
|
|
275
275
|
</ol>}
|
276
276
|
assert_text_output "zippy bungle george"
|
277
277
|
end
|
278
|
-
|
278
|
+
|
279
279
|
test_given_govspeak ":scotland: I am very devolved\n and very scottish \n:scotland:" do
|
280
280
|
assert_html_output '
|
281
281
|
<div class="devolved-content scotland">
|
@@ -285,15 +285,15 @@ Teston
|
|
285
285
|
</div>
|
286
286
|
</div>
|
287
287
|
'
|
288
|
-
end
|
288
|
+
end
|
289
289
|
|
290
290
|
test_given_govspeak "@ Message with [a link](http://foo.bar/)@" do
|
291
291
|
assert_html_output %{
|
292
292
|
<div class="advisory"><p><strong>Message with <a href="http://foo.bar/">a link</a></strong></p>
|
293
293
|
</div>
|
294
|
-
}
|
294
|
+
}
|
295
295
|
end
|
296
|
-
|
296
|
+
|
297
297
|
test "can reference attached images using !!n" do
|
298
298
|
images = [OpenStruct.new(alt_text: 'my alt', url: "http://example.com/image.jpg")]
|
299
299
|
given_govspeak "!!1", images do
|
@@ -319,7 +319,7 @@ Teston
|
|
319
319
|
test "silently ignores an image attachment if the referenced image is missing" do
|
320
320
|
doc = Govspeak::Document.new("!!1")
|
321
321
|
doc.images = []
|
322
|
-
|
322
|
+
|
323
323
|
assert_equal %Q{\n}, doc.to_html
|
324
324
|
end
|
325
325
|
|
@@ -334,7 +334,7 @@ Teston
|
|
334
334
|
}
|
335
335
|
end
|
336
336
|
end
|
337
|
-
|
337
|
+
|
338
338
|
test "ignores a blank caption" do
|
339
339
|
images = [OpenStruct.new(alt_text: "my alt", url: "http://example.com/image.jpg", caption: ' ')]
|
340
340
|
given_govspeak "!!1", images do
|
@@ -3,32 +3,32 @@ module GovspeakTestHelper
|
|
3
3
|
def self.included(base)
|
4
4
|
base.extend(ClassMethods)
|
5
5
|
end
|
6
|
-
|
6
|
+
|
7
7
|
class GovspeakAsserter
|
8
8
|
def initialize(testcase, govspeak, images = [])
|
9
9
|
@testcase = testcase
|
10
10
|
@govspeak = remove_indentation(govspeak)
|
11
11
|
@images = images
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def document
|
15
15
|
Govspeak::Document.new(@govspeak).tap do |doc|
|
16
16
|
doc.images = @images
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def assert_text_output(raw_expected)
|
21
21
|
expected = remove_indentation(raw_expected)
|
22
22
|
actual = document.to_text
|
23
23
|
@testcase.assert expected == actual, describe_error(@govspeak, expected, actual)
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def assert_html_output(raw_expected)
|
27
27
|
expected = remove_indentation(raw_expected)
|
28
28
|
actual = document.to_html.strip
|
29
29
|
@testcase.assert expected.strip == actual, describe_error(@govspeak, expected.strip, actual)
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def remove_indentation(raw)
|
33
33
|
lines = raw.split("\n")
|
34
34
|
if lines.first.empty?
|
@@ -45,11 +45,11 @@ module GovspeakTestHelper
|
|
45
45
|
raw
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
def describe_error(govspeak, expected, actual)
|
50
50
|
"Expected:\n#{govspeak}\n\nto produce:\n#{show_linenumbers(expected)}\n\nbut got:\n#{show_linenumbers(actual)}\n"
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def show_linenumbers(text)
|
54
54
|
lines = text.split "\n"
|
55
55
|
digits = Math.log10(lines.size + 2).ceil
|
@@ -63,7 +63,7 @@ module GovspeakTestHelper
|
|
63
63
|
asserter = GovspeakAsserter.new(self, govspeak, images)
|
64
64
|
asserter.instance_eval(&block)
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
module ClassMethods
|
68
68
|
def test_given_govspeak(govspeak, &block)
|
69
69
|
test "Given #{govspeak}" do
|
@@ -71,4 +71,4 @@ module GovspeakTestHelper
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
end
|
74
|
-
end
|
74
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -11,10 +11,10 @@ class Test::Unit::TestCase
|
|
11
11
|
clean_name = name.gsub(/\s+/,'_')
|
12
12
|
method = "test_#{clean_name.gsub(/\s+/,'_')}".to_sym
|
13
13
|
already_defined = instance_method(method) rescue false
|
14
|
-
raise "#{method} exists" if already_defined
|
14
|
+
raise "#{method} exists" if already_defined
|
15
15
|
define_method(method, &block)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
require 'govspeak'
|
20
|
+
require 'govspeak'
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: govspeak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.8.
|
5
|
+
version: 0.8.13
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ben Griffiths
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2012-05-
|
14
|
+
date: 2012-05-29 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: kramdown
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: *id004
|
60
60
|
description: |-
|
61
|
-
A set of extensions to markdown layered on top of the kramdown
|
61
|
+
A set of extensions to markdown layered on top of the kramdown
|
62
62
|
library for use in the UK Government Single Domain project
|
63
63
|
email:
|
64
64
|
- ben@alphagov.co.uk
|
@@ -92,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
92
|
requirements:
|
93
93
|
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
hash:
|
95
|
+
hash: -2168654671078793304
|
96
96
|
segments:
|
97
97
|
- 0
|
98
98
|
version: "0"
|
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
102
102
|
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
hash:
|
104
|
+
hash: -2168654671078793304
|
105
105
|
segments:
|
106
106
|
- 0
|
107
107
|
version: "0"
|