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,47 @@
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.head
12
+ # ========================================================================= #
13
+ def self.head(
14
+ i = '',
15
+ &block
16
+ )
17
+ if block_given?
18
+ return HtmlTags.add(
19
+ opening_tag(__method__)+i+yield+close(__method__)
20
+ )
21
+ else # Simplified variant.
22
+ result = HtmlTags.add(
23
+ opening_tag(__method__)
24
+ ).dup
25
+ if i and !i.empty?
26
+ result << i
27
+ result << '</head>'
28
+ end
29
+ return result
30
+ end
31
+ end
32
+
33
+ # ========================================================================= #
34
+ # === head
35
+ #
36
+ # This will create an opening tag.
37
+ # ========================================================================= #
38
+ def head(i = '', &block)
39
+ HtmlTags.head(i, &block)
40
+ end
41
+
42
+ end
43
+
44
+ if __FILE__ == $PROGRAM_NAME
45
+ alias e puts
46
+ e HtmlTags.head 'Testing ...'
47
+ end
@@ -0,0 +1,54 @@
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.header
12
+ #
13
+ # Usage example:
14
+ #
15
+ # HtmlTags.header('<h1>APP NAME</h1><nav></nav>') => '<header><h1>APP NAME</h1><nav></nav></header>'
16
+ #
17
+ # ========================================================================= #
18
+ def self.header(
19
+ i = '',
20
+ css_class = '',
21
+ the_id = '',
22
+ css_style = '',
23
+ &block
24
+ )
25
+ content = i.to_s
26
+ if block_given?
27
+ content = content.to_s+yield.to_s
28
+ end
29
+ return HtmlTags.add(
30
+ opening_tag(__method__, css_class, the_id, css_style)+
31
+ "#{content}\n"+
32
+ close(__method__)
33
+ )
34
+ end
35
+
36
+ # ========================================================================= #
37
+ # === header
38
+ # ========================================================================= #
39
+ def header(
40
+ i = '',
41
+ css_class = '',
42
+ the_id = '',
43
+ css_style = '',
44
+ &block
45
+ )
46
+ ::HtmlTags.header(i, css_class, the_id, css_style, &block)
47
+ end
48
+
49
+ end
50
+
51
+ if __FILE__ == $PROGRAM_NAME
52
+ alias e puts
53
+ e HtmlTags.header('<h1>APP NAME</h1><nav></nav>')
54
+ end
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/individual_tags/hgroup.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.hgroup
14
+ # ========================================================================= #
15
+ def self.hgroup(
16
+ i = '',
17
+ css_class = '',
18
+ the_id = '',
19
+ css_style = '',
20
+ optional_javascript = '',
21
+ &block
22
+ )
23
+ # ======================================================================= #
24
+ # === Handle Hashes first
25
+ # ======================================================================= #
26
+ if css_class.is_a? Hash
27
+ # ===================================================================== #
28
+ # === :css_style
29
+ # ===================================================================== #
30
+ if css_class.has_key? :css_style
31
+ css_style = css_class.delete(:css_style)
32
+ if css_class.is_a?(Hash) and css_class.empty?
33
+ css_class = ''
34
+ end
35
+ end
36
+ end
37
+ content = i.to_s.dup
38
+ if block_given?
39
+ content << yield.to_s
40
+ end
41
+ # ======================================================================= #
42
+ # Looks better with a newline, in my opinion:
43
+ # ======================================================================= #
44
+ content << "\n" unless content.end_with? "\n"
45
+ return HtmlTags.add(
46
+ opening_tag(__method__, css_class, the_id, css_style, optional_javascript)+
47
+ content+
48
+ close(__method__)
49
+ )
50
+ end
51
+
52
+ # ========================================================================= #
53
+ # === hgroup
54
+ # ========================================================================= #
55
+ def hgroup(
56
+ i = '',
57
+ css_class = '',
58
+ the_id = '',
59
+ css_style = '',
60
+ optional_javascript = '',
61
+ &block
62
+ )
63
+ return HtmlTags.hgroup(
64
+ i,
65
+ css_class,
66
+ the_id,
67
+ css_style,
68
+ javascript_code,
69
+ &block
70
+ )
71
+ end
72
+
73
+ end
74
+
75
+ if __FILE__ == $PROGRAM_NAME
76
+ alias e puts
77
+ e HtmlTags.hgroup('The Scream','','the_scream_id')
78
+ end
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ # ========================================================================= #
8
+ # === html
9
+ #
10
+ # A <html> tag in HTML5 may have some attributes such as:
11
+ #
12
+ # <html lang="en">
13
+ #
14
+ # See http://www.w3schools.com/tags/ref_language_codes.asp for more
15
+ # information pertaining to the <html> tag.
16
+ #
17
+ # For now, we will use lang="en" all the time.
18
+ #
19
+ # To test this standalone, try:
20
+ #
21
+ # HtmlTags.html
22
+ #
23
+ # ========================================================================= #
24
+ def html(
25
+ i = '',
26
+ css_class = '',
27
+ the_id = '',
28
+ css_style = '',
29
+ &block
30
+ )
31
+ opening = HtmlTags.open_html # Delegate to the method below.
32
+ _ = ''.dup
33
+ if block_given?
34
+ yielded = yield
35
+ case yielded
36
+ when :use_unicode_as_encoding
37
+ opening << "<meta charset=\"UTF-8\">\n"
38
+ else
39
+ _ << yielded
40
+ end
41
+ end
42
+ return HtmlTags.add(
43
+ opening+
44
+ i.to_s+
45
+ _.to_s+
46
+ close(__method__)
47
+ )
48
+ end
49
+
50
+ # ========================================================================= #
51
+ # === HtmlTags.open_html
52
+ #
53
+ # We will automatically append lang="en" to the tag.
54
+ # ========================================================================= #
55
+ def self.open_html
56
+ opening = opening_tag(:html)
57
+ opening[-2,0] = ' lang="en"'
58
+ opening
59
+ end
60
+
61
+ end
@@ -0,0 +1,47 @@
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.i
12
+ # ========================================================================= #
13
+ def self.i(
14
+ i = '', css_class = '', the_id = '', css_style = ''
15
+ )
16
+ return HtmlTags.add(
17
+ opening_tag(__method__, css_class, the_id, css_style)+
18
+ i.to_s+
19
+ close(__method__)
20
+ )
21
+ end
22
+
23
+ # ========================================================================= #
24
+ # === i
25
+ # ========================================================================= #
26
+ def i(
27
+ i = '',
28
+ css_class = '',
29
+ the_id = '',
30
+ css_style = '',
31
+ &block
32
+ )
33
+ return HtmlTags.i(
34
+ i,
35
+ css_class,
36
+ the_id,
37
+ css_style,
38
+ &block
39
+ )
40
+ end
41
+
42
+ end
43
+
44
+ if __FILE__ == $PROGRAM_NAME
45
+ alias e puts
46
+ e HtmlTags.i('foobar')
47
+ end
@@ -0,0 +1,131 @@
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.iframe
13
+ #
14
+ # The <iframe> tag specifies an inline frame. This can then be embedded
15
+ # in a webpage, for instance.
16
+ #
17
+ # It is recommended to always include a title attribute for the
18
+ # <iframe>. This is used by screen readers to read out what
19
+ # the content of the <iframe> is.
20
+ #
21
+ # This method should yield a String such as:
22
+ #
23
+ # <iframe src="https://www.foobar.com" title="Testing"></iframe>
24
+ #
25
+ # Usage example:
26
+ #
27
+ # x = HtmlTags.iframe(text: 'Move the mouse cursor here.', css_class: 'glow_on_hover')
28
+ #
29
+ # ========================================================================= #
30
+ def self.iframe(
31
+ i = '',
32
+ css_class = '',
33
+ the_id = '',
34
+ css_style = '',
35
+ javascript = '',
36
+ &block
37
+ )
38
+ the_opening_tag = nil
39
+ source_target = ''.dup
40
+ # ======================================================================= #
41
+ # === Handle blocks next
42
+ # ======================================================================= #
43
+ if block_given?
44
+ yielded = yield
45
+ if i.is_a?(String) and i.empty?
46
+ i = { text: i }
47
+ i.update(yielded)
48
+ end
49
+ end
50
+ if i.is_a? Hash
51
+ # ===================================================================== #
52
+ # === :css_class
53
+ # ===================================================================== #
54
+ if i.has_key? :css_class
55
+ css_class = i.delete(:css_class)
56
+ end
57
+ # ===================================================================== #
58
+ # === :id
59
+ # ===================================================================== #
60
+ if i.has_key? :id
61
+ the_id = i.delete(:id)
62
+ # ===================================================================== #
63
+ # === :the_id
64
+ # ===================================================================== #
65
+ elsif i.has_key? :the_id
66
+ the_id = i.delete(:the_id)
67
+ end
68
+ # ===================================================================== #
69
+ # === :src
70
+ # ===================================================================== #
71
+ if i.has_key? :src
72
+ source_target = i.delete(:src).to_s
73
+ end
74
+ # ===================================================================== #
75
+ # === :text
76
+ #
77
+ # This should come last as it nullifies the variable i.
78
+ # ===================================================================== #
79
+ if i.has_key? :text
80
+ i = i.delete(:text).to_s
81
+ end
82
+ end
83
+ # ======================================================================= #
84
+ # === the_opening_tag
85
+ #
86
+ # We have to get a reference to the opening tag early on, so that we
87
+ # can add e. g. "onClick" to it.
88
+ # ======================================================================= #
89
+ if the_opening_tag.nil?
90
+ the_opening_tag = opening_tag(__method__, css_class, the_id, css_style, javascript)
91
+ end
92
+ if source_target and !source_target.empty?
93
+ the_opening_tag.sub!(/iframe /, 'iframe src="'+source_target+'" ')
94
+ end
95
+ return HtmlTags.add(
96
+ the_opening_tag+
97
+ i.to_s+
98
+ close(__method__)
99
+ )
100
+ end
101
+
102
+ # ========================================================================= #
103
+ # === iframe
104
+ # ========================================================================= #
105
+ def iframe(
106
+ i = '',
107
+ css_class = '',
108
+ the_id = '',
109
+ css_style = '',
110
+ javascript = '',
111
+ &block
112
+ )
113
+ ::HtmlTags.iframe(
114
+ i,
115
+ css_class,
116
+ the_id,
117
+ css_style,
118
+ javascript,
119
+ &block
120
+ )
121
+ end
122
+
123
+ end
124
+
125
+ if __FILE__ == $PROGRAM_NAME
126
+ alias e puts
127
+ e HtmlTags.iframe {{
128
+ src: 'www.foobar.com',
129
+ css_class: 'bblack2 pad5px marl1em'
130
+ }}
131
+ end
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/individual_tags/img.rb'
6
+ # =========================================================================== #
7
+ module HtmlTags
8
+
9
+ require 'html_tags/opening_tag/opening_tag.rb'
10
+ require 'html_tags/toplevel_methods/add.rb'
11
+ require 'html_tags/toplevel_methods/newline_or_empty.rb'
12
+
13
+ # ========================================================================= #
14
+ # === HtmlTags.img
15
+ #
16
+ # The img() method creates an <img> tag.
17
+ #
18
+ # Documentation for this HTML tag can be found at:
19
+ #
20
+ # https://www.w3schools.com/tags/tag_img.asp
21
+ # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img
22
+ #
23
+ # The "end result" will be a String such as this here:
24
+ #
25
+ # <img src="foo.png" alt="Some image">
26
+ #
27
+ # Note that we make use of the block variant, by specifying a hash which
28
+ # has a :src attribute.
29
+ #
30
+ # If the first argument to this method is a Hash then that Hash will
31
+ # be checked for certain keys, such as :src or :css_class
32
+ #
33
+ # If the argument called the_id is a symbol such as
34
+ # :infer_the_id_from_the_filename then it will be evaluated in a
35
+ # special manner.
36
+ # ========================================================================= #
37
+ def self.img(
38
+ i = 'foo.png',
39
+ css_class = '',
40
+ the_id = '',
41
+ css_style = ''
42
+ )
43
+ # ======================================================================= #
44
+ # === Handle blocks next
45
+ # ======================================================================= #
46
+ if block_given?
47
+ yielded = yield
48
+ # ===================================================================== #
49
+ # === Handle Hashes given via block syntax next
50
+ # ===================================================================== #
51
+ if yielded.is_a? Hash
52
+ if i.is_a? String
53
+ i = { src: i } # Add this string as the :src key in that case.
54
+ i.update(yielded)
55
+ end
56
+ end
57
+ end
58
+ if i.is_a? Hash
59
+ # ===================================================================== #
60
+ # === :css_style
61
+ # ===================================================================== #
62
+ if i.has_key? :css_style
63
+ css_style = i.delete(:css_style)
64
+ end
65
+ # ===================================================================== #
66
+ # === :css_class
67
+ # ===================================================================== #
68
+ if i.has_key? :css_class
69
+ css_class = i.delete(:css_class)
70
+ end
71
+ # ===================================================================== #
72
+ # === :id
73
+ # ===================================================================== #
74
+ if i.has_key? :id
75
+ the_id = i.delete(:id)
76
+ # ===================================================================== #
77
+ # === :the_id
78
+ # ===================================================================== #
79
+ elsif i.has_key? :the_id
80
+ the_id = i.delete(:the_id)
81
+ end
82
+ # ===================================================================== #
83
+ # === :src
84
+ #
85
+ # This entry point should come last, that is, after other checks were
86
+ # already done. The reason for this is due to the deliberate
87
+ # self-assignment being done here.
88
+ # ===================================================================== #
89
+ if i.has_key? :src
90
+ i = i.delete(:src)
91
+ end
92
+ end
93
+ case the_id # case tag
94
+ # ======================================================================= #
95
+ # === :drag_infer_the_id_from_the_filename
96
+ # ======================================================================= #
97
+ when :drag_infer_the_id_from_the_filename,
98
+ :drag
99
+ the_id = 'drag_'+File.basename(i).
100
+ sub(/#{File.extname(i)}/,'')
101
+ # ======================================================================= #
102
+ # === :infer_the_id_from_the_filename
103
+ # ======================================================================= #
104
+ when :infer_the_id_from_the_filename
105
+ the_id = File.basename(i).
106
+ sub(/#{File.extname(i)}/,'')
107
+ end
108
+ return HtmlTags.add(
109
+ opening_tag(__method__, css_class, the_id, css_style) {{ src: i }}+
110
+ HtmlTags.newline_or_empty.to_s # i.to_s # Disabled adding the content. <img> tags do not have any content.
111
+ )
112
+ end; self.instance_eval { alias image img } # === HtmlTags.image
113
+
114
+ # ========================================================================= #
115
+ # === img
116
+ # ========================================================================= #
117
+ def img(
118
+ i = 'foo.png',
119
+ css_class = '',
120
+ the_id = '',
121
+ css_style = ''
122
+ )
123
+ HtmlTags.img(i, css_class, the_id, css_style)
124
+ end
125
+
126
+ end
127
+
128
+ if __FILE__ == $PROGRAM_NAME
129
+ # You could also include HtmlTags, then just use img() directly.
130
+ # include HtmlTags
131
+ puts HtmlTags.img(
132
+ "studium/MASTER.png",
133
+ css_style: 'margin-left:6px'
134
+ )
135
+ end
@@ -0,0 +1,96 @@
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.input
12
+ #
13
+ # Take note that the input to this method can include fairly complex
14
+ # variants, as shown by the following example:
15
+ #
16
+ # HtmlTags.input(type: :submit, value: 'Create Article')
17
+ #
18
+ # Here 'Create Article' will be the text that is shown as content of
19
+ # the input-tag.
20
+ # ========================================================================= #
21
+ def self.input(
22
+ css_class = '',
23
+ the_id = '',
24
+ css_style = '',
25
+ javascript_code = '',
26
+ &block
27
+ )
28
+ string = ''.dup
29
+ if css_class.is_a? Hash
30
+ _ = css_class
31
+ # ===================================================================== #
32
+ # === :type
33
+ # ===================================================================== #
34
+ if _.has_key? :type
35
+ string << 'type="'+css_class.delete(:type).to_s+'" '
36
+ end
37
+ # ===================================================================== #
38
+ # === :value
39
+ #
40
+ # The "value" is actually the content of the input-tag.
41
+ # ===================================================================== #
42
+ if _.has_key? :value
43
+ string << 'value="'+css_class.delete(:value).to_s+'" '
44
+ end
45
+ # ===================================================================== #
46
+ # === :javascript
47
+ # ===================================================================== #
48
+ if _.has_key? :javascript
49
+ javascript_code = css_class.delete(:javascript)
50
+ end
51
+ # ===================================================================== #
52
+ # === :css_class
53
+ #
54
+ # This must come last, as it may modify the css_class variable.
55
+ # ===================================================================== #
56
+ if _.has_key? :css_class
57
+ css_class = css_class.delete(:css_class)
58
+ end
59
+ end
60
+ full_tag = opening_tag(
61
+ __method__,
62
+ css_class,
63
+ the_id,
64
+ css_style,
65
+ javascript_code,
66
+ &block
67
+ )
68
+ full_tag[ full_tag.rindex('>'), 0] = " #{string.rstrip}" unless string.empty?
69
+ return HtmlTags.add(full_tag).strip
70
+ end; self.instance_eval { alias entry input } # === HtmlTags.entry
71
+
72
+ # ========================================================================= #
73
+ # === input
74
+ # ========================================================================= #
75
+ def input(
76
+ css_class = '',
77
+ the_id = '',
78
+ css_style = '',
79
+ javascript_code = '',
80
+ &block
81
+ )
82
+ return HtmlTags.input(
83
+ css_class,
84
+ the_id,
85
+ css_style,
86
+ javascript_code
87
+ )
88
+ end
89
+
90
+ end
91
+
92
+ if __FILE__ == $PROGRAM_NAME
93
+ alias e puts
94
+ include HtmlTags
95
+ e HtmlTags.input(type: :submit, value: 'Create Article')
96
+ end