html_tags 0.1.183

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.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +456 -0
  3. data/USAGE.md +17 -0
  4. data/doc/README.gen +256 -0
  5. data/html_tags.gemspec +48 -0
  6. data/images/logo_for_the_html_tags_project.png +0 -0
  7. data/lib/html_tags/array_registered_html_tags.rb +126 -0
  8. data/lib/html_tags/autoinclude.rb +2 -0
  9. data/lib/html_tags/autoinclude_base_module.rb +7 -0
  10. data/lib/html_tags/base/README.md +3 -0
  11. data/lib/html_tags/base/base.rb +11 -0
  12. data/lib/html_tags/base/base_module.rb +271 -0
  13. data/lib/html_tags/base/prototype.rb +19 -0
  14. data/lib/html_tags/checks.rb +58 -0
  15. data/lib/html_tags/closing_tag/closing_tag.rb +76 -0
  16. data/lib/html_tags/constants/array_strip_newlines.rb +14 -0
  17. data/lib/html_tags/constants/misc.rb +21 -0
  18. data/lib/html_tags/constants.rb +26 -0
  19. data/lib/html_tags/html_closing_tags.rb +36 -0
  20. data/lib/html_tags/html_comment.rb +29 -0
  21. data/lib/html_tags/html_tags.rb +118 -0
  22. data/lib/html_tags/html_tags_constants.rb +14 -0
  23. data/lib/html_tags/individual_tags/a.rb +646 -0
  24. data/lib/html_tags/individual_tags/abbr.rb +44 -0
  25. data/lib/html_tags/individual_tags/address.rb +50 -0
  26. data/lib/html_tags/individual_tags/area.rb +60 -0
  27. data/lib/html_tags/individual_tags/article.rb +48 -0
  28. data/lib/html_tags/individual_tags/aside.rb +80 -0
  29. data/lib/html_tags/individual_tags/audio.rb +54 -0
  30. data/lib/html_tags/individual_tags/b.rb +22 -0
  31. data/lib/html_tags/individual_tags/bdo.rb +50 -0
  32. data/lib/html_tags/individual_tags/blockquote.rb +19 -0
  33. data/lib/html_tags/individual_tags/body.rb +19 -0
  34. data/lib/html_tags/individual_tags/br.rb +28 -0
  35. data/lib/html_tags/individual_tags/button.rb +143 -0
  36. data/lib/html_tags/individual_tags/canvas.rb +19 -0
  37. data/lib/html_tags/individual_tags/caption.rb +107 -0
  38. data/lib/html_tags/individual_tags/cite.rb +78 -0
  39. data/lib/html_tags/individual_tags/code.rb +105 -0
  40. data/lib/html_tags/individual_tags/del.rb +112 -0
  41. data/lib/html_tags/individual_tags/details.rb +79 -0
  42. data/lib/html_tags/individual_tags/dialog.rb +108 -0
  43. data/lib/html_tags/individual_tags/div.rb +99 -0
  44. data/lib/html_tags/individual_tags/em.rb +99 -0
  45. data/lib/html_tags/individual_tags/fieldset.rb +88 -0
  46. data/lib/html_tags/individual_tags/figure.rb +42 -0
  47. data/lib/html_tags/individual_tags/footer.rb +61 -0
  48. data/lib/html_tags/individual_tags/form.rb +93 -0
  49. data/lib/html_tags/individual_tags/h1.rb +48 -0
  50. data/lib/html_tags/individual_tags/h2.rb +46 -0
  51. data/lib/html_tags/individual_tags/h3.rb +78 -0
  52. data/lib/html_tags/individual_tags/h4.rb +36 -0
  53. data/lib/html_tags/individual_tags/h5.rb +36 -0
  54. data/lib/html_tags/individual_tags/h6.rb +40 -0
  55. data/lib/html_tags/individual_tags/head.rb +47 -0
  56. data/lib/html_tags/individual_tags/header.rb +54 -0
  57. data/lib/html_tags/individual_tags/hgroup.rb +78 -0
  58. data/lib/html_tags/individual_tags/html.rb +61 -0
  59. data/lib/html_tags/individual_tags/i.rb +47 -0
  60. data/lib/html_tags/individual_tags/iframe.rb +131 -0
  61. data/lib/html_tags/individual_tags/img.rb +135 -0
  62. data/lib/html_tags/individual_tags/input.rb +96 -0
  63. data/lib/html_tags/individual_tags/ins.rb +102 -0
  64. data/lib/html_tags/individual_tags/kbd.rb +109 -0
  65. data/lib/html_tags/individual_tags/keygen.rb +90 -0
  66. data/lib/html_tags/individual_tags/label.rb +77 -0
  67. data/lib/html_tags/individual_tags/legend.rb +48 -0
  68. data/lib/html_tags/individual_tags/li.rb +74 -0
  69. data/lib/html_tags/individual_tags/link.rb +58 -0
  70. data/lib/html_tags/individual_tags/main.rb +29 -0
  71. data/lib/html_tags/individual_tags/map.rb +95 -0
  72. data/lib/html_tags/individual_tags/mark.rb +78 -0
  73. data/lib/html_tags/individual_tags/menu.rb +79 -0
  74. data/lib/html_tags/individual_tags/nav.rb +64 -0
  75. data/lib/html_tags/individual_tags/object.rb +76 -0
  76. data/lib/html_tags/individual_tags/ol.rb +50 -0
  77. data/lib/html_tags/individual_tags/p.rb +92 -0
  78. data/lib/html_tags/individual_tags/pre.rb +16 -0
  79. data/lib/html_tags/individual_tags/progress.rb +114 -0
  80. data/lib/html_tags/individual_tags/script.rb +22 -0
  81. data/lib/html_tags/individual_tags/source.rb +42 -0
  82. data/lib/html_tags/individual_tags/span.rb +95 -0
  83. data/lib/html_tags/individual_tags/strong.rb +17 -0
  84. data/lib/html_tags/individual_tags/style.rb +29 -0
  85. data/lib/html_tags/individual_tags/summary.rb +77 -0
  86. data/lib/html_tags/individual_tags/sup.rb +57 -0
  87. data/lib/html_tags/individual_tags/table.rb +90 -0
  88. data/lib/html_tags/individual_tags/tbody.rb +19 -0
  89. data/lib/html_tags/individual_tags/td.rb +30 -0
  90. data/lib/html_tags/individual_tags/textarea.rb +72 -0
  91. data/lib/html_tags/individual_tags/th.rb +50 -0
  92. data/lib/html_tags/individual_tags/thead.rb +53 -0
  93. data/lib/html_tags/individual_tags/time.rb +50 -0
  94. data/lib/html_tags/individual_tags/title.rb +59 -0
  95. data/lib/html_tags/individual_tags/tr.rb +50 -0
  96. data/lib/html_tags/individual_tags/track.rb +59 -0
  97. data/lib/html_tags/individual_tags/u.rb +47 -0
  98. data/lib/html_tags/individual_tags/ul.rb +23 -0
  99. data/lib/html_tags/individual_tags/var.rb +46 -0
  100. data/lib/html_tags/individual_tags/video.rb +70 -0
  101. data/lib/html_tags/module.rb +5 -0
  102. data/lib/html_tags/opening_tag/opening_tag.rb +288 -0
  103. data/lib/html_tags/project/project_base_directory.rb +23 -0
  104. data/lib/html_tags/requires/require_the_html_tags_project.rb +9 -0
  105. data/lib/html_tags/requires/require_the_img_tag.rb +7 -0
  106. data/lib/html_tags/shared.rb +23 -0
  107. data/lib/html_tags/stag.rb +54 -0
  108. data/lib/html_tags/toplevel_methods/add.rb +22 -0
  109. data/lib/html_tags/toplevel_methods/full_output.rb +33 -0
  110. data/lib/html_tags/toplevel_methods/newline_or_empty.rb +21 -0
  111. data/lib/html_tags/toplevel_methods/strip_newlines.rb +27 -0
  112. data/lib/html_tags/version/version.rb +17 -0
  113. data/lib/html_tags/yaml/available_html_tags.yml +135 -0
  114. data/lib/html_tags/yaml/valid_tags_in_a_head_tag.yml +16 -0
  115. data/lib/html_tags.rb +5 -0
  116. data/test/testing_html_tags.rb +158 -0
  117. data/test/testing_the_a_tag.rb +162 -0
  118. data/test/testing_the_button_tag.rb +37 -0
  119. data/test/testing_the_details_tag.rb +38 -0
  120. metadata +171 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2dfb6a7ceee870efe17695d864a404afa2b67adf81322554ca400b86dbf6b070
4
+ data.tar.gz: 31f182401cbdb827a4e7d09b60138d315c2c067670406b89299c6886c134f505
5
+ SHA512:
6
+ metadata.gz: 809ac6c23ebdaec820bdb7cb425f0c9c036bddecced0c1f9990e2d4b0d4490d0096c1752a3e025f9265f8d9d733bff48010122e2ecefae4595817e5479bc8b1a
7
+ data.tar.gz: 897ede2bae83ff5f3d0ecd13f2ddc2291c611c3c37b46eddcac55672beab625bbb9127e2e383887d6e634ba9c2978241b1c47d188213a562077f58f4f939a7b8
data/README.md ADDED
@@ -0,0 +1,456 @@
1
+ [![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://www.gobolinux.org/)
2
+ [![forthebadge](https://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
3
+ [![Gem Version](https://badge.fury.io/rb/html_tags.svg)](https://badge.fury.io/rb/html_tags)
4
+
5
+ This gem was <b>last updated</b> on the <span style="color: darkblue; font-weight: bold">19.02.2024</span> (dd.mm.yyyy notation), at <span style="color: steelblue; font-weight: bold">12:19:50</span> o'clock.
6
+
7
+ ## Introduction to the HtmlTags gem
8
+
9
+ <img src="https://i.imgur.com/A1MaV0i.png" style="margin: 1em">
10
+
11
+ The <b>HtmlTags gem</b> is a somewhat small gem that will try to
12
+ <b>autogenerate Strings</b> put into methods resembling the
13
+ available HTML tags.
14
+
15
+ Let's next have a look at a specific example supporting this statement.
16
+
17
+ Take the following method call in Ruby:
18
+
19
+ span('foo')
20
+
21
+ So, we call the method span() and pass the String 'foo' into it. The
22
+ method .span() can be found as part of the HtmlTags gem.
23
+
24
+ This will be expanded towards the following String:
25
+
26
+ <span>foo</span>
27
+
28
+ In other words: the HtmlTags gem can be used to autogenerate
29
+ HTML code.
30
+
31
+ This functionality is then made available to other projects, which
32
+ can tap into that functionality, in particular the gem <b>cyberweb</b>.
33
+ I use the latter gem for my custom cgi/sinatra/rails projects.
34
+
35
+ The code that was part in the html_tags gem originally used to
36
+ be part of the <b>cyberweb</b> gem in the past, until <b>html_tags</b>
37
+ became a standalone gem, in the year <b>2013</b>.
38
+
39
+ ## Goals and Objectives for the HtmlTags gem
40
+
41
+ The HtmlTags gem has various goals, some of which are more important
42
+ than others.
43
+
44
+ In no particular order, here are the different goals for this gem:
45
+
46
+ - Provide a way to generate all valid HTML tags, in particular for HTML5.
47
+ - Provide useful documentation as to how to use this project.
48
+ - Make the code as consistent as possible, unless the specific HTML tag at hand requires a different treatment
49
+ - Make the HtmlTags as self-contained as possible, e. g. no external dependencies.
50
+ - Make the HtmlTags as useful as possible, by also providing helper code unrelated to HTML-tags itself.
51
+ - Document the HTML that is supported by the gem.
52
+
53
+ ## New ideas (playground for new ideas)
54
+
55
+ We could replace code elements such as:
56
+
57
+ <button onclick="show_source()">Click me</button>
58
+
59
+ With:
60
+
61
+ button.text('Click me').onclick('show_source')
62
+
63
+ Or perhaps simple:
64
+
65
+ button('Click me').on_clicked {
66
+ show_source
67
+ }
68
+
69
+ This is currently not implemented, though. Need to think more about
70
+ it first.
71
+
72
+ ## Using HTML headers
73
+
74
+ The following example shows how to use the <b>h1 tag</b> via
75
+ HtmlTags:
76
+
77
+ HtmlTags.h1('Hello world!') # => "<h1>\nHello world!\n</h1>"
78
+
79
+ You can include the module HtmlTags. Then you can just type <b>h1()</b>
80
+ directly.
81
+
82
+ Another example, this time for the <b>div tag</b>:
83
+
84
+ name = 'Joe'
85
+ puts HtmlTags.div("Hello, #{name}!") # => <div>Hello, Joe!</div>
86
+
87
+ ## HtmlTags.a
88
+
89
+ The HTML <b>a</b> tag is for hyperlinks; typically it contains a
90
+ **href** entry.
91
+
92
+ You can pass in a Hash, too, including a few supported JavaScript
93
+ functions.
94
+
95
+ Example for the latter:
96
+
97
+ onclick: 'change_the_colour_to()'
98
+
99
+ Note that you still have to write the function somewhere and pull it
100
+ into the .html file (or .cgi file or whatever else you are using).
101
+
102
+ I added support for this in <b>October 2021</b>, as I needed to have clickable
103
+ links that change colour upon being clicked. I used that to memorize
104
+ which links I clicked, without having to depend on CSS.
105
+
106
+ ## Objectified HTML Tags
107
+
108
+ This is mostly for clarification. An objectified HTML tag is
109
+ a HTML tag that can be used like an object.
110
+
111
+ Example:
112
+
113
+ Span.new('Hello world!') # => <span>Hello world!</span>
114
+
115
+ The html_tags gem currently does not support this, but support for this
116
+ may be added in the future, depending on whether that use case turns
117
+ out to be sufficiently useful.
118
+
119
+ ## How to use HtmlTags.span()
120
+
121
+ The span-tag in HTML creates something like this:
122
+
123
+ <span>Hello world!</span>
124
+
125
+ To attach a CSS class to this, in HTML, one can use something such
126
+ as:
127
+
128
+ <span class="padl1em">Hello world!</span>
129
+
130
+ This is simple HTML.
131
+
132
+ The html_tags gem also allows these use cases.
133
+
134
+ For instance, consider the following:
135
+
136
+ e HtmlTags.span('Hey there')
137
+
138
+ This is equivalent to the first variant shown before.
139
+
140
+ The actual output will be:
141
+
142
+ <span>
143
+ Hey there</span>
144
+
145
+ So there is a newline after the starting span-tag. The
146
+ reason as to this is that I feel that, for readability,
147
+ it is better to have a newline show up if you want to
148
+ do a view-source action on the resulting .html file.
149
+
150
+ Not everyone may want this, so we may need to have to
151
+ add a toggle to strip newlines there. But for the time
152
+ being this has to suffice.
153
+
154
+ ## How to use HtmlTags.a()
155
+
156
+ Usage example for how to use <b>HtmlTags.a()</b>:
157
+
158
+ HtmlTags.a(
159
+ remote_url: remote_url,
160
+ text: title?.to_s,
161
+ css_style: 'font-weight: bold; color: darkblue'
162
+ )
163
+
164
+ ## The structure of opening and closing tags
165
+
166
+ This subsection just shows a tiny bit of the structure behind
167
+ opening and closing tags.
168
+
169
+ Consider a HTML a tag such as:
170
+
171
+ <a>
172
+
173
+ This has three components: <b><</b>, <b>a</b> and <b>></b>.
174
+
175
+ These <b>three components</b> are, in order, called:
176
+
177
+ - opening bracket
178
+ - element ID
179
+ - closing bracket
180
+
181
+ The closing tag, that is:
182
+
183
+ </a>
184
+
185
+ Has one more component, the /, also called the forward slash
186
+ (unsurprisingly so).
187
+
188
+ Note that an opening tag can contain attributes.
189
+
190
+ ## The bdo tag
191
+
192
+ <b>bdo</b> stands for <b>bi-directional override</b>.
193
+
194
+ The purpose of the bdo tag in HTML is to specify the text direction
195
+ or to override the current text direction. This is important
196
+ for languages such as <b>Arabic</b> or <b>Hebrew</b>.
197
+
198
+ Personally I do not really need this tag, but in the event that
199
+ other users of the <b>html_tag</b> gem need support for the bdo-tag,
200
+ support for it has been added to the html_tag gem in <b>June 2023</b>.
201
+
202
+ The <b>bdo tag</b> has a special attribute called <b>dir</b> - an
203
+ abbreviation standing for <b>direction</b>.
204
+
205
+ The dir attribute specifies the direction in which the text will
206
+ be displayed.
207
+
208
+ Only two values are permissive for the dir attribute:
209
+
210
+ (1) <b>ltr</b>: It means left to right. The text inside the bdo tag will
211
+ be rendered from left to right. This is the default value.
212
+
213
+ (2) <b>rtl</b>: It means right to left. The text inside the bdo tag
214
+ will be rendered from right to left.
215
+
216
+ Note that you can use the CSS class rtl-lang instead, so I am not
217
+ sure why that HTML tag is necessary.
218
+
219
+ At any rate, an invocation example follows:
220
+
221
+ HtmlTags.bdo()
222
+
223
+ ## Working with HTML tables
224
+
225
+ You can use <b>HtmlTags.table</b> to create a String that represents
226
+ a HTML table. In January 2024 this functionality was extended a bit,
227
+ in that you can pass an Array to this method, via the block form.
228
+ That Array will be used as content for the HTML table at hand.
229
+
230
+ Usage example is this API:
231
+
232
+ puts HtmlTags.table(nil,'mars1em','test_table','border:1px solid rand') {
233
+ %w( abc def ghi jkl )
234
+ }
235
+
236
+ This would generate the following String:
237
+
238
+ <table class="mars1em" id="test_table" style="border:1px solid rand">
239
+ <tr><td>
240
+ abc</td><td>
241
+ def</td></tr><tr><td>
242
+ ghi</td><td>
243
+ jkl</td></tr>
244
+ </table>
245
+
246
+ Quite convenient, isn't it?
247
+
248
+ ## Available HTML tags
249
+
250
+ The following HTML tags are valid, in <b>HTML5</b>:
251
+
252
+
253
+ <pre>
254
+ # ============================================================================ #
255
+ # Available HTML5 tags:
256
+ #
257
+ # https://dev.to/flippedcoding/the-ultimate-html5-tag-list-4i2a
258
+ # https://www.w3.org/TR/2012/WD-html-markup-20121025/elements.html
259
+ # https://www.tutorialrepublic.com/html-reference/html5-tags.php
260
+ #
261
+ # ============================================================================ #
262
+
263
+ # - !--...--
264
+ # - !doctype
265
+ - a
266
+ - abbr
267
+ # - acronym # Not available in HTML5, so the html_tag gem will not support it.
268
+ - address
269
+ # - applet # Not available in HTML5, so the html_tag gem will not support it.
270
+ - area
271
+ - article
272
+ - aside
273
+ - audio
274
+ - b
275
+ - base # Not sure if this will be implemented by the html_tag gem.
276
+ - basefont # Not available in HTML5, so the html_tag gem will not support it.
277
+ - bb # Not available in HTML5, so the html_tag gem will not support it.
278
+ - bdo # bdo stands for "bi-directional override".
279
+ - big # Not available in HTML5, so the html_tag gem will not support it.
280
+ - blockquote # Supported by the html_tags gem.
281
+ - body # Supported by the html_tags gem.
282
+ - br #
283
+ - button # Supported by the html_tags gem.
284
+ - canvas # Supported by the html_tags gem.
285
+ - caption # Supported by the html_tags gem.
286
+ - center
287
+ - cite # Supported by the html_tags gem.
288
+ - code # Supported by the html_tags gem.
289
+ - col
290
+ - colgroup
291
+ - command
292
+ - datagrid
293
+ - datalist
294
+ - dd
295
+ - del # Supported by the html_tags gem.
296
+ - details # Supported by the html_tags gem.
297
+ - dfn
298
+ - dialog # Supported by the html_tags gem.
299
+ # - dir # This feature is no longer recommended. See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dir
300
+ - div # Supported by the html_tags gem.
301
+ - dl
302
+ - dt
303
+ - em # Supported by the html_tags gem.
304
+ - embed # This one does not seem that useful anymore.
305
+ # - eventsource # This tag was removed from HTML5, so the HtmlTags won't support it.
306
+ - fieldset # Supported by the html_tags gem.
307
+ - figcaption
308
+ - figure # Supported by the html_tags gem.
309
+ # - font # NOT supported in HTML5.
310
+ - footer # Supported by the html_tags gem.
311
+ - form # Supported by the html_tags gem.
312
+ # - frame # NOT supported in HTML5.
313
+ # - frameset # The <frameset> tag was used in HTML4 to define a frameset. It is not part of HTML5.
314
+ - h1 # Supported by the html_tags gem.
315
+ - h2 # Supported by the html_tags gem.
316
+ - h3 # Supported by the html_tags gem.
317
+ - h4 # Supported by the html_tags gem.
318
+ - h5 # Supported by the html_tags gem.
319
+ - h6 # Supported by the html_tags gem.
320
+ - head # Supported by the html_tags gem.
321
+ - header # Supported by the html_tags gem.
322
+ - hgroup # Supported by the html_tags gem.
323
+ - hr # Supported by the html_tags gem.
324
+ - html # Supported by the html_tags gem.
325
+ - i # Supported by the html_tags gem.
326
+ - iframe # Supported by the html_tags gem.
327
+ - img # Supported by the html_tags gem.
328
+ - input # Supported by the html_tags gem.
329
+ - ins # Supported by the html_tags gem.
330
+ # - isindex # This has been removed from HTML5.
331
+ - kbd # Supported by the html_tags gem. The kbd element represents user input.
332
+ - keygen # Supported by the html_tags gem.
333
+ - label # Supported by the html_tags gem.
334
+ - legend # Supported by the html_tags gem.
335
+ - li # Supported by the html_tags gem.
336
+ - link # Supported by the html_tags gem.
337
+ - map # Supported by the html_tags gem.
338
+ - mark # Supported by the html_tags gem.
339
+ - menu # Supported by the html_tags gem.
340
+ - meta
341
+ - meter
342
+ - nav
343
+ - noframes
344
+ - noscript
345
+ - object # Supported by the html_tags gem.
346
+ - ol
347
+ - optgroup
348
+ - option
349
+ - output
350
+ - p
351
+ - param
352
+ - pre
353
+ - progress # Supported by the html_tags gem.
354
+ - q
355
+ - rp
356
+ - rt
357
+ - ruby
358
+ - s
359
+ - samp
360
+ - script
361
+ - section
362
+ - select
363
+ - small
364
+ - source # Supported by the html_tags gem.
365
+ - span
366
+ - strike
367
+ - strong
368
+ - style # Supported by the html_tags gem.
369
+ - sub
370
+ - summary # Supported by the html_tags gem.
371
+ - sup # Supported by the html_tags gem.
372
+ - table # Supported by the html_tags gem.
373
+ - tbody
374
+ - td
375
+ - textarea # Supported by the html_tags gem.
376
+ - tfoot
377
+ - th # Supported by the html_tags gem.
378
+ - thead # Supported by the html_tags gem.
379
+ - time # Supported by the html_tags gem.
380
+ - title # Supported by the html_tags gem.
381
+ - tr # Supported by the html_tags gem.
382
+ - track # Supported by the html_tags gem.
383
+ # - tt # This is no longer valid as of HTML5.
384
+ - u # Supported by the html_tags gem.
385
+ - ul # Supported by the html_tags gem.
386
+ - var # Supported by the html_tags gem.
387
+ - video # Supported by the html_tags gem.
388
+ - wbr # This is the "Word Break Opportunity" tag.
389
+ </pre>
390
+
391
+
392
+ In the long run the HtmlTags project should offer support
393
+ for <b>all</b> these HTML tags. This applies mostly to HTML5-tags
394
+ though; for instance, the <b>acronym tag</b> is no longer valid
395
+ in HTML5, and will thus not be supported by the html_tags
396
+ project.
397
+
398
+
399
+ ## Contact information and mandatory 2FA (no longer) coming up in 2022 / 2023
400
+
401
+ If your creative mind has ideas and specific suggestions to make this gem
402
+ more useful in general, feel free to drop me an email at any time, via:
403
+
404
+ shevy@inbox.lt
405
+
406
+ Before that email I used an email account at Google gmail, but in **2021** I
407
+ decided to slowly abandon gmail, for various reasons. In order to limit the
408
+ explanation here, allow me to just briefly state that I do not feel as if I
409
+ want to promote any Google service anymore when the user becomes the end
410
+ product (such as via data collection by upstream services, including other
411
+ proxy-services). My feeling is that this is a hugely flawed business model
412
+ to begin with, and I no longer wish to support this in any way, even if
413
+ only indirectly so, such as by using services of companies that try to
414
+ promote this flawed model.
415
+
416
+ In regards to responding to emails: please keep in mind that responding
417
+ may take some time, depending on the amount of work I may have at that
418
+ moment. So it is not that emails are ignored; it is more that I have not
419
+ (yet) found the time to read and reply. This means there may be a delay
420
+ of days, weeks and in some instances also months. There is, unfortunately,
421
+ not much I can do when I need to prioritise my time investment, but I try
422
+ to consider <b>all</b> feedback as an opportunity to improve my projects
423
+ nonetheless.
424
+
425
+ In <b>2022</b> rubygems.org decided to make 2FA mandatory for every
426
+ gem owner eventually:
427
+
428
+ see
429
+ https://blog.rubygems.org/2022/06/13/making-packages-more-secure.html
430
+
431
+ Mandatory 2FA will eventually be extended to all rubygems.org developers and
432
+ maintainers. As I can not use 2FA, for reasons I will skip explaining here,
433
+ this means that my projects will eventually be removed, as I no longer
434
+ have any control over my projects hosted on rubygems.org (because I
435
+ can not use 2FA).
436
+
437
+ At that point, I no longer have any control what is done to my projects
438
+ since whoever is controlling the gems ecosystem took away our control
439
+ here. I am not sure at which point ruby became corporate-controlled -
440
+ that was not the case several years ago, so something has
441
+ changed.
442
+
443
+ Ruby also only allows 2FA users to participate on the issue tracker these
444
+ days:
445
+
446
+ https://bugs.ruby-lang.org/issues/18800
447
+
448
+ But this has been reverted some months ago, so it is no longer applicable.
449
+ Suffice to say that I do not think that we should only be allowed to
450
+ interact on the world wide web when some 'authority' authenticated us,
451
+ such as via mandatory 2FA, so I hope this won't come back again.
452
+
453
+ Fighting spam is a noble goal, but when it also means you lock out
454
+ real human people then this is definitely NOT a good situation
455
+ to be had.
456
+
data/USAGE.md ADDED
@@ -0,0 +1,17 @@
1
+ = Usage of this Library
2
+
3
+ == Requiring it
4
+
5
+ require 'html_tags'
6
+
7
+ == Using it in a project
8
+
9
+ puts HtmlTags.is_valid_html? '<br>'
10
+ puts HtmlTags.is_valid_html? '<div>'
11
+ puts HtmlTags.is_valid_html? '<dav>'
12
+ puts HtmlTags.string_contains_only_valid_html_tags? 'hello ruby </br>'
13
+ puts HtmlTags.string_contains_only_valid_html_tags? 'hello ruby<haha>'
14
+
15
+ include HtmlTags # Or simply include it, but be careful with this.
16
+
17
+ p 'hi there' # This now works - it has however redefined p().