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
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ require 'html_tags/closing_tag/closing_tag.rb'
8
+ require 'html_tags/opening_tag/opening_tag.rb'
9
+ require 'html_tags/toplevel_methods/add.rb'
10
+
11
+ # ========================================================================= #
12
+ # === HtmlTags.ins
13
+ # ========================================================================= #
14
+ def self.ins(
15
+ i = '',
16
+ css_class = '',
17
+ the_id = '',
18
+ css_style = '',
19
+ javascript = '',
20
+ &block
21
+ )
22
+ the_opening_tag = nil
23
+ # ======================================================================= #
24
+ # === Handle blocks next
25
+ # ======================================================================= #
26
+ if block_given?
27
+ yielded = yield
28
+ if i.is_a?(String) and i.empty?
29
+ i = { text: i }
30
+ i.update(yielded)
31
+ end
32
+ end
33
+ if i.is_a? Hash
34
+ # ===================================================================== #
35
+ # === :css_class
36
+ # ===================================================================== #
37
+ if i.has_key? :css_class
38
+ css_class = i.delete(:css_class)
39
+ end
40
+ # ===================================================================== #
41
+ # === :id
42
+ # ===================================================================== #
43
+ if i.has_key? :id
44
+ the_id = i.delete(:id)
45
+ # ===================================================================== #
46
+ # === :the_id
47
+ # ===================================================================== #
48
+ elsif i.has_key? :the_id
49
+ the_id = i.delete(:the_id)
50
+ end
51
+ # ===================================================================== #
52
+ # === :text
53
+ #
54
+ # This should come last as it nullifies the variable i.
55
+ # ===================================================================== #
56
+ if i.has_key? :text
57
+ i = i.delete(:text).to_s
58
+ end
59
+ end
60
+ # ======================================================================= #
61
+ # === the_opening_tag
62
+ #
63
+ # We have to get a reference to the opening tag early on, so that we
64
+ # can add e. g. "onClick" to it.
65
+ # ======================================================================= #
66
+ if the_opening_tag.nil?
67
+ the_opening_tag = opening_tag(__method__, css_class, the_id, css_style, javascript) { :no_newline }
68
+ end
69
+ return HtmlTags.add(
70
+ the_opening_tag+
71
+ i.to_s+
72
+ close(__method__)
73
+ )
74
+ end
75
+
76
+ # ========================================================================= #
77
+ # === ins
78
+ # ========================================================================= #
79
+ def ins(
80
+ i = '',
81
+ css_class = '',
82
+ the_id = '',
83
+ css_style = '',
84
+ javascript = '',
85
+ &block
86
+ )
87
+ ::HtmlTags.ins(
88
+ i,
89
+ css_class,
90
+ the_id,
91
+ css_style,
92
+ javascript,
93
+ &block
94
+ )
95
+ end
96
+
97
+ end
98
+
99
+ if __FILE__ == $PROGRAM_NAME
100
+ alias e puts
101
+ e 'This cat '+HtmlTags.ins('abc def ghi')+' is a super cat.'
102
+ end
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ require 'html_tags/opening_tag/opening_tag.rb'
8
+ require 'html_tags/toplevel_methods/add.rb'
9
+
10
+ # ========================================================================= #
11
+ # === HtmlTags.kbd
12
+ # ========================================================================= #
13
+ def self.kbd(
14
+ i = '',
15
+ css_class = '',
16
+ the_id = '',
17
+ css_style = '',
18
+ optional_javascript = '',
19
+ &block
20
+ )
21
+ # ======================================================================= #
22
+ # === Handle Hashes first
23
+ # ======================================================================= #
24
+ if css_class.is_a? Hash
25
+ # ===================================================================== #
26
+ # === :css_style
27
+ # ===================================================================== #
28
+ if css_class.has_key? :css_style
29
+ css_style = css_class.delete(:css_style)
30
+ if css_class.is_a?(Hash) and css_class.empty?
31
+ css_class = ''
32
+ end
33
+ end
34
+ end
35
+ if i.is_a? Hash
36
+ # ===================================================================== #
37
+ # Next support elements such as:
38
+ # kbd(css_class: 'default') {
39
+ # ===================================================================== #
40
+ if i.has_key? :css_class
41
+ css_class = i.delete(:css_class)
42
+ end
43
+ # ===================================================================== #
44
+ # === :id
45
+ # ===================================================================== #
46
+ if i.has_key? :id
47
+ the_id = i.delete(:id)
48
+ end
49
+ # ===================================================================== #
50
+ # === :css_style
51
+ # ===================================================================== #
52
+ if i.has_key? :css_style
53
+ css_style = i.delete(:css_style)
54
+ end
55
+ i = '' # For now, we remove this.
56
+ end
57
+ content = i.to_s.dup
58
+ unless content.end_with?('%')
59
+ if content =~ /\d+/
60
+ content << '%'
61
+ end
62
+ end
63
+ if block_given?
64
+ content << yield.to_s
65
+ end
66
+ # ======================================================================= #
67
+ # Looks better with a newline, in my opinion:
68
+ # ======================================================================= #
69
+ content << "\n" unless content.end_with? "\n"
70
+ return HtmlTags.add(
71
+ opening_tag(__method__, css_class, the_id, css_style, optional_javascript)+
72
+ content+
73
+ close(__method__)
74
+ )
75
+ end
76
+
77
+ # ========================================================================= #
78
+ # === kbd
79
+ #
80
+ # This method will make a html <kbd> tag.
81
+ #
82
+ # Invocation example:
83
+ #
84
+ # HtmlTags.kbd(i = '', css_class = '', the_id = '', css_style = '')
85
+ #
86
+ # ========================================================================= #
87
+ def kbd(
88
+ i = '',
89
+ css_class = '',
90
+ the_id = '',
91
+ css_style = '',
92
+ javascript = nil
93
+ )
94
+ return HtmlTags.kbd(
95
+ i,
96
+ css_class,
97
+ the_id,
98
+ css_style,
99
+ javascript_code,
100
+ &block
101
+ )
102
+ end
103
+
104
+ end
105
+
106
+ if __FILE__ == $PROGRAM_NAME
107
+ alias e puts
108
+ e HtmlTags.kbd('Ctrl C')
109
+ end
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # The <keygen> tag is typically found in the <form> tag.
6
+ # =========================================================================== #
7
+ # require 'html_tags/individual_tags/keygen.rb'
8
+ # =========================================================================== #
9
+ module HtmlTags
10
+
11
+ require 'html_tags/opening_tag/opening_tag.rb'
12
+ require 'html_tags/toplevel_methods/add.rb'
13
+
14
+ # ========================================================================= #
15
+ # === HtmlTags.keygen
16
+ # ========================================================================= #
17
+ def self.keygen(
18
+ i = {},
19
+ css_class = '',
20
+ the_id = '',
21
+ css_style = '',
22
+ optional_javascript = '',
23
+ &block
24
+ )
25
+ # ======================================================================= #
26
+ # === Handle Hashes first
27
+ # ======================================================================= #
28
+ if css_class.is_a? Hash
29
+ # ===================================================================== #
30
+ # === :css_style
31
+ # ===================================================================== #
32
+ if css_class.has_key? :css_style
33
+ css_style = css_class.delete(:css_style)
34
+ if css_class.is_a?(Hash) and css_class.empty?
35
+ css_class = ''
36
+ end
37
+ end
38
+ end
39
+ _ = opening_tag(__method__, css_class, the_id, css_style, optional_javascript).dup
40
+ # ======================================================================= #
41
+ # === Handle Hashes next for the i (input) argument:
42
+ # ======================================================================= #
43
+ if i.is_a? Hash
44
+ # ===================================================================== #
45
+ # === :name
46
+ # ===================================================================== #
47
+ if i.has_key? :name
48
+ _[-2,0] = ' name="'+i[:name]+'"'
49
+ end
50
+ # ===================================================================== #
51
+ # === :keytype
52
+ # ===================================================================== #
53
+ if i.has_key? :keytype
54
+ _[-2,0] = ' keytype="'+i[:keytype]+'"'
55
+ end
56
+ end
57
+ # ======================================================================= #
58
+ # <keygen> does not have a closing tag.
59
+ # ======================================================================= #
60
+ return HtmlTags.add(_)
61
+ end
62
+
63
+ # ========================================================================= #
64
+ # === keygen
65
+ # ========================================================================= #
66
+ def keygen(
67
+ i = {},
68
+ css_class = '',
69
+ the_id = '',
70
+ css_style = '',
71
+ optional_javascript = '',
72
+ &block
73
+ )
74
+ return HtmlTags.keygen(
75
+ i,
76
+ css_class,
77
+ the_id,
78
+ css_style,
79
+ javascript_code,
80
+ &block
81
+ )
82
+ end
83
+
84
+ end
85
+
86
+ if __FILE__ == $PROGRAM_NAME
87
+ alias e puts
88
+ e HtmlTags.keygen(name: 'rsaPublicKey', keytype: 'RSA')
89
+ # <keygen name="rsaPublicKey" keytype="RSA">
90
+ end
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ require 'html_tags/opening_tag/opening_tag.rb'
8
+ require 'html_tags/toplevel_methods/add.rb'
9
+
10
+ # ========================================================================= #
11
+ # === HtmlTags.label
12
+ #
13
+ # The html <label> tag is useful to specify text before an <input>
14
+ # field.
15
+ #
16
+ # The <label> tag defines a label for an <input> element.
17
+ #
18
+ # The <label> element does not render as anything special for the
19
+ # user. However, it provides a usability improvement for mouse
20
+ # users, because if the user clicks on the text within the <label>
21
+ # element, it toggles the control.
22
+ #
23
+ # The "for" attribute of the <label> tag should be equal to the id
24
+ # attribute of the related element to bind them together.
25
+ #
26
+ # This may be best explained through an example:
27
+ #
28
+ # <label for="male">Male</label>
29
+ # <input type="radio" name="sex" id="male" value="male">
30
+ #
31
+ # Documentation can be seen here:
32
+ #
33
+ # https://www.w3schools.com/tags/tag_label.asp
34
+ #
35
+ # ========================================================================= #
36
+ def self.label(
37
+ i = '',
38
+ css_class = '',
39
+ the_id = '',
40
+ css_style = ''
41
+ )
42
+ start = opening_tag(__method__, css_class, the_id, css_style)
43
+ for_label = i.to_s.downcase.strip # Right now the for-label is deduced from the input.
44
+ start[-2,0] = ' for="'+for_label+'"' # -2 because we also have a trailing newline.
45
+ return HtmlTags.add(
46
+ start+
47
+ i.to_s+
48
+ close(__method__)
49
+ )
50
+ end
51
+
52
+ # ========================================================================= #
53
+ # === label
54
+ # ========================================================================= #
55
+ def label(
56
+ i = '',
57
+ css_class = '',
58
+ the_id = '',
59
+ css_style = '',
60
+ javascript = nil
61
+ )
62
+ return HtmlTags.label(
63
+ i,
64
+ css_class,
65
+ the_id,
66
+ css_style,
67
+ javascript_code,
68
+ &block
69
+ )
70
+ end
71
+
72
+ end
73
+
74
+ if __FILE__ == $PROGRAM_NAME
75
+ alias e puts
76
+ e HtmlTags.label('My savings', css_style: 'text-align: right')
77
+ end
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ require 'html_tags/opening_tag/opening_tag.rb'
8
+ require 'html_tags/toplevel_methods/add.rb'
9
+
10
+ # ========================================================================= #
11
+ # === HtmlTags.legend
12
+ # ========================================================================= #
13
+ def self.legend(
14
+ i = '',
15
+ css_class = '',
16
+ the_id = '',
17
+ css_style = ''
18
+ )
19
+ return HtmlTags.add(
20
+ opening_tag(__method__, css_class, the_id, css_style)+
21
+ i.to_s+
22
+ close(__method__)
23
+ )
24
+ end
25
+
26
+ # ========================================================================= #
27
+ # === legend
28
+ # ========================================================================= #
29
+ def legend(
30
+ i = '',
31
+ css_class = '',
32
+ the_id = '',
33
+ css_style = ''
34
+ )
35
+ return HtmlTags.legend(
36
+ i,
37
+ css_class,
38
+ the_id,
39
+ css_style
40
+ )
41
+ end
42
+
43
+ end
44
+
45
+ if __FILE__ == $PROGRAM_NAME
46
+ alias e puts
47
+ e HtmlTags.legend('My savings', css_style: 'text-align: right')
48
+ end
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ require 'html_tags/opening_tag/opening_tag.rb'
8
+ require 'html_tags/toplevel_methods/add.rb'
9
+
10
+ # ========================================================================= #
11
+ # === HtmlTags.li (li tag)
12
+ #
13
+ # This is essentially a HTML representation for the <li> tag.
14
+ #
15
+ # The first input argument to this method will constitute the content
16
+ # of said <li> tag. Note that the block form to li {} can also be
17
+ # used for content, so use whichever way you prefer.
18
+ # ========================================================================= #
19
+ def self.li(
20
+ i = '', # <- This is the content.
21
+ css_class = '',
22
+ the_id = '',
23
+ css_style = '',
24
+ optional_javascript = '',
25
+ &block
26
+ )
27
+ if i.is_a? Hash
28
+ # === :css_class
29
+ if i.has_key? :css_class
30
+ css_class = i.delete(:css_class)
31
+ end
32
+ i = ''
33
+ end
34
+ i = i.to_s.dup # And avoid frozen-errors.
35
+ # ======================================================================= #
36
+ # Blocks will be assumed to be used for the first argument, `i`.
37
+ # ======================================================================= #
38
+ if block_given?
39
+ i << yield.to_s
40
+ end
41
+ return HtmlTags.add(
42
+ opening_tag(__method__, css_class, the_id, css_style, optional_javascript)+
43
+ i+
44
+ close(__method__)
45
+ )
46
+ end
47
+
48
+ # ========================================================================= #
49
+ # === li
50
+ # ========================================================================= #
51
+ def li(
52
+ i = '',
53
+ css_class = '',
54
+ the_id = '',
55
+ css_style = '',
56
+ optional_javascript = '',
57
+ &block
58
+ )
59
+ return HtmlTags.li(
60
+ i,
61
+ css_class,
62
+ the_id,
63
+ css_style,
64
+ optional_javascript,
65
+ &block
66
+ )
67
+ end
68
+
69
+ end
70
+
71
+ if __FILE__ == $PROGRAM_NAME
72
+ alias e puts
73
+ e HtmlTags.li('My savings')
74
+ end
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/individual_tags/link.rb'
6
+ # =========================================================================== #
7
+ module HtmlTags
8
+
9
+ require 'html_tags/opening_tag/opening_tag.rb'
10
+ require 'html_tags/toplevel_methods/add.rb'
11
+
12
+ # ========================================================================= #
13
+ # === HtmlTags.link
14
+ #
15
+ # The job of this method is to create a String such as:
16
+ #
17
+ # <link rel="stylesheet" href="styles.css">
18
+ #
19
+ # Note that normally the link-HTML tag comes in between the <head> tag.
20
+ #
21
+ # The second argument, `rel`, can be any of the following:
22
+ #
23
+ # alternate, author, dns-prefetch, help, icon, license, next, pingback,
24
+ # preconnect, prefetch, preload, prerender, prev, search, stylesheet
25
+ #
26
+ # The default is 'stylesheet', as that is the most commonly used variant
27
+ # for the <link> tag.
28
+ # ========================================================================= #
29
+ def self.link(
30
+ href = '',
31
+ rel = 'stylesheet'
32
+ )
33
+ _ = opening_tag(__method__).dup
34
+ if rel
35
+ _[-2,0] = ' rel="'+rel+'"'
36
+ end
37
+ if href
38
+ _[-2,0] = ' href="'+href+'"'
39
+ end
40
+ return HtmlTags.add(_)
41
+ end
42
+
43
+ # ========================================================================= #
44
+ # === link
45
+ # ========================================================================= #
46
+ def link(
47
+ href = '',
48
+ rel = ''
49
+ )
50
+ return HtmlTags.link(href, rel)
51
+ end
52
+
53
+ end
54
+
55
+ if __FILE__ == $PROGRAM_NAME
56
+ alias e puts
57
+ e HtmlTags.link('styles.css','stylesheet')
58
+ end # <link rel="stylesheet" href="styles.css">
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ # ========================================================================= #
8
+ # === main
9
+ #
10
+ # Usage example:
11
+ #
12
+ # HtmlTags.main('<h1>APP NAME</h1><nav></nav>') => '<header><h1>APP NAME</h1><nav></nav></header>'
13
+ #
14
+ # ========================================================================= #
15
+ def main(
16
+ i = '', css_class = '', the_id = '', css_style = '', &block
17
+ )
18
+ content = i.to_s
19
+ if block_given?
20
+ content = content.to_s+yield.to_s
21
+ end
22
+ return HtmlTags.add(
23
+ opening_tag(__method__, css_class, the_id, css_style)+
24
+ content+
25
+ close(__method__)
26
+ )
27
+ end
28
+
29
+ end
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # See this API reference:
6
+ #
7
+ # https://www.w3schools.com/TagS/tag_map.asp
8
+ #
9
+ # =========================================================================== #
10
+ module HtmlTags
11
+
12
+ require 'html_tags/opening_tag/opening_tag.rb'
13
+ require 'html_tags/toplevel_methods/add.rb'
14
+
15
+ # ========================================================================= #
16
+ # === HtmlTags.map (map tag)
17
+ #
18
+ # An example for the usage of the map-HTML tag goes like this:
19
+ #
20
+ # <map name="workmap">
21
+ # </map>
22
+ #
23
+ # ========================================================================= #
24
+ def self.map(
25
+ i = '', # <- This is the content.
26
+ css_class = '',
27
+ the_id = '',
28
+ css_style = '',
29
+ optional_javascript = '',
30
+ &block
31
+ )
32
+ if i.is_a? Hash
33
+ # ===================================================================== #
34
+ # === :css_class
35
+ # ===================================================================== #
36
+ if i.has_key? :css_class
37
+ css_class = i.delete(:css_class)
38
+ end
39
+ i = ''
40
+ end
41
+ i = i.to_s.dup # And avoid frozen-errors.
42
+ start = opening_tag(__method__, css_class, the_id, css_style, optional_javascript)
43
+ # ======================================================================= #
44
+ # Blocks will be assumed to be used for the first argument, `i`.
45
+ # ======================================================================= #
46
+ if block_given?
47
+ yielded = yield
48
+ if yielded.is_a? Hash
49
+ # =================================================================== #
50
+ # === :name
51
+ # =================================================================== #
52
+ if yielded.has_key? :name
53
+ start[-2,0] = ' name="'+yielded.delete(:name)+'"'
54
+ end
55
+ end
56
+ end
57
+ return HtmlTags.add(
58
+ start+
59
+ i+
60
+ "\n"+
61
+ close(__method__)
62
+ )
63
+ end
64
+
65
+ # ========================================================================= #
66
+ # === map
67
+ # ========================================================================= #
68
+ def map(
69
+ i = '',
70
+ css_class = '',
71
+ the_id = '',
72
+ css_style = '',
73
+ optional_javascript = '',
74
+ &block
75
+ )
76
+ return HtmlTags.map(
77
+ i,
78
+ css_class,
79
+ the_id,
80
+ css_style,
81
+ optional_javascript,
82
+ &block
83
+ )
84
+ end
85
+
86
+ end
87
+
88
+ if __FILE__ == $PROGRAM_NAME
89
+ alias e puts
90
+ e HtmlTags.map('<area shape="rect" coords="34,44,270,350" alt="Computer" href="computer.htm">
91
+ <area shape="rect" coords="290,172,333,250" alt="Phone" href="phone.htm">
92
+ <area shape="circle" coords="337,300,44" alt="Cup of coffee" href="coffee.htm">') {{
93
+ name: 'workmap'
94
+ }}
95
+ end