md_to_bbcode 1.0.1 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9295ed6f4cfbd7e098369213d11366d9cbe1768260059e77527cb7c12c138313
4
- data.tar.gz: fff8e9ebfff9bec8a269e2fc85ebd0751a109a874bc9f5d8479b415caa11ed84
3
+ metadata.gz: b852d6b172b3fb90659c9b2d73d0c439015e2f7eaae67bbe4b4dd054b3294d28
4
+ data.tar.gz: 2b1604824090ba1b3e2f9e3d8dc3ca33114ba3dd009ef93ac60f7b9bd21d54d7
5
5
  SHA512:
6
- metadata.gz: a5f0576b887ae5ef515a67f5997e89d220d5078c25a69a4227ac6e955027f9e58767b94715717b897844d6ef96b21415ada9a40d5827e0b29068d0543ce25a99
7
- data.tar.gz: b63c89b4c07d918719d24119f06a81b58104b5ff67e4d1cbd9387a19b2dd6027a32cd8a8c96b43411b0980c469ab3b122246a830e8f393bf091597855e07c68f
6
+ metadata.gz: d4551e53bace327117ba494f0f08ca6ce79713b703e94a5c055a8e78d1074e7087ac9d29b6ebc5717b9481a600e6f55101a5d165aa8cc5372907c4155a0a7a6e
7
+ data.tar.gz: c9d7804233ecdd7760026aeafaed92d19e0ff8200e2a892941827ce75ec892797dbcaa8bff7b2960be82c856d5dea04b6cf7b07682885bc1658caa847581df8c
@@ -13,6 +13,7 @@ module MdToBbcode
13
13
  in_a_list = false
14
14
  in_a_code_block = false
15
15
  in_bold_text = false
16
+ in_italic_text = false
16
17
  markdown.split("\n").each do |line|
17
18
  unindented_line = in_a_list && line =~ /^ (.*)$/ ? $1 : line
18
19
  if unindented_line =~ /^```(.*)$/
@@ -33,7 +34,7 @@ module MdToBbcode
33
34
  line.gsub!(/!\[(.*?)\]\((.*?)\)/, '[img]\2[/img]')
34
35
  # Links
35
36
  line.gsub!(/\[(.*?)\]\((.*?)\)/, '[url=\2]\1[/url]')
36
- # Bold
37
+ # Bold (do this before italic)
37
38
  if in_bold_text
38
39
  line.gsub!(/\*\*(.*?)\*\*/, '[/b]\1[b]')
39
40
  else
@@ -48,6 +49,21 @@ module MdToBbcode
48
49
  in_bold_text = true
49
50
  end
50
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
62
+ else
63
+ line.gsub!(/(.*)\*(\S.*)/, '\1[i]\2')
64
+ in_italic_text = true
65
+ end
66
+ end
51
67
  # Heading 1
52
68
  line.gsub!(/^# (.*?)$/, '[size=6][b]\1[/b][/size]')
53
69
  # Heading 2
@@ -58,6 +74,7 @@ module MdToBbcode
58
74
  line.gsub!(/^#### (.*?)$/, '[size=5]\1[/size]')
59
75
  # In-line code
60
76
  line.gsub!(/`(.*?)`/, '[b][font=Courier New]\1[/font][/b]')
77
+ # Bullets
61
78
  if line =~ /^\* (.+)$/
62
79
  # Single bullet line
63
80
  bbcode_lines << "[list]\n" unless in_a_list
@@ -1,5 +1,5 @@
1
1
  module MdToBbcode
2
2
 
3
- VERSION = '1.0.1'
3
+ VERSION = '1.1.0'
4
4
 
5
5
  end
@@ -20,6 +20,14 @@ describe MdToBbcode do
20
20
  expect('**Bold text**'.md_to_bbcode).to eq '[b]Bold text[/b]'
21
21
  end
22
22
 
23
+ it 'converts italic text' do
24
+ expect('*Italic text*'.md_to_bbcode).to eq '[i]Italic text[/i]'
25
+ end
26
+
27
+ it 'converts italic and bold mixed text' do
28
+ expect('*Italic and **bold** text* and then **bold and *italic* text**'.md_to_bbcode).to eq '[i]Italic and [b]bold[/b] text[/i] and then [b]bold and [i]italic[/i] text[/b]'
29
+ end
30
+
23
31
  it 'converts links' do
24
32
  expect('[Link text](https://my.domain.com/path)'.md_to_bbcode).to eq '[url=https://my.domain.com/path]Link text[/url]'
25
33
  end
@@ -34,37 +42,60 @@ describe MdToBbcode do
34
42
 
35
43
  it 'converts bold text on several lines' do
36
44
  md = <<~EOS
37
- **Bold
38
- text
39
- on
40
- multi-line**
45
+ **Bold
46
+ text
47
+ on
48
+ multi-line**
41
49
  EOS
42
50
  expect(md.md_to_bbcode).to eq(<<~EOS)
43
- [b]Bold
44
- text
45
- on
46
- multi-line[/b]
51
+ [b]Bold
52
+ text
53
+ on
54
+ multi-line[/b]
47
55
  EOS
48
56
  end
49
57
 
50
58
  it 'converts bold text on several lines mixed with single lines' do
51
59
  md = <<~EOS
52
- **Bold text** on **single and
53
- on
54
- multi-line** but **with** some **new
55
- text
56
- on** other **lines**
57
- all
58
- **mixed** up
60
+ **Bold text** on **single and
61
+ on
62
+ multi-line** but **with** some **new
63
+ text
64
+ on** other **lines**
65
+ all
66
+ **mixed** up
67
+ EOS
68
+ expect(md.md_to_bbcode).to eq(<<~EOS)
69
+ [b]Bold text[/b] on [b]single and
70
+ on
71
+ multi-line[/b] but [b]with[/b] some [b]new
72
+ text
73
+ on[/b] other [b]lines[/b]
74
+ all
75
+ [b]mixed[/b] up
76
+ EOS
77
+ end
78
+
79
+ it 'converts bold and italic texts on several lines mixed with single lines' do
80
+ md = <<~EOS
81
+ **Bold text** on **single and
82
+ *on italic
83
+ words* on
84
+ multi-line** but **with** some **new
85
+ text
86
+ on** other **lines**
87
+ all *italic **and bold**
88
+ **mixed*** up
59
89
  EOS
60
90
  expect(md.md_to_bbcode).to eq(<<~EOS)
61
- [b]Bold text[/b] on [b]single and
62
- on
63
- multi-line[/b] but [b]with[/b] some [b]new
64
- text
65
- on[/b] other [b]lines[/b]
66
- all
67
- [b]mixed[/b] up
91
+ [b]Bold text[/b] on [b]single and
92
+ [i]on italic
93
+ words[/i] on
94
+ multi-line[/b] but [b]with[/b] some [b]new
95
+ text
96
+ on[/b] other [b]lines[/b]
97
+ all [i]italic [b]and bold[/b]
98
+ [b]mixed[/b][/i] up
68
99
  EOS
69
100
  end
70
101
 
@@ -235,7 +266,7 @@ describe MdToBbcode do
235
266
  followed
236
267
  by** not bold on multi-lines.
237
268
 
238
- **Bold text including a [link to Google](https://www.google.com).**
269
+ **Bold text including an italic *[link to Google](https://www.google.com)*.**
239
270
 
240
271
  This is a bullet list:
241
272
  * Bullet item 1
@@ -270,7 +301,7 @@ describe MdToBbcode do
270
301
 
271
302
  Here is some Ruby:
272
303
  ```ruby
273
- puts 'Hello'
304
+ puts 'Hello' * 3 * 5
274
305
  # World
275
306
  puts `echo World`
276
307
  ```
@@ -305,7 +336,7 @@ describe MdToBbcode do
305
336
  followed
306
337
  by[/b] not bold on multi-lines.
307
338
 
308
- [b]Bold text including a [url=https://www.google.com]link to Google[/url].[/b]
339
+ [b]Bold text including an italic [i][url=https://www.google.com]link to Google[/url][/i].[/b]
309
340
 
310
341
  This is a bullet list:
311
342
  [list]
@@ -342,7 +373,7 @@ describe MdToBbcode do
342
373
  [/list]
343
374
 
344
375
  Here is some Ruby:
345
- [code]puts 'Hello'
376
+ [code]puts 'Hello' * 3 * 5
346
377
  # World
347
378
  puts `echo World`
348
379
  [/code]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: md_to_bbcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
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-11-29 00:00:00.000000000 Z
11
+ date: 2020-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec