dhtml 0.1.3
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +25 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +28 -0
- data/LICENSE.txt +21 -0
- data/README.md +111 -0
- data/dhtml.gemspec +36 -0
- data/lib/dhtml/document.rb +158 -0
- data/lib/dhtml/opal.rb +7 -0
- data/lib/dhtml/version.rb +9 -0
- data/lib/dhtml.rb +159 -0
- metadata +58 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0d19e6ad8effeadc4ba60d79a1df5cc0a66ca25e7c8f75f513e73faf439abccf
|
4
|
+
data.tar.gz: 42e1449cda9a9874bd36bb0b261537c4f147b2af56b0e26aba742b231297332f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f26aaa41af798393b2865477d742bf59c9723dc3714d43e1f2e7c463c8465801c7947c1cc33b45671e05ef68f63bff1f7db5e684cbd50720d6df3f9cf18c286a
|
7
|
+
data.tar.gz: 07c3a590c080c087a543628db94fe171e16f7746f7863110c82b7a9a6aa18a55378d39abb95b64abd96b47251b94e25d3e0f3b4831d2f652431e8637b09d2152
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning].
|
5
|
+
|
6
|
+
## [Unreleased]
|
7
|
+
|
8
|
+
## [0.1.3] - 2021-05-10
|
9
|
+
### Fixed
|
10
|
+
- The gemspec no longer uses absolute paths for the sources.
|
11
|
+
|
12
|
+
## [0.1.2] - 2021-05-10
|
13
|
+
### Added
|
14
|
+
- `reset` method so the document can be generated more than once.
|
15
|
+
|
16
|
+
## [0.1.0] - 2021-05-10
|
17
|
+
- Initial release
|
18
|
+
|
19
|
+
|
20
|
+
[Unreleased]: https://github.com/hi5dev/dhtml/compare/v0.1.2...HEAD
|
21
|
+
[0.1.2]: https://github.com/hi5dev/dhtml/compare/v0.1.2..v0.1.0
|
22
|
+
[0.1.0]: https://github.com/hi5dev/dhtml/releases/tag/v0.1.0
|
23
|
+
|
24
|
+
[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
|
25
|
+
[Semantic Versioning]: https://semver.org/spec/v2.0.0.html
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
dhtml (0.1.3)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
ast (2.4.2)
|
10
|
+
minitest (5.14.2)
|
11
|
+
opal (1.1.1)
|
12
|
+
ast (>= 2.3.0)
|
13
|
+
parser (~> 3.0)
|
14
|
+
parser (3.0.1.1)
|
15
|
+
ast (~> 2.4.1)
|
16
|
+
rake (13.0.3)
|
17
|
+
|
18
|
+
PLATFORMS
|
19
|
+
x86_64-linux
|
20
|
+
|
21
|
+
DEPENDENCIES
|
22
|
+
dhtml!
|
23
|
+
minitest (~> 5.14)
|
24
|
+
opal (~> 1.0)
|
25
|
+
rake (~> 13.0)
|
26
|
+
|
27
|
+
BUNDLED WITH
|
28
|
+
2.2.16
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2021 Hi5 Development, LLC
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
# DHTML
|
2
|
+
|
3
|
+
A fast, simple, and elegant DSL for generating HTML using Ruby that is compatible with [Opal](https://opalrb.com/).
|
4
|
+
|
5
|
+
Here's an example:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
extend DHTML
|
9
|
+
|
10
|
+
doctype :html
|
11
|
+
|
12
|
+
html(lang: 'en') {
|
13
|
+
head {
|
14
|
+
meta charset: 'utf-8'
|
15
|
+
title { 'Example' }
|
16
|
+
link rel: 'stylesheet', href: 'style.css'
|
17
|
+
script src: 'main.js'
|
18
|
+
}
|
19
|
+
body {
|
20
|
+
div(id: 'main') {
|
21
|
+
_p { <<~TEXT }
|
22
|
+
Some of Ruby's internal methods would be overwritten if this library added a method for all the
|
23
|
+
HTML tags. To solve this, the alias for these methods begins with an underscore:
|
24
|
+
TEXT
|
25
|
+
|
26
|
+
ol {
|
27
|
+
li { code { '_p' } }
|
28
|
+
li { code { '_select' } }
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
puts read_html
|
35
|
+
```
|
36
|
+
|
37
|
+
## Proof of Concept
|
38
|
+
|
39
|
+
Using Ruby to generate HTML makes it possible to write modular, easily testable views. Here's a simple
|
40
|
+
example:
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
module Layout
|
44
|
+
include DHTML
|
45
|
+
|
46
|
+
def inner_body
|
47
|
+
end
|
48
|
+
|
49
|
+
def render
|
50
|
+
reset if document.length > 0
|
51
|
+
|
52
|
+
doctype :html
|
53
|
+
|
54
|
+
html do
|
55
|
+
head do
|
56
|
+
title { 'Proof of Concept' }
|
57
|
+
end
|
58
|
+
body do
|
59
|
+
inner_body
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
finish
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
class IndexPage
|
68
|
+
include Layout
|
69
|
+
|
70
|
+
def inner_body
|
71
|
+
h1 { 'It works!' }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
page = IndexPage.new
|
76
|
+
|
77
|
+
html = page.render
|
78
|
+
|
79
|
+
puts html.read
|
80
|
+
|
81
|
+
# => "<!doctype html><html><head><title>Proof of Concept</title></head><body><h1>It works!</h1></body></html>"
|
82
|
+
```
|
83
|
+
|
84
|
+
It's easy to see how that could be plugged into many Ruby web frameworks. Here's how the above example can work with
|
85
|
+
Rack:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
run -> (_env) do
|
89
|
+
[200, { Rack::CONTENT_TYPE => 'text/html' }, IndexPage.new.render]
|
90
|
+
end
|
91
|
+
```
|
92
|
+
|
93
|
+
## Development
|
94
|
+
|
95
|
+
A `Dockerfile` and Docker Compose configuration is provided to simplify the onboarding process. After cloning this
|
96
|
+
repository, all you have to do to get started is run the tests with:
|
97
|
+
|
98
|
+
$ docker-compose run test
|
99
|
+
|
100
|
+
You can log into the container with:
|
101
|
+
|
102
|
+
$ docker-compose run ruby ash
|
103
|
+
|
104
|
+
## Contributing
|
105
|
+
|
106
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/hi5dev/dhtml. Make sure to add your
|
107
|
+
contact information to `spec.authors` and `spec.email` in the gemspec file if you do contribute.
|
108
|
+
|
109
|
+
## License
|
110
|
+
|
111
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/dhtml.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/dhtml/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'dhtml'
|
7
|
+
spec.version = DHTML::VERSION
|
8
|
+
spec.authors = ['Travis Haynes']
|
9
|
+
spec.email = %w[travis@hi5dev.com]
|
10
|
+
|
11
|
+
spec.summary = 'A fast, simple, and elegant DSL for generating HTML using Ruby. Also compatible with Opal.'
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = 'https://www.hi5dev.com/dhtml'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.4.0')
|
17
|
+
|
18
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/hi5dev/dhtml'
|
20
|
+
spec.metadata['changelog_uri'] = 'https://github.com/hi5dev/dhtml/blob/base/CHANGELOG.md'
|
21
|
+
|
22
|
+
spec.files = %w[
|
23
|
+
CHANGELOG.md
|
24
|
+
dhtml.gemspec
|
25
|
+
Gemfile
|
26
|
+
Gemfile.lock
|
27
|
+
lib/dhtml.rb
|
28
|
+
lib/dhtml/document.rb
|
29
|
+
lib/dhtml/opal.rb
|
30
|
+
lib/dhtml/version.rb
|
31
|
+
LICENSE.txt
|
32
|
+
README.md
|
33
|
+
]
|
34
|
+
|
35
|
+
spec.require_paths = %w[lib]
|
36
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'stringio'
|
4
|
+
|
5
|
+
module DHTML
|
6
|
+
# Provides methods for generating HTML.
|
7
|
+
#
|
8
|
+
# @since 0.1.0
|
9
|
+
module Document
|
10
|
+
# Most commonly used HTML escape sequences.
|
11
|
+
#
|
12
|
+
# @type [Hash<String => String>]
|
13
|
+
# @since 0.1.0
|
14
|
+
ESCAPE_HTML = {
|
15
|
+
"'" => ''',
|
16
|
+
'"' => '"',
|
17
|
+
'&' => '&',
|
18
|
+
'/' => '/',
|
19
|
+
'<' => '<',
|
20
|
+
'>' => '>',
|
21
|
+
}
|
22
|
+
|
23
|
+
# Regular expression that matches the most common characters that need to be escaped in HTML strings.
|
24
|
+
#
|
25
|
+
# @type [Regexp]
|
26
|
+
# @since 0.1.0
|
27
|
+
ESCAPE_HTML_PATTERN = Regexp.union(*ESCAPE_HTML.keys)
|
28
|
+
|
29
|
+
# Writes the HTML doctype.
|
30
|
+
#
|
31
|
+
# @param [Symbol] type of document
|
32
|
+
# @return [Integer] number of bytes written to the document.
|
33
|
+
# @since 0.1.0
|
34
|
+
def doctype(type)
|
35
|
+
tag = case type
|
36
|
+
when :html3
|
37
|
+
%|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">|
|
38
|
+
when :html4
|
39
|
+
%|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">|
|
40
|
+
when :html4_framesets, :html4_fr
|
41
|
+
%|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">|
|
42
|
+
when :html4_transitional, :html4_tr
|
43
|
+
%|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">|
|
44
|
+
when :html5, :html
|
45
|
+
%|<!doctype html>|
|
46
|
+
else
|
47
|
+
fail ArgumentError, "unsupported doctype: #{type.inspect}"
|
48
|
+
end
|
49
|
+
|
50
|
+
document.write(tag)
|
51
|
+
end
|
52
|
+
|
53
|
+
# The document is written to this buffer.
|
54
|
+
#
|
55
|
+
# @return [StringIO]
|
56
|
+
# @since 0.1.0
|
57
|
+
def document
|
58
|
+
@document ||= StringIO.new
|
59
|
+
end
|
60
|
+
|
61
|
+
# Rewinds the document so it can be read.
|
62
|
+
#
|
63
|
+
# @return [StringIO]
|
64
|
+
# @since 0.1.0
|
65
|
+
def finish
|
66
|
+
document.tap(&:rewind)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Generates an HTML attribute (e.g. +class="form"+).
|
70
|
+
#
|
71
|
+
# @param [Symbol, String] name
|
72
|
+
# @param [Symbol, String] value
|
73
|
+
# @return [String]
|
74
|
+
# @since 0.1.0
|
75
|
+
def html_attribute(name, value)
|
76
|
+
[h(name.to_s), h(value.to_s).inspect].join('=')
|
77
|
+
end
|
78
|
+
|
79
|
+
# Generates a string of HTML attributes from a Hash.
|
80
|
+
#
|
81
|
+
# @param [Hash] attributes
|
82
|
+
# @return [String]
|
83
|
+
# @since 0.1.0
|
84
|
+
def html_attributes(attributes)
|
85
|
+
# noinspection RubyYardParamTypeMatch
|
86
|
+
attributes.inject([]) { _1 << html_attribute(_2[0], _2[1]) }.join(' ')
|
87
|
+
end
|
88
|
+
|
89
|
+
# Escape ampersands, brackets and quotes for HTML.
|
90
|
+
#
|
91
|
+
# @param [String] string to escape.
|
92
|
+
# @return [String] HTML escaped string.
|
93
|
+
# @since 0.1.0
|
94
|
+
def html_escape(string)
|
95
|
+
string.to_s.gsub(ESCAPE_HTML_PATTERN) { ESCAPE_HTML[_1] }
|
96
|
+
end
|
97
|
+
|
98
|
+
alias_method :h, :html_escape
|
99
|
+
|
100
|
+
# Reads the entire HTML document.
|
101
|
+
#
|
102
|
+
# @return [String]
|
103
|
+
# @since 0.1.0
|
104
|
+
def read_html
|
105
|
+
document.tap(&:rewind).read
|
106
|
+
end
|
107
|
+
|
108
|
+
# Clears all content from the document.
|
109
|
+
#
|
110
|
+
# @return [StringIO]
|
111
|
+
# @since 0.1.1
|
112
|
+
def reset
|
113
|
+
document.close
|
114
|
+
document.reopen
|
115
|
+
end
|
116
|
+
|
117
|
+
# Writes the opening element for the given HTML tag to the document.
|
118
|
+
#
|
119
|
+
# @!attribute [String] tag
|
120
|
+
# @!attribute [Hash] attributes
|
121
|
+
# @return [Integer] Number of bytes written to the stream.
|
122
|
+
# @since 0.1.0
|
123
|
+
def write_html_element(tag, attributes = {})
|
124
|
+
document << '<'
|
125
|
+
document << tag
|
126
|
+
document << " #{html_attributes(attributes)}" unless attributes.empty?
|
127
|
+
document << '>'
|
128
|
+
end
|
129
|
+
|
130
|
+
# Write a tag to the HTML document.
|
131
|
+
#
|
132
|
+
# @param [Symbol] tag name.
|
133
|
+
# @param [Hash] attributes for the tag.
|
134
|
+
# @param [Proc] inner_html to include in the tag.
|
135
|
+
# @return [void]
|
136
|
+
# @since 0.1.0
|
137
|
+
def write_html_tag(tag: __callee__, **attributes, &inner_html)
|
138
|
+
# Ensure the method isn't being called directly.
|
139
|
+
fail ArgumentError, 'invalid tag' if tag == :write_html_tag
|
140
|
+
|
141
|
+
# Remove the underscore prefix added to prevent conflicts with internal Ruby methods.
|
142
|
+
tag = tag.to_s
|
143
|
+
tag = tag[1..-1] if tag[0] == '_'
|
144
|
+
|
145
|
+
# Opening tag with its HTML attributes - e.g. <div id="main">
|
146
|
+
write_html_element(tag, attributes)
|
147
|
+
|
148
|
+
# Capture the inner HTML.
|
149
|
+
content = inner_html&.call(document)
|
150
|
+
|
151
|
+
# Write the inner HTML to the document when present.
|
152
|
+
document.write(content) if content.is_a?(String)
|
153
|
+
|
154
|
+
# Close the tag when necessary.
|
155
|
+
document.write("</#{tag}>") if content.is_a?(String) || block_given? || !void?(tag.to_sym)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
data/lib/dhtml/opal.rb
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Only continue when not running in Opal, and the gem is available.
|
4
|
+
return if RUBY_ENGINE == 'opal' || !defined?(Opal)
|
5
|
+
|
6
|
+
# Add the library to the Opal load path when it's available.
|
7
|
+
Opal.append_path File.expand_path(File.join('..', '..'), __FILE__)
|
data/lib/dhtml.rb
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'dhtml/document'
|
4
|
+
require_relative 'dhtml/opal'
|
5
|
+
require_relative 'dhtml/version'
|
6
|
+
|
7
|
+
# @since 0.1.0
|
8
|
+
module DHTML
|
9
|
+
include DHTML::Document
|
10
|
+
|
11
|
+
# List of tags that do not require a closing tag.
|
12
|
+
#
|
13
|
+
# @type [Array<Symbol>]
|
14
|
+
# @since 0.1.0
|
15
|
+
VOID_TAGS = %i[area audio base br col hr img input link meta param picture source video]
|
16
|
+
|
17
|
+
# @param [Symbol] tag
|
18
|
+
# @return [TrueClass, FalseClass]
|
19
|
+
# @since 0.1.0
|
20
|
+
def void?(tag)
|
21
|
+
VOID_TAGS.include?(tag)
|
22
|
+
end
|
23
|
+
|
24
|
+
if RUBY_ENGINE == 'opal'
|
25
|
+
# Opal does not support __callee__, so #alias_method is being overridden to provide implementation sufficient for
|
26
|
+
# this module.
|
27
|
+
#
|
28
|
+
# @param [Symbol] tag
|
29
|
+
# @return [Symbol] The name of the aliased method.
|
30
|
+
# @since 0.1.0
|
31
|
+
def self.alias_method(tag, _)
|
32
|
+
define_method(tag) do |**attributes, &block|
|
33
|
+
write_html_tag(tag: tag, **attributes, &block)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# An underscore is added to HTML tags that already have Ruby methods. This makes it both easy to remember, and to
|
39
|
+
# detect them in #write_html_tag.
|
40
|
+
begin
|
41
|
+
alias_method :_p, :write_html_tag
|
42
|
+
alias_method :_select, :write_html_tag
|
43
|
+
end
|
44
|
+
|
45
|
+
# The HTML tags are aliased to #write_html_tag, which uses reflection to determine which tag to generate.
|
46
|
+
begin
|
47
|
+
alias_method :a, :write_html_tag
|
48
|
+
alias_method :abbr, :write_html_tag
|
49
|
+
alias_method :address, :write_html_tag
|
50
|
+
alias_method :area, :write_html_tag
|
51
|
+
alias_method :article, :write_html_tag
|
52
|
+
alias_method :aside, :write_html_tag
|
53
|
+
alias_method :audio, :write_html_tag
|
54
|
+
alias_method :b, :write_html_tag
|
55
|
+
alias_method :base, :write_html_tag
|
56
|
+
alias_method :bdi, :write_html_tag
|
57
|
+
alias_method :bdo, :write_html_tag
|
58
|
+
alias_method :blockquote, :write_html_tag
|
59
|
+
alias_method :body, :write_html_tag
|
60
|
+
alias_method :br, :write_html_tag
|
61
|
+
alias_method :button, :write_html_tag
|
62
|
+
alias_method :canvas, :write_html_tag
|
63
|
+
alias_method :caption, :write_html_tag
|
64
|
+
alias_method :cite, :write_html_tag
|
65
|
+
alias_method :code, :write_html_tag
|
66
|
+
alias_method :col, :write_html_tag
|
67
|
+
alias_method :colgroup, :write_html_tag
|
68
|
+
alias_method :data, :write_html_tag
|
69
|
+
alias_method :datalist, :write_html_tag
|
70
|
+
alias_method :dd, :write_html_tag
|
71
|
+
alias_method :del, :write_html_tag
|
72
|
+
alias_method :details, :write_html_tag
|
73
|
+
alias_method :dfn, :write_html_tag
|
74
|
+
alias_method :dialog, :write_html_tag
|
75
|
+
alias_method :div, :write_html_tag
|
76
|
+
alias_method :dl, :write_html_tag
|
77
|
+
alias_method :dt, :write_html_tag
|
78
|
+
alias_method :em, :write_html_tag
|
79
|
+
alias_method :embed, :write_html_tag
|
80
|
+
alias_method :fieldset, :write_html_tag
|
81
|
+
alias_method :figcaption, :write_html_tag
|
82
|
+
alias_method :figure, :write_html_tag
|
83
|
+
alias_method :footer, :write_html_tag
|
84
|
+
alias_method :form, :write_html_tag
|
85
|
+
alias_method :h1, :write_html_tag
|
86
|
+
alias_method :h2, :write_html_tag
|
87
|
+
alias_method :h3, :write_html_tag
|
88
|
+
alias_method :h4, :write_html_tag
|
89
|
+
alias_method :h5, :write_html_tag
|
90
|
+
alias_method :h6, :write_html_tag
|
91
|
+
alias_method :head, :write_html_tag
|
92
|
+
alias_method :header, :write_html_tag
|
93
|
+
alias_method :hgroup, :write_html_tag
|
94
|
+
alias_method :hr, :write_html_tag
|
95
|
+
alias_method :html, :write_html_tag
|
96
|
+
alias_method :i, :write_html_tag
|
97
|
+
alias_method :iframe, :write_html_tag
|
98
|
+
alias_method :img, :write_html_tag
|
99
|
+
alias_method :input, :write_html_tag
|
100
|
+
alias_method :ins, :write_html_tag
|
101
|
+
alias_method :kbd, :write_html_tag
|
102
|
+
alias_method :label, :write_html_tag
|
103
|
+
alias_method :legend, :write_html_tag
|
104
|
+
alias_method :li, :write_html_tag
|
105
|
+
alias_method :link, :write_html_tag
|
106
|
+
alias_method :main, :write_html_tag
|
107
|
+
alias_method :map, :write_html_tag
|
108
|
+
alias_method :mark, :write_html_tag
|
109
|
+
alias_method :meta, :write_html_tag
|
110
|
+
alias_method :meter, :write_html_tag
|
111
|
+
alias_method :nav, :write_html_tag
|
112
|
+
alias_method :noscript, :write_html_tag
|
113
|
+
alias_method :object, :write_html_tag
|
114
|
+
alias_method :ol, :write_html_tag
|
115
|
+
alias_method :optgroup, :write_html_tag
|
116
|
+
alias_method :option, :write_html_tag
|
117
|
+
alias_method :output, :write_html_tag
|
118
|
+
alias_method :param, :write_html_tag
|
119
|
+
alias_method :picture, :write_html_tag
|
120
|
+
alias_method :pre, :write_html_tag
|
121
|
+
alias_method :progress, :write_html_tag
|
122
|
+
alias_method :q, :write_html_tag
|
123
|
+
alias_method :rb, :write_html_tag
|
124
|
+
alias_method :rp, :write_html_tag
|
125
|
+
alias_method :rt, :write_html_tag
|
126
|
+
alias_method :rtc, :write_html_tag
|
127
|
+
alias_method :ruby, :write_html_tag
|
128
|
+
alias_method :s, :write_html_tag
|
129
|
+
alias_method :samp, :write_html_tag
|
130
|
+
alias_method :script, :write_html_tag
|
131
|
+
alias_method :section, :write_html_tag
|
132
|
+
alias_method :slot, :write_html_tag
|
133
|
+
alias_method :small, :write_html_tag
|
134
|
+
alias_method :source, :write_html_tag
|
135
|
+
alias_method :span, :write_html_tag
|
136
|
+
alias_method :strong, :write_html_tag
|
137
|
+
alias_method :style, :write_html_tag
|
138
|
+
alias_method :sub, :write_html_tag
|
139
|
+
alias_method :summary, :write_html_tag
|
140
|
+
alias_method :sup, :write_html_tag
|
141
|
+
alias_method :table, :write_html_tag
|
142
|
+
alias_method :tbody, :write_html_tag
|
143
|
+
alias_method :td, :write_html_tag
|
144
|
+
alias_method :template, :write_html_tag
|
145
|
+
alias_method :textarea, :write_html_tag
|
146
|
+
alias_method :tfoot, :write_html_tag
|
147
|
+
alias_method :th, :write_html_tag
|
148
|
+
alias_method :thead, :write_html_tag
|
149
|
+
alias_method :time, :write_html_tag
|
150
|
+
alias_method :title, :write_html_tag
|
151
|
+
alias_method :tr, :write_html_tag
|
152
|
+
alias_method :track, :write_html_tag
|
153
|
+
alias_method :u, :write_html_tag
|
154
|
+
alias_method :ul, :write_html_tag
|
155
|
+
alias_method :var, :write_html_tag
|
156
|
+
alias_method :video, :write_html_tag
|
157
|
+
alias_method :wbr, :write_html_tag
|
158
|
+
end
|
159
|
+
end
|
metadata
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dhtml
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Travis Haynes
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-05-11 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A fast, simple, and elegant DSL for generating HTML using Ruby. Also
|
14
|
+
compatible with Opal.
|
15
|
+
email:
|
16
|
+
- travis@hi5dev.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- CHANGELOG.md
|
22
|
+
- Gemfile
|
23
|
+
- Gemfile.lock
|
24
|
+
- LICENSE.txt
|
25
|
+
- README.md
|
26
|
+
- dhtml.gemspec
|
27
|
+
- lib/dhtml.rb
|
28
|
+
- lib/dhtml/document.rb
|
29
|
+
- lib/dhtml/opal.rb
|
30
|
+
- lib/dhtml/version.rb
|
31
|
+
homepage: https://www.hi5dev.com/dhtml
|
32
|
+
licenses:
|
33
|
+
- MIT
|
34
|
+
metadata:
|
35
|
+
homepage_uri: https://www.hi5dev.com/dhtml
|
36
|
+
source_code_uri: https://github.com/hi5dev/dhtml
|
37
|
+
changelog_uri: https://github.com/hi5dev/dhtml/blob/base/CHANGELOG.md
|
38
|
+
post_install_message:
|
39
|
+
rdoc_options: []
|
40
|
+
require_paths:
|
41
|
+
- lib
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.4.0
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
requirements: []
|
53
|
+
rubygems_version: 3.2.16
|
54
|
+
signing_key:
|
55
|
+
specification_version: 4
|
56
|
+
summary: A fast, simple, and elegant DSL for generating HTML using Ruby. Also compatible
|
57
|
+
with Opal.
|
58
|
+
test_files: []
|