md_to_bbcode 1.1.0 → 1.1.1
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/lib/md_to_bbcode.rb +42 -34
- data/lib/md_to_bbcode/version.rb +1 -1
- data/spec/api_spec.rb +44 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 882bfada1866cb31be09d565ddbdf8b7a4a76570e66c2f0618951ad7815888f7
|
4
|
+
data.tar.gz: 70b7c9fb216b71575e56521104e3ccc23cbd807c0cfff63ac2791d3c0dc0d957
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2aca2c89a8854d459a603d114dadb2fdb9afb3b002a5cb90b1744f352facee7d5a3784276473d09f6eee33753df59210383f66353f4b452162db1a11fd1e413c
|
7
|
+
data.tar.gz: 40d70ca3254263bc8a0deb320b1845d1aa8b074a908de38465ae7ee1db28a68accd141d84a5e425c6e5da62f3cb7a5740576a1d160ba48b9f74731f6a1206161
|
data/lib/md_to_bbcode.rb
CHANGED
@@ -30,40 +30,50 @@ module MdToBbcode
|
|
30
30
|
# Don't change anything at the formatting
|
31
31
|
bbcode_lines << "#{line}\n"
|
32
32
|
else
|
33
|
-
#
|
34
|
-
line.
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
if in_bold_text
|
39
|
-
line.gsub!(/\*\*(.*?)\*\*/, '[/b]\1[b]')
|
40
|
-
else
|
41
|
-
line.gsub!(/\*\*(.*?)\*\*/, '[b]\1[/b]')
|
42
|
-
end
|
43
|
-
if line =~ /.*\*\*.*/
|
44
|
-
if in_bold_text
|
45
|
-
line.gsub!(/(.*)\*\*(.*)/, '\1[/b]\2')
|
46
|
-
in_bold_text = false
|
47
|
-
else
|
48
|
-
line.gsub!(/(.*)\*\*(.*)/, '\1[b]\2')
|
49
|
-
in_bold_text = true
|
50
|
-
end
|
51
|
-
end
|
52
|
-
# Italic
|
53
|
-
if in_italic_text
|
54
|
-
line.gsub!(/\*(\S.*?)\*/, '[/i]\1[i]')
|
55
|
-
else
|
56
|
-
line.gsub!(/\*(\S.*?)\*/, '[i]\1[/i]')
|
57
|
-
end
|
58
|
-
if line =~ /.*\*.*/
|
59
|
-
if in_italic_text
|
60
|
-
line.gsub!(/(.*\S)\*(.*)/, '\1[/i]\2')
|
61
|
-
in_italic_text = false
|
33
|
+
# Handle in-line code markers first
|
34
|
+
line = line.split(/(`.+?`)/).map do |field|
|
35
|
+
if field[0] == '`'
|
36
|
+
# Don't change anything at the formatting
|
37
|
+
"#{in_bold_text ? '' : '[b]'}[font=Courier New]#{field[1..-2]}[/font]#{in_bold_text ? '' : '[/b]'}"
|
62
38
|
else
|
63
|
-
|
64
|
-
|
39
|
+
# Apply the formatting except the formatting used for whole lines (headers, bullets, lists...)
|
40
|
+
# Images (do this gsub before links and any single tags, like bold, headings...)
|
41
|
+
field.gsub!(/!\[(.*?)\]\((.*?)\)/, '[img]\2[/img]')
|
42
|
+
# Links
|
43
|
+
field.gsub!(/\[(.*?)\]\((.*?)\)/, '[url=\2]\1[/url]')
|
44
|
+
# Bold (do this before italic)
|
45
|
+
if in_bold_text
|
46
|
+
field.gsub!(/\*\*(.*?)\*\*/, '[/b]\1[b]')
|
47
|
+
else
|
48
|
+
field.gsub!(/\*\*(.*?)\*\*/, '[b]\1[/b]')
|
49
|
+
end
|
50
|
+
if field =~ /.*\*\*.*/
|
51
|
+
if in_bold_text
|
52
|
+
field.gsub!(/(.*)\*\*(.*)/, '\1[/b]\2')
|
53
|
+
in_bold_text = false
|
54
|
+
else
|
55
|
+
field.gsub!(/(.*)\*\*(.*)/, '\1[b]\2')
|
56
|
+
in_bold_text = true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
# Italic
|
60
|
+
if in_italic_text
|
61
|
+
field.gsub!(/\*(\S.*?)\*/, '[/i]\1[i]')
|
62
|
+
else
|
63
|
+
field.gsub!(/\*(\S.*?)\*/, '[i]\1[/i]')
|
64
|
+
end
|
65
|
+
if field =~ /.*\*.*/
|
66
|
+
if in_italic_text
|
67
|
+
field.gsub!(/(.*\S)\*(.*)/, '\1[/i]\2')
|
68
|
+
in_italic_text = false
|
69
|
+
else
|
70
|
+
field.gsub!(/(.*)\*(\S.*)/, '\1[i]\2')
|
71
|
+
in_italic_text = true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
field
|
65
75
|
end
|
66
|
-
end
|
76
|
+
end.join
|
67
77
|
# Heading 1
|
68
78
|
line.gsub!(/^# (.*?)$/, '[size=6][b]\1[/b][/size]')
|
69
79
|
# Heading 2
|
@@ -72,8 +82,6 @@ module MdToBbcode
|
|
72
82
|
line.gsub!(/^### (.*?)$/, '[size=5][b]\1[/b][/size]')
|
73
83
|
# Heading 4
|
74
84
|
line.gsub!(/^#### (.*?)$/, '[size=5]\1[/size]')
|
75
|
-
# In-line code
|
76
|
-
line.gsub!(/`(.*?)`/, '[b][font=Courier New]\1[/font][/b]')
|
77
85
|
# Bullets
|
78
86
|
if line =~ /^\* (.+)$/
|
79
87
|
# Single bullet line
|
data/lib/md_to_bbcode/version.rb
CHANGED
data/spec/api_spec.rb
CHANGED
@@ -36,6 +36,48 @@ describe MdToBbcode do
|
|
36
36
|
expect('`in-line code`'.md_to_bbcode).to eq '[b][font=Courier New]in-line code[/font][/b]'
|
37
37
|
end
|
38
38
|
|
39
|
+
it 'converts inline code in bold text' do
|
40
|
+
expect('**Bold `in-line code` to display**'.md_to_bbcode).to eq '[b]Bold [font=Courier New]in-line code[/font] to display[/b]'
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'converts inline code in italic text' do
|
44
|
+
expect('*Italic `in-line code` to display*'.md_to_bbcode).to eq '[i]Italic [b][font=Courier New]in-line code[/font][/b] to display[/i]'
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'converts inline code in a multi-line bold text' do
|
48
|
+
md = <<~EOS
|
49
|
+
**Bold
|
50
|
+
`in-line code`
|
51
|
+
on
|
52
|
+
multi-line**
|
53
|
+
EOS
|
54
|
+
expect(md.md_to_bbcode).to eq(<<~EOS)
|
55
|
+
[b]Bold
|
56
|
+
[font=Courier New]in-line code[/font]
|
57
|
+
on
|
58
|
+
multi-line[/b]
|
59
|
+
EOS
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'converts inline code in a multi-line italic text' do
|
63
|
+
md = <<~EOS
|
64
|
+
*Italic
|
65
|
+
`in-line code`
|
66
|
+
on
|
67
|
+
multi-line*
|
68
|
+
EOS
|
69
|
+
expect(md.md_to_bbcode).to eq(<<~EOS)
|
70
|
+
[i]Italic
|
71
|
+
[b][font=Courier New]in-line code[/font][/b]
|
72
|
+
on
|
73
|
+
multi-line[/i]
|
74
|
+
EOS
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'does not convert other formatting in inline code' do
|
78
|
+
expect('`# in-line *code* that is **not formatted**`'.md_to_bbcode).to eq '[b][font=Courier New]# in-line *code* that is **not formatted**[/font][/b]'
|
79
|
+
end
|
80
|
+
|
39
81
|
it 'converts images' do
|
40
82
|
expect(''.md_to_bbcode).to eq '[img]https://my.domain.com/image.jpg[/img]'
|
41
83
|
end
|
@@ -278,6 +320,7 @@ describe MdToBbcode do
|
|
278
320
|
Here is a link to [Google](https://www.google.com/) in a middle of a line.
|
279
321
|
|
280
322
|
An inline code block `this is code` to be inserted.
|
323
|
+
And **another one in bold: `this is *code* that **is preformatted**` but written** in bold.
|
281
324
|
|
282
325
|
### Heading h3
|
283
326
|
|
@@ -350,6 +393,7 @@ describe MdToBbcode do
|
|
350
393
|
Here is a link to [url=https://www.google.com/]Google[/url] in a middle of a line.
|
351
394
|
|
352
395
|
An inline code block [b][font=Courier New]this is code[/font][/b] to be inserted.
|
396
|
+
And [b]another one in bold: [font=Courier New]this is *code* that **is preformatted**[/font] but written[/b] in bold.
|
353
397
|
|
354
398
|
[size=5][b]Heading h3[/b][/size]
|
355
399
|
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: md_to_bbcode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Muriel Salvan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3.10'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '3.10'
|
27
27
|
description: Provides an API and an executable to convert Markdown text to BBCode
|
28
28
|
format
|
29
29
|
email:
|