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,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