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