md_to_bbcode 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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