little_markdown 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d4eff9db8eb79878c68d73cc18f03fb4eb3f1c24827897b690feb3a3274928b4
4
+ data.tar.gz: 2f7f0edefaf545e8b6654817965381d9a1a06532aaad81e8514705c998895ded
5
+ SHA512:
6
+ metadata.gz: 529dfab4fffb4d8110c5c8e87a374a5f1f242309edfd58f5eedbc4c7e0c0914069eeb8410b04358f86fffe41b6c51e9a5431b907616f6df9d2d5ff590fbb17e6
7
+ data.tar.gz: 9c6d629c7414029fb798833a46e210a7984811c2204c7249df5b726f0b148015c2f1600f1f1b91283020f4b23f6c536ac225f920d43e3d5de8814821f8d355f7
checksums.yaml.gz.sig ADDED
Binary file
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: little_markdown.rb
4
+
5
+ require 'rexle'
6
+
7
+ class LittleMarkdown
8
+
9
+ attr_reader :to_html
10
+
11
+ def initialize(raws, debug: false)
12
+
13
+ @debug = debug
14
+
15
+ s = raws.strip
16
+ s2 = ol_parse(s)
17
+ s3 = ul_parse(s2)
18
+
19
+ raw_html = s3.lines.map do |line|
20
+ linex = replace(line) {|x| h1_parse(x)}
21
+ linex3 = replace(linex) {|x| p_parse(x)}
22
+
23
+ end.join
24
+
25
+ doc = Rexle.new("<body>%s</body>" % raw_html)
26
+ xml = doc.xml(pretty: true, declaration: 'none')
27
+ xml2 = replace_link(xml)
28
+ puts 'xml2: ' + xml2.inspect if @debug
29
+ @to_html = xml2.strip.lines[1..-2].map {|x| x[2..-1] }.join
30
+
31
+ end
32
+
33
+ private
34
+
35
+ def replace(s)
36
+
37
+ cur = s =~ />[^>]+$/
38
+ puts 'cur: ' + cur.inspect if @debug
39
+
40
+ s2 = cur ? (s[0..cur] + yield(s[cur+1..-1])) : yield(s)
41
+ puts 's2: ' + s2.inspect if @debug
42
+ s2
43
+
44
+ end
45
+
46
+ def h1_parse(s)
47
+ s.sub(/^# ([^\n]+)/,'<h1>\1</h1>')
48
+ end
49
+
50
+ def p_parse(s)
51
+ s.sub(/^([^\n]+)/,'<p>\1</p>')
52
+ end
53
+
54
+ def ol_parse(s)
55
+
56
+ lines = s.lines
57
+ prev_item = nil
58
+ slist = lines.map.with_index do |x, i|
59
+
60
+ if x[/^\d+\./] then
61
+ r = if (i == 0 or !prev_item) then
62
+ x.sub(/^\d+\. *(.*)/,'<ol><li>\1</li>')
63
+ else
64
+ x.sub(/^\d+\. *(.*)/,'<li>\1</li>')
65
+ end
66
+ prev_item = true
67
+ r
68
+ else
69
+ if prev_item then
70
+ prev_item = false
71
+ x + '</ol>'
72
+ else
73
+ x
74
+ end
75
+ end
76
+
77
+ end.join
78
+
79
+ slist += '</ol>' if prev_item
80
+ slist
81
+ end
82
+
83
+ def ul_parse(s)
84
+
85
+ lines = s.lines
86
+ prev_item = nil
87
+ slist = lines.map.with_index do |x, i|
88
+
89
+ if x[/^\* /] then
90
+ r = if (i == 0 or !prev_item) then
91
+ x.sub(/^\* *(.*)/,'<ul><li>\1</li>')
92
+ else
93
+ x.sub(/^\* *(.*)/,'<li>\1</li>')
94
+ end
95
+ prev_item = true
96
+ r
97
+ else
98
+ if prev_item then
99
+ prev_item = false
100
+ x + '</ul>'
101
+ else
102
+ x
103
+ end
104
+ end
105
+
106
+ end.join
107
+
108
+ slist += '</ul>' if prev_item
109
+ slist
110
+
111
+ end
112
+
113
+ def replace_link(s5)
114
+
115
+ if @debug then
116
+ puts 'inside replace_link'
117
+ puts 's5: ' + s5.inspect
118
+ end
119
+
120
+ s5.gsub(/\[[^\]]+\]\([^\)]+\)/m) do |x|
121
+
122
+ puts 'x: ' + x.inspect if @debug
123
+
124
+ found = x.match(/(?<=\[)([^\]]+)\]\(([^\)]+)/)
125
+ puts 'found: ' + found.inspect if @debug
126
+
127
+ if found then
128
+ title, href = found[1..-1]
129
+ "<a href='%s'>%s</a>" % [title, href]
130
+ else
131
+ x
132
+ end
133
+
134
+ end
135
+
136
+ end
137
+
138
+ end
139
+
140
+
data.tar.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ ��2�3ͺ�h�=�1�x�Ұi�`N��*���~�S��U��Sb �u-ɝ�Ӷ�M7RH|7�l�g�)
2
+ O}�v���G Z}�
3
+ ��?��Fiy�BS������^=u�sy"��#�h��t ����ִ����a�@�
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: little_markdown
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEljCCAv6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTIzMDUwMjA2MTUwMFoXDTI0MDUwMTA2MTUwMFowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
18
+ ggGBAMxisbPmxDrVw3JLh+0JbC0lLYlHNIZc0Ikbc2vr1juhneqZa83cZNh6akOp
19
+ sMyM82E+o8t/8FXVjBbsr+AcWF6/0FsR8YdySIXTVcbtDVVjhyZYzERc4pXtGc1m
20
+ ryhukGX4MdT6CmfDhm11eJxD2YZvkU9VkefCjr6B6YJ1oOclXT3Evp1DjJ4Of/8C
21
+ KcvurVwKiSGTI88VgUP55CJ5x1VI0lI4QCkumaGGwP99tgBafWBAZRmom/nPkvds
22
+ 7nkUp68rg7VRkoyT3G9SGoN6dqpP4ESXYzbvg01yyd01mXKXF6gy2DTg5cEI3D7l
23
+ NWbUpEy8EmKf6CJgS4rCHvneBVOr6Icfv0svC91lMdF050p9d0NTCwUafFvHsgu/
24
+ menLEHva8FSDmJWUaZAPK6w82cgI1PxKyLVAJUrNq55X+mCRT3necKaiaM145t2J
25
+ 0qupv4hLZJrz++KwlWDokvtRHx+QwHUK0VQpKfNfClZpqKs7SjFM76sMVU5vDYSW
26
+ VogxWwIDAQABo4GKMIGHMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
27
+ BBQU0iVDsusk0j1S+jBCrgvfLCbaLzAmBgNVHREEHzAdgRtnZW1tYXN0ZXJAamFt
28
+ ZXNyb2JlcnRzb24uZXUwJgYDVR0SBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
29
+ c29uLmV1MA0GCSqGSIb3DQEBCwUAA4IBgQBFi+DMOIYh0B0RVi2QHpOmW+3RSAk2
30
+ /1tkmDeOArjXpsTqwZOhZS/z1XJKRnxsWbTNVBkNjjSFx6yVEDQS/sYRdWZ+dOYY
31
+ 3ab0/eWKRznnMiPRThriOq555snXczZrPkstCorQyiz2l+mZT+iH+FqWzQ2IuWXA
32
+ IyNdHhwbrtrhRIlDlCVjRaEwdhPiTckiegvsezS1ADioas22AiWtWc5YHlZBHeWz
33
+ X4JTxAxJpeMupsthBrPxyheFevz6miWtpY1LfTWW9Pi0owuzHJr0OA2kOUrufrWP
34
+ 4TnRBSEot2d8FW2doF3X7Y5jR1/OlvOX6iod/XmqxnExzW91l4JCa4W722WeSfh1
35
+ xEHZZJeK9AJZIQ4P+FM0sZ4Btbgn8OphLyxnZfa6S3m1lArK2YUPILYlTzpT2/zg
36
+ WnSWgG73Vz5MRLGt7hkHbXuiioyoBR5Y9F70rfvUkaViGxc2BxSv7wdlif8jgMQt
37
+ BpyN4tcC5tg1KfgtGRJPCjmb8Ql4/ZMYZgM=
38
+ -----END CERTIFICATE-----
39
+ date: 2023-05-02 00:00:00.000000000 Z
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: rexle
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.6'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.6.0
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '1.6'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.6.0
61
+ description:
62
+ email: digital.robertson@gmail.com
63
+ executables: []
64
+ extensions: []
65
+ extra_rdoc_files: []
66
+ files:
67
+ - lib/little_markdown.rb
68
+ homepage: https://github.com/jrobertson/little_markdown
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubygems_version: 3.4.4
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: An experimental markdown parser for learning purposes.
91
+ test_files: []
metadata.gz.sig ADDED
Binary file