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,107 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # See:
6
+ #
7
+ # https://www.w3schools.com/tags/tag_caption.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.caption
17
+ # ========================================================================= #
18
+ def self.caption(
19
+ i = '',
20
+ css_class = '',
21
+ the_id = '',
22
+ css_style = '',
23
+ optional_javascript = '',
24
+ &block
25
+ )
26
+ # ======================================================================= #
27
+ # === Handle Hashes first
28
+ # ======================================================================= #
29
+ if css_class.is_a? Hash
30
+ # ===================================================================== #
31
+ # === :css_style
32
+ # ===================================================================== #
33
+ if css_class.has_key? :css_style
34
+ css_style = css_class.delete(:css_style)
35
+ if css_class.is_a?(Hash) and css_class.empty?
36
+ css_class = ''
37
+ end
38
+ end
39
+ end
40
+ if i.is_a? Hash
41
+ # ===================================================================== #
42
+ # Next support elements such as:
43
+ # progress(css_class: 'default') {
44
+ # ===================================================================== #
45
+ if i.has_key? :css_class
46
+ css_class = i.delete(:css_class)
47
+ end
48
+ # ===================================================================== #
49
+ # === :id
50
+ # ===================================================================== #
51
+ if i.has_key? :id
52
+ the_id = i.delete(:id)
53
+ end
54
+ # ===================================================================== #
55
+ # === :css_style
56
+ # ===================================================================== #
57
+ if i.has_key? :css_style
58
+ css_style = i.delete(:css_style)
59
+ end
60
+ i = '' # For now, we remove this.
61
+ end
62
+ content = i.to_s.dup
63
+ unless content.end_with?('%')
64
+ if content =~ /\d+/
65
+ content << '%'
66
+ end
67
+ end
68
+ if block_given?
69
+ content << yield.to_s
70
+ end
71
+ # ======================================================================= #
72
+ # Looks better with a newline, in my opinion:
73
+ # ======================================================================= #
74
+ content << "\n" unless content.end_with? "\n"
75
+ return HtmlTags.add(
76
+ opening_tag(__method__, css_class, the_id, css_style, optional_javascript)+
77
+ content+
78
+ close(__method__)
79
+ )
80
+ end
81
+
82
+ # ========================================================================= #
83
+ # === caption
84
+ # ========================================================================= #
85
+ def caption(
86
+ i = '',
87
+ css_class = '',
88
+ the_id = '',
89
+ css_style = '',
90
+ javascript = nil
91
+ )
92
+ return HtmlTags.caption(
93
+ i,
94
+ css_class,
95
+ the_id,
96
+ css_style,
97
+ javascript_code,
98
+ &block
99
+ )
100
+ end
101
+
102
+ end
103
+
104
+ if __FILE__ == $PROGRAM_NAME
105
+ alias e puts
106
+ e HtmlTags.caption('My savings', css_style: 'text-align: right')
107
+ 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/cite.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.cite
14
+ # ========================================================================= #
15
+ def self.cite(
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
+ # === cite
54
+ # ========================================================================= #
55
+ def cite(
56
+ i = '',
57
+ css_class = '',
58
+ the_id = '',
59
+ css_style = '',
60
+ optional_javascript = '',
61
+ &block
62
+ )
63
+ return HtmlTags.cite(
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.cite('The Scream')
78
+ end
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/individual_tags/code.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.code
14
+ # ========================================================================= #
15
+ def self.code(
16
+ i = '',
17
+ css_class = '',
18
+ the_id = '',
19
+ css_style = '',
20
+ &block
21
+ )
22
+ # ======================================================================= #
23
+ # === Handle Hashes as input given
24
+ # ======================================================================= #
25
+ if i.is_a? Hash
26
+ # ===================================================================== #
27
+ # === :action
28
+ #
29
+ # :action is presently not implemented.
30
+ # ===================================================================== #
31
+ # if i.has_key? :action
32
+ # end
33
+ # ===================================================================== #
34
+ # === :css_style
35
+ # ===================================================================== #
36
+ if i.has_key? :css_style
37
+ css_style = i.delete(:css_style)
38
+ end
39
+ end
40
+ the_opening_tag = opening_tag(
41
+ __method__, css_class, the_id, css_style
42
+ )
43
+ # ======================================================================= #
44
+ # Next, add ad-hoc support for "id", "name" and "action".
45
+ # ======================================================================= #
46
+ if i.is_a? Hash
47
+ if i.has_key? :id
48
+ the_opening_tag[the_opening_tag.index('>'),0] = ' id="'+i.delete(:id).to_s+'"'
49
+ end
50
+ if i.has_key? :action
51
+ the_opening_tag[the_opening_tag.index('>'),0] = ' action="'+i.delete(:action).to_s+'"'
52
+ end
53
+ if i.has_key? :name
54
+ the_opening_tag[the_opening_tag.index('>'),0] = ' name="'+i.delete(:name).to_s+'"'
55
+ end
56
+ if i.has_key? :method
57
+ the_opening_tag[the_opening_tag.index('>'),0] = ' method="'+i.delete(:method).to_s+'"'
58
+ end
59
+ # ===================================================================== #
60
+ # Finally, if that hash is empty, turn it into an empty String.
61
+ # ===================================================================== #
62
+ if i.is_a?(Hash) and i.empty?
63
+ i = ''.dup
64
+ end
65
+ end
66
+ # ======================================================================= #
67
+ # Past the next step, the variable `i` will be guaranted to be a String.
68
+ # ======================================================================= #
69
+ i = i.to_s
70
+ if block_given?
71
+ yielded = "#{yield}"
72
+ i << yielded
73
+ end
74
+ return HtmlTags.add(
75
+ the_opening_tag+
76
+ i+
77
+ close(__method__)
78
+ )
79
+ end
80
+
81
+ # ========================================================================= #
82
+ # === code
83
+ # ========================================================================= #
84
+ def code(
85
+ i = '',
86
+ css_class = '',
87
+ the_id = '',
88
+ css_style = '',
89
+ &block
90
+ )
91
+ return HtmlTags.code(
92
+ i,
93
+ css_class = '',
94
+ the_id = '',
95
+ css_style = '',
96
+ &block
97
+ )
98
+ end
99
+
100
+ end
101
+
102
+ if __FILE__ == $PROGRAM_NAME
103
+ alias e puts
104
+ e HtmlTags.code('button')
105
+ end
@@ -0,0 +1,112 @@
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.del
13
+ #
14
+ # The <del> tag is used to identify text that has been deleted from
15
+ # a document but retained to show the history of modifications made
16
+ # to the document. Pair a <del> element with an <ins> element to
17
+ # identify the inserted text that replaced the deleted text.
18
+ #
19
+ # A complete example for how <del> is normally used follows:
20
+ #
21
+ # <p>My favorite colour is <del>blue</del> <ins>red</ins>.</p>
22
+ #
23
+ # ========================================================================= #
24
+ def self.del(
25
+ i = '',
26
+ css_class = '',
27
+ the_id = '',
28
+ css_style = '',
29
+ javascript = '',
30
+ &block
31
+ )
32
+ the_opening_tag = nil
33
+ # ======================================================================= #
34
+ # === Handle blocks next
35
+ # ======================================================================= #
36
+ if block_given?
37
+ yielded = yield
38
+ if i.is_a?(String) and i.empty?
39
+ i = { text: i }
40
+ i.update(yielded)
41
+ end
42
+ end
43
+ if i.is_a? Hash
44
+ # ===================================================================== #
45
+ # === :css_class
46
+ # ===================================================================== #
47
+ if i.has_key? :css_class
48
+ css_class = i.delete(:css_class)
49
+ end
50
+ # ===================================================================== #
51
+ # === :id
52
+ # ===================================================================== #
53
+ if i.has_key? :id
54
+ the_id = i.delete(:id)
55
+ # ===================================================================== #
56
+ # === :the_id
57
+ # ===================================================================== #
58
+ elsif i.has_key? :the_id
59
+ the_id = i.delete(:the_id)
60
+ end
61
+ # ===================================================================== #
62
+ # === :text
63
+ #
64
+ # This should come last as it nullifies the variable i.
65
+ # ===================================================================== #
66
+ if i.has_key? :text
67
+ i = i.delete(:text).to_s
68
+ end
69
+ end
70
+ # ======================================================================= #
71
+ # === the_opening_tag
72
+ #
73
+ # We have to get a reference to the opening tag early on, so that we
74
+ # can add e. g. "onClick" to it.
75
+ # ======================================================================= #
76
+ if the_opening_tag.nil?
77
+ the_opening_tag = opening_tag(__method__, css_class, the_id, css_style, javascript) { :no_newline }
78
+ end
79
+ return HtmlTags.add(
80
+ the_opening_tag+
81
+ i.to_s+
82
+ close(__method__)
83
+ )
84
+ end
85
+
86
+ # ========================================================================= #
87
+ # === del
88
+ # ========================================================================= #
89
+ def del(
90
+ i = '',
91
+ css_class = '',
92
+ the_id = '',
93
+ css_style = '',
94
+ javascript = '',
95
+ &block
96
+ )
97
+ ::HtmlTags.del(
98
+ i,
99
+ css_class,
100
+ the_id,
101
+ css_style,
102
+ javascript,
103
+ &block
104
+ )
105
+ end
106
+
107
+ end
108
+
109
+ if __FILE__ == $PROGRAM_NAME
110
+ alias e puts
111
+ e 'This cat '+HtmlTags.del('abc def ghi')+' is a super cat.'
112
+ end
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/individual_tags/details.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.details
14
+ #
15
+ # More information about this tag can be seen here:
16
+ #
17
+ # https://www.w3schools.com/tags/tag_details.asp
18
+ #
19
+ # ========================================================================= #
20
+ def self.details(
21
+ i = '',
22
+ css_class = '',
23
+ the_id = '',
24
+ css_style = '',
25
+ optional_javascript = '',
26
+ &block
27
+ )
28
+ # ======================================================================= #
29
+ # === Handle Hashes first
30
+ # ======================================================================= #
31
+ if css_class.is_a? Hash
32
+ # ===================================================================== #
33
+ # === :css_style
34
+ # ===================================================================== #
35
+ if css_class.has_key? :css_style
36
+ css_style = css_class.delete(:css_style)
37
+ if css_class.is_a?(Hash) and css_class.empty?
38
+ css_class = ''
39
+ end
40
+ end
41
+ end
42
+ content = i.to_s.dup
43
+ if block_given?
44
+ content << yield.to_s
45
+ end
46
+ return HtmlTags.add(
47
+ opening_tag(__method__, css_class, the_id, css_style, optional_javascript)+
48
+ content+
49
+ close(__method__)
50
+ )
51
+ end
52
+
53
+ # ========================================================================= #
54
+ # === details
55
+ # ========================================================================= #
56
+ def details(
57
+ i = '',
58
+ css_class = '',
59
+ the_id = '',
60
+ css_style = '',
61
+ optional_javascript = '',
62
+ &block
63
+ )
64
+ return HtmlTags.details(
65
+ i,
66
+ css_class,
67
+ the_id,
68
+ css_style,
69
+ javascript_code,
70
+ &block
71
+ )
72
+ end
73
+
74
+ end
75
+
76
+ if __FILE__ == $PROGRAM_NAME
77
+ alias e puts
78
+ e HtmlTags.details('Hey there')
79
+ end
@@ -0,0 +1,108 @@
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.dialog
12
+ # ========================================================================= #
13
+ def self.dialog(
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
+ # dialog(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
+ if block_given?
59
+ content << yield.to_s
60
+ end
61
+ # ======================================================================= #
62
+ # Looks better with a newline, in my opinion:
63
+ # ======================================================================= #
64
+ content << "\n" unless content.end_with? "\n"
65
+ return HtmlTags.add(
66
+ opening_tag(__method__, css_class, the_id, css_style, optional_javascript)+
67
+ content+
68
+ close(__method__)
69
+ )
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === dialog
74
+ #
75
+ # This method will make a html <dialog> tag.
76
+ #
77
+ # Invocation example:
78
+ #
79
+ # HtmlTags.dialog(i = '', css_class = '', the_id = '', css_style = '')
80
+ #
81
+ # ========================================================================= #
82
+ def dialog(
83
+ i = '',
84
+ css_class = '',
85
+ the_id = '',
86
+ css_style = '',
87
+ javascript = nil
88
+ )
89
+ return HtmlTags.dialog(
90
+ i,
91
+ css_class,
92
+ the_id,
93
+ css_style,
94
+ javascript_code,
95
+ &block
96
+ )
97
+ end
98
+
99
+ end
100
+
101
+ if __FILE__ == $PROGRAM_NAME
102
+ alias e puts
103
+ e HtmlTags.dialog('<p>Greetings, one and all!</p>
104
+ <form method="dialog">
105
+ <button>OK</button>
106
+ </form>'
107
+ )
108
+ end
@@ -0,0 +1,99 @@
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.div
12
+ # ========================================================================= #
13
+ def self.div(
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
+ # div(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
+ if block_given?
59
+ content << yield.to_s
60
+ end
61
+ # ======================================================================= #
62
+ # Looks better with a newline, in my opinion:
63
+ # ======================================================================= #
64
+ content << "\n" unless content.end_with? "\n"
65
+ return HtmlTags.add(
66
+ opening_tag(__method__, css_class, the_id, css_style, optional_javascript)+
67
+ content+
68
+ close(__method__)
69
+ )
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === div
74
+ #
75
+ # This method will make a html <div> tag.
76
+ #
77
+ # Invocation example:
78
+ #
79
+ # HtmlTags.div(i = '', css_class = '', the_id = '', css_style = '')
80
+ #
81
+ # ========================================================================= #
82
+ def div(
83
+ i = '',
84
+ css_class = '',
85
+ the_id = '',
86
+ css_style = '',
87
+ javascript = nil
88
+ )
89
+ return HtmlTags.div(
90
+ i,
91
+ css_class,
92
+ the_id,
93
+ css_style,
94
+ javascript_code,
95
+ &block
96
+ )
97
+ end
98
+
99
+ end