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,59 @@
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.title (title tag)
12
+ # ========================================================================= #
13
+ def self.title(
14
+ i = '',
15
+ &block
16
+ )
17
+ # ======================================================================= #
18
+ # === Handle blocks given to this method next
19
+ # ======================================================================= #
20
+ if block_given?
21
+ yielded = yield
22
+ case yielded
23
+ # ===================================================================== #
24
+ # === :newline
25
+ # ===================================================================== #
26
+ when :newline
27
+ i = "#{i}\n"
28
+ end
29
+ end
30
+ i = i.to_s
31
+ return HtmlTags.add(
32
+ opening_tag(__method__)+
33
+ i+
34
+ close(__method__)
35
+ )
36
+ end
37
+
38
+ # ========================================================================= #
39
+ # === title
40
+ # ========================================================================= #
41
+ def title(
42
+ i = '',
43
+ &block
44
+ )
45
+ return HtmlTags.title(
46
+ i,
47
+ css_class,
48
+ the_id,
49
+ css_style,
50
+ &block
51
+ )
52
+ end
53
+
54
+ end
55
+
56
+ if __FILE__ == $PROGRAM_NAME
57
+ alias e puts
58
+ e HtmlTags.title('Just a random title.')
59
+ end
@@ -0,0 +1,50 @@
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.tr
12
+ # ========================================================================= #
13
+ def self.tr(
14
+ i = '',
15
+ css_class = '',
16
+ the_id = '',
17
+ css_style = ''
18
+ )
19
+ return HtmlTags.add(
20
+ opening_tag(__method__, css_class, the_id, css_style)+
21
+ i.to_s+"\n"+
22
+ close(__method__)
23
+ )
24
+ end
25
+
26
+ # ========================================================================= #
27
+ # === tr
28
+ # ========================================================================= #
29
+ def tr(
30
+ i = '',
31
+ css_class = '',
32
+ the_id = '',
33
+ css_style = '',
34
+ &block
35
+ )
36
+ return HtmlTags.tr(
37
+ i,
38
+ css_class,
39
+ the_id,
40
+ css_style,
41
+ &block
42
+ )
43
+ end
44
+
45
+ end
46
+
47
+ if __FILE__ == $PROGRAM_NAME
48
+ alias e puts
49
+ e HtmlTags.tr("<th>Month</th>\n<th>Savings</th>")
50
+ end
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/individual_tags/track.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.track
14
+ #
15
+ # This method should yield a String such as:
16
+ #
17
+ # <track src="fgsubtitles_en.vtt" kind="subtitles" srclang="en" label="English">
18
+ #
19
+ # ========================================================================= #
20
+ def self.track(
21
+ src = 'fgsubtitles_en.vtt',
22
+ kind = 'subtitles',
23
+ srclang = 'en',
24
+ label = 'English'
25
+ )
26
+ _ = opening_tag(__method__).dup
27
+ if src
28
+ _[-2,0] = ' src="'+src+'"'
29
+ end
30
+ if kind
31
+ _[-2,0] = ' kind="'+kind+'"'
32
+ end
33
+ if srclang
34
+ _[-2,0] = ' srclang="'+srclang+'"'
35
+ end
36
+ if label
37
+ _[-2,0] = ' label="'+label+'"'
38
+ end
39
+ return HtmlTags.add(_)
40
+ end
41
+
42
+ # ========================================================================= #
43
+ # === track
44
+ # ========================================================================= #
45
+ def track(
46
+ src = 'fgsubtitles_en.vtt',
47
+ kind = 'subtitles',
48
+ srclang = 'en',
49
+ label = 'English'
50
+ )
51
+ return HtmlTags.track(src, kind, srclang, label)
52
+ end
53
+
54
+ end
55
+
56
+ if __FILE__ == $PROGRAM_NAME
57
+ alias e puts
58
+ e HtmlTags.track('fgsubtitles_en.vtt','subtitles','en','English')
59
+ 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.u
12
+ # ========================================================================= #
13
+ def self.u(
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
+ # === u
25
+ # ========================================================================= #
26
+ def u(
27
+ i = '',
28
+ css_class = '',
29
+ the_id = '',
30
+ css_style = '',
31
+ &block
32
+ )
33
+ return HtmlTags.u(
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.u('foobar')
47
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module HtmlTags
6
+
7
+ # ========================================================================= #
8
+ # === ul
9
+ # ========================================================================= #
10
+ def ul(
11
+ i = '', css_class = '', the_id = '', css_style = ''
12
+ )
13
+ _ = ''.dup
14
+ _ << yield if block_given?
15
+ return HtmlTags.add(
16
+ opening_tag(__method__, css_class, the_id, css_style)+
17
+ _+
18
+ i.to_s+
19
+ close(__method__)
20
+ )
21
+ end
22
+
23
+ end
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/individual_tags/var.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.var
15
+ # ========================================================================= #
16
+ def self.var(
17
+ i = 'foo.png',
18
+ css_class = '',
19
+ the_id = '',
20
+ css_style = ''
21
+ )
22
+ return HtmlTags.add(
23
+ opening_tag(__method__, css_class, the_id, css_style)+
24
+ i.to_s+
25
+ close(__method__)
26
+ )
27
+ end
28
+
29
+ # ========================================================================= #
30
+ # === var
31
+ # ========================================================================= #
32
+ def var(
33
+ i = 'foo.png',
34
+ css_class = '',
35
+ the_id = '',
36
+ css_style = ''
37
+ )
38
+ ::HtmlTags.var(i, css_class, the_id, css_style)
39
+ end
40
+
41
+ end
42
+
43
+ if __FILE__ == $PROGRAM_NAME
44
+ alias e puts
45
+ e HtmlTags.var('x') # should yield: <var>x</var>
46
+ end
@@ -0,0 +1,70 @@
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
+ # === video (video tag)
12
+ #
13
+ # The goal of this method is to create a String such as
14
+ # '<video src="movie.webm"></video>'.
15
+ #
16
+ # To start a video automatically the "autoplay" attribute can be
17
+ # used.
18
+ # ========================================================================= #
19
+ def video(
20
+ i = '', # ← This is the content.
21
+ css_class = '',
22
+ the_id = '',
23
+ css_style = '',
24
+ optional_javascript = '',
25
+ &block
26
+ )
27
+ if i.is_a? Hash
28
+ # ===================================================================== #
29
+ # === :css_class
30
+ # ===================================================================== #
31
+ if i.has_key? :css_class
32
+ css_class = i.delete(:css_class)
33
+ end
34
+ i = ''
35
+ end
36
+ i = i.to_s.dup # And avoid frozen-errors.
37
+ video_tag = opening_tag(__method__, css_class, the_id, css_style, optional_javascript).dup
38
+ video_tag[-2,0] = ' controls'
39
+ # ======================================================================= #
40
+ # Blocks will be assumed to be used for the first argument, `i`, by
41
+ # default - except for some Symbols.
42
+ # ======================================================================= #
43
+ if block_given?
44
+ yielded = yield
45
+ case yielded # Past this point we handle special Symbols, such as :autoplay.
46
+ # ===================================================================== #
47
+ # === :autoplay
48
+ # ===================================================================== #
49
+ when :autoplay
50
+ video_tag[-2,0] = ' autoplay'
51
+ else
52
+ yielded = yielded.to_s
53
+ i << yielded
54
+ end
55
+ end
56
+ return HtmlTags.add(
57
+ video_tag+
58
+ "<source src=\"#{i}\">"+
59
+ close(__method__)
60
+ )
61
+ end
62
+
63
+ end
64
+
65
+ if __FILE__ == $PROGRAM_NAME
66
+ alias e puts
67
+ include HtmlTags
68
+ e video 'foobar.mp4'
69
+ e video('foobar.mp4') { :autoplay }
70
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'html_tags'
@@ -0,0 +1,288 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/opening_tag/opening_tag.rb'
6
+ # =========================================================================== #
7
+ module HtmlTags
8
+
9
+ begin
10
+ require 'web_object/requires/require_web_images.rb'
11
+ rescue LoadError; end
12
+
13
+ require 'html_tags/array_registered_html_tags.rb'
14
+ require 'html_tags/closing_tag/closing_tag.rb'
15
+
16
+ # ========================================================================= #
17
+ # === HtmlTags.opening_tag (opening_tag tag)
18
+ #
19
+ # If we pass a block to this method, we treat it as a special hash.
20
+ #
21
+ # This can be used to make use of src.
22
+ #
23
+ # Note that arguments to this method can become quite complicated.
24
+ #
25
+ # For instance, consider this here:
26
+ #
27
+ # e p 'Good Bye', :css_class => 'border: 1px solid red',
28
+ # :id => 'goodbye'
29
+ #
30
+ # ========================================================================= #
31
+ def self.opening_tag(
32
+ i, # The name of the tag comes here.
33
+ optional_css_class = '', # 2nd parameter
34
+ optional_the_id = '', # 3rd parameter
35
+ optional_css_style = '', # 4th parameter
36
+ optional_javascript = '', # 5th parameter
37
+ &block
38
+ )
39
+ append_newline = true
40
+ i = i.to_s.dup # Must use .dup here, to prevent cascading string-taint.
41
+ original_tag_name = i.to_s.dup
42
+ case i
43
+ when 's','' # Sanitize in these two cases.
44
+ i = 'span'
45
+ end
46
+ content = ''.dup # This here will be appended always.
47
+ end_string = ''.dup
48
+ i = i.dup if i.frozen?
49
+ # ======================================================================= #
50
+ # === optional_css_class
51
+ #
52
+ # Next we must intercept when the second argument is a Hash.
53
+ # ======================================================================= #
54
+ if optional_css_class.is_a? Hash
55
+ # ===================================================================== #
56
+ # === :id
57
+ # ===================================================================== #
58
+ if optional_css_class.has_key? :id
59
+ optional_the_id = optional_css_class.delete(:id)
60
+ end
61
+ # ===================================================================== #
62
+ # === :css_style
63
+ # ===================================================================== #
64
+ if optional_css_class.has_key? :css_style
65
+ optional_css_style = optional_css_class.delete(:css_style)
66
+ # ===================================================================== #
67
+ # === :style
68
+ # ===================================================================== #
69
+ elsif optional_css_class.has_key? :style
70
+ optional_css_style = optional_css_class.delete(:style)
71
+ end
72
+ # ===================================================================== #
73
+ # Intercept javascript keys. Several aliases could be used, so
74
+ # we have to check for them.
75
+ # ===================================================================== #
76
+ if optional_css_class.has_key? :javascript
77
+ optional_javascript = optional_css_class.delete(:javascript)
78
+ elsif optional_css_class.has_key? :javascript_code
79
+ optional_javascript = optional_css_class.delete(:javascript_code)
80
+ elsif optional_css_class.has_key? :desc
81
+ content << optional_css_class.delete(:desc).to_s
82
+ end
83
+ if optional_css_class.has_key? :css_class # This here must come last.
84
+ optional_css_class = optional_css_class.delete(:css_class).to_s.dup
85
+ elsif optional_css_class.has_key? :title
86
+ i << ' title="'+optional_css_class.delete(:title).to_s+'"'
87
+ optional_css_class = ''
88
+ end
89
+ if optional_css_class.empty?
90
+ optional_css_class = ''
91
+ end if optional_css_class.is_a? Hash
92
+ end
93
+ # ======================================================================= #
94
+ # === optional_javascript
95
+ #
96
+ # Intercept optional_javascript if it is a Hash.
97
+ # ======================================================================= #
98
+ if optional_javascript.is_a? Hash
99
+ if optional_javascript.has_key? :on_click # Redirect
100
+ optional_javascript[:onclick] = optional_javascript.delete(:on_click)
101
+ end
102
+ if optional_javascript.has_key? :onclick
103
+ js_temp_string = optional_javascript[:onclick].to_s
104
+ if js_temp_string.include? 'background-color'
105
+ optional_javascript = 'onclick="set_background_color('+
106
+ js_temp_string.gsub(/background-color\:/,'').delete(';')+
107
+ ', this)"'
108
+ elsif js_temp_string == 'go back in history' # Sanitize it.
109
+ optional_javascript = 'history.back(-1)'
110
+ end
111
+ elsif optional_javascript.has_key? :javascript_hover
112
+ # The following code works on:
113
+ # :javascript_hover => 'color: lightblue'
114
+ js_temp_string = optional_javascript[:javascript_hover].to_s
115
+ if js_temp_string.include? 'color'
116
+ optional_javascript = ' onmouseover="colourize(this, '+
117
+ js_temp_string.gsub(/color\:/,'').to_s.delete(' ')+')"'
118
+ end
119
+ end
120
+ # ======================================================================= #
121
+ # Next handle special String-input given to the javascript component.
122
+ # ======================================================================= #
123
+ elsif optional_javascript.is_a? String
124
+ if optional_javascript.include?('on_click:') # Input may be: 'on_click: show_image(:axe))'
125
+ if optional_javascript.frozen?
126
+ optional_javascript = optional_javascript.dup
127
+ end
128
+ optional_javascript.gsub!(/on_click: /, '')
129
+ if optional_javascript.include? 'show_image'
130
+ optional_javascript =~ /\((.+)\)/
131
+ optional_javascript = $1.to_s.dup.delete(')')
132
+ optional_javascript = WebObject.obtain(optional_javascript)
133
+ optional_javascript = 'onclick="reveal('+"'"+optional_javascript+"'"+')"'
134
+ end
135
+ end
136
+ end
137
+ # ======================================================================= #
138
+ # Next we require the four input-objects to be Strings.
139
+ # ======================================================================= #
140
+ optional_css_class = optional_css_class.to_s.dup
141
+ optional_the_id = optional_the_id.to_s
142
+ case optional_css_style
143
+ when :bold
144
+ # ===================================================================== #
145
+ # === Intercept key :bold next
146
+ #
147
+ # This is a special key in the sense that we will "translate" it
148
+ # into the corresponding CSS value. So :bold really just means
149
+ # to be replaced with the string 'font-weight: bold'.
150
+ # ===================================================================== #
151
+ optional_css_style = 'font-weight: bold;'
152
+ end
153
+ optional_css_style = optional_css_style.to_s
154
+ optional_javascript = optional_javascript.to_s
155
+
156
+ if optional_css_style.include? "\n" # Get rid of newlines and multiple ' '.
157
+ optional_css_style = beautify_string(optional_css_style)
158
+ end
159
+ # ======================================================================= #
160
+ # === Handle blocks next
161
+ #
162
+ # Intercept blocks passed to this method. Typically blocks will,
163
+ # in some form, be appended to the opening-tag at hand.
164
+ # ======================================================================= #
165
+ if block_given? # If we passed a block
166
+ yielded = yield # Tap into the block.
167
+ if yielded.is_a? Hash
168
+ # =================================================================== #
169
+ # === :src
170
+ # =================================================================== #
171
+ if yielded.has_key? :src
172
+ i << ' src="'+yielded.delete(:src).to_s+'"'
173
+ end
174
+ # =================================================================== #
175
+ # === :href
176
+ # =================================================================== #
177
+ if yielded.has_key? :href
178
+ i << ' href="'+yielded.delete(:href).to_s+'"'
179
+ end
180
+ # =================================================================== #
181
+ # === :type
182
+ # =================================================================== #
183
+ if yielded.has_key? :type
184
+ i << ' type="'+yielded.delete(:type).to_s+'"'
185
+ end
186
+ # =================================================================== #
187
+ # === :value
188
+ #
189
+ # This entry point should come after :type, as I think it looks
190
+ # a bit prettier that way.
191
+ # =================================================================== #
192
+ if yielded.has_key? :value
193
+ i << ' value="'+yielded.delete(:value).to_s+'"'
194
+ end
195
+ # =================================================================== #
196
+ # === :link_description or :description
197
+ # =================================================================== #
198
+ if yielded.has_key?(:link_description) or
199
+ yielded.has_key?(:description) or
200
+ yielded.has_key?(:content)
201
+ # if content.empty? # We only append to content if is empty. Disabled this in Jun 2015.
202
+ if yielded.has_key? :link_description
203
+ content << yielded.delete(:link_description).to_s
204
+ elsif yielded.has_key? :description
205
+ content << yielded.delete(:description).to_s
206
+ elsif yielded.has_key? :content
207
+ content << yielded.delete(:content).to_s
208
+ end
209
+ #end
210
+ # =================================================================== #
211
+ # === :desc
212
+ # =================================================================== #
213
+ elsif yielded.has_key? :desc
214
+ content << yielded.delete(:desc).to_s
215
+ end
216
+ # =================================================================== #
217
+ # === :make_newline
218
+ # =================================================================== #
219
+ if yielded.has_key? :make_newline
220
+ end_string << br
221
+ end
222
+ # ===================================================================== #
223
+ # === Handle Symbols directly past this point
224
+ # ===================================================================== #
225
+ elsif yielded.is_a? Symbol
226
+ case yielded
227
+ when :no_newline
228
+ append_newline = false
229
+ end
230
+ end
231
+ end
232
+ # ======================================================================= #
233
+ # Next, add the class, id, style, and javascript entries to our tag.
234
+ # ======================================================================= #
235
+ i << ' class="'+optional_css_class+'"' unless optional_css_class.empty?
236
+ i << ' id="'+optional_the_id+'"' unless optional_the_id.empty?
237
+ i << ' style="'+optional_css_style+'"' unless optional_css_style.empty?
238
+
239
+ unless optional_javascript.empty?
240
+ # ===================================================================== #
241
+ # Always prepend ' ' if it is not empty.
242
+ # ===================================================================== #
243
+ if optional_javascript.frozen?
244
+ optional_javascript = optional_javascript.dup
245
+ end
246
+ optional_javascript.prepend ' '
247
+ # ===================================================================== #
248
+ # Add some exceptions: currently the exceptions include
249
+ # "onclick" and "onmouse".
250
+ # ===================================================================== #
251
+ unless optional_javascript.strip.start_with?('onclick') or
252
+ optional_javascript.strip.start_with?('onmouse')
253
+ optional_javascript = 'javascript="'+optional_javascript+'"'
254
+ end
255
+ i << optional_javascript
256
+ end
257
+ # ======================================================================= #
258
+ # === Append '/' to a few tags.
259
+ # ======================================================================= #
260
+ if ARRAY_TAGS_WITHOUT_CLOSING_TAG.include? original_tag_name
261
+ i << '/' # Add exception for <br/> tags and some others.
262
+ end
263
+ i = "<#{i}>#{end_string}"
264
+ i = i.dup if i.frozen?
265
+ i << "\n" if append_newline
266
+ i << content
267
+ return i
268
+ end; self.instance_eval { alias otag opening_tag } # === HtmlTags.otag
269
+
270
+ # ========================================================================= #
271
+ # === opening_tag
272
+ # ========================================================================= #
273
+ def opening_tag(
274
+ i,
275
+ optional_css_class = '',
276
+ optional_the_id = '',
277
+ optional_css_style = '',
278
+ optional_javascript = ''
279
+ )
280
+ HtmlTags.opening_tag(i,
281
+ optional_css_class,
282
+ optional_the_id,
283
+ optional_css_style,
284
+ optional_javascript
285
+ )
286
+ end; alias otag opening_tag # === otag
287
+
288
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/project/project_base_directory.rb'
6
+ # =========================================================================== #
7
+ require 'yaml'
8
+
9
+ module HtmlTags
10
+
11
+ # ========================================================================= #
12
+ # === HtmlTags::PROJECT_BASE_DIRECTORY
13
+ # ========================================================================= #
14
+ PROJECT_BASE_DIRECTORY =
15
+ File.absolute_path("#{__dir__}/..")+'/'
16
+ PROJECT_BASE_DIR = PROJECT_BASE_DIRECTORY # === PROJECT_BASE_DIR
17
+
18
+ # ========================================================================= #
19
+ # === PROJECT_YAML_DIR
20
+ # ========================================================================= #
21
+ PROJECT_YAML_DIR = "#{PROJECT_BASE_DIRECTORY}yaml/"
22
+
23
+ end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'html_tags/requires/require_the_html_tags_project.rb'
6
+ # =========================================================================== #
7
+ require 'html_tags/base/base_module.rb'
8
+ require 'html_tags/html_tags.rb'
9
+ require 'html_tags/constants/misc.rb'