html_tags 0.1.183

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