romantic_text 0.1.0 → 0.2.0
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 +4 -4
- data/.rubocop.yml +6 -0
- data/Gemfile.lock +1 -1
- data/README.md +10 -0
- data/lib/romantic_text.rb +1 -0
- data/lib/romantic_text/element.rb +26 -3
- data/lib/romantic_text/html_node.rb +13 -0
- data/lib/romantic_text/version.rb +1 -1
- data/romantic_text.gemspec +2 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8222be09ca5695fb0b4a0a09159af28de9ba5df2b3eed963a8f70516618c240f
|
4
|
+
data.tar.gz: '0093a3192ad344671d58066bd4ebb5da2f44e850705e451cd920fc9e59d74545'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a17f765f361d4bc4add24dd75fc456333d618ba541f83e5dc23347f09bab220d7e185bc3eca842739d2db07b522b915ddb43164e6d1f8c3271488819d48ee40f
|
7
|
+
data.tar.gz: 6f4097fa07228e33163c7a45b8cdd45c80f03aa4d333c50a29b2cd8f478aa8155cc9440ce39bb671dd0b2f71483fc8cf3421bb6fca90700be52cff43ffdbe390
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
- [Attributes](#attributes)
|
12
12
|
- [Shorthand id / class](#shorthand-id--class)
|
13
13
|
- [Escape HTML](#escape-html)
|
14
|
+
- [`>` syntax](#-syntax)
|
14
15
|
- [Use `h` method](#use-h-method)
|
15
16
|
- [Motivation](#motivation)
|
16
17
|
- [Contributing](#contributing)
|
@@ -110,6 +111,15 @@ end
|
|
110
111
|
html.to_s # => <div><script>alert(1)</script></div>
|
111
112
|
```
|
112
113
|
|
114
|
+
### `>` syntax
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
html = RomanticText.markup do
|
118
|
+
`table` > `tr` > `td`[class: 'red'] > 'item'
|
119
|
+
end
|
120
|
+
html.to_s # => <table><tr><td class="red">item</td></tr></table>
|
121
|
+
```
|
122
|
+
|
113
123
|
### Use `h` method
|
114
124
|
|
115
125
|
```ruby
|
data/lib/romantic_text.rb
CHANGED
@@ -7,10 +7,12 @@ module RomanticText
|
|
7
7
|
@attributes = pick_id_and_classes(subject)
|
8
8
|
merge_attributes!(attributes)
|
9
9
|
@children = []
|
10
|
+
@parent = nil
|
10
11
|
end
|
12
|
+
attr_accessor :parent
|
11
13
|
|
12
14
|
def `(name)
|
13
|
-
Element.new(name).tap { |e|
|
15
|
+
Element.new(name).tap { |e| append_child(e) }
|
14
16
|
end
|
15
17
|
|
16
18
|
def h(name, attributes = {}, &block)
|
@@ -18,13 +20,21 @@ module RomanticText
|
|
18
20
|
end
|
19
21
|
|
20
22
|
def <<(str)
|
21
|
-
|
23
|
+
append_child HTMLNode.new(Utils.escape(str))
|
22
24
|
end
|
23
25
|
alias_method :text, :<<
|
24
26
|
alias_method :_, :<<
|
25
27
|
|
28
|
+
def >(element_or_str)
|
29
|
+
unless element_or_str.is_a?(Element) || element_or_str.is_a?(HTMLNode)
|
30
|
+
element_or_str = HTMLNode.new(element_or_str)
|
31
|
+
end
|
32
|
+
append_child(element_or_str)
|
33
|
+
element_or_str
|
34
|
+
end
|
35
|
+
|
26
36
|
def dangerous_raw_html(str)
|
27
|
-
|
37
|
+
append_child HTMLNode.new(str.to_s)
|
28
38
|
end
|
29
39
|
|
30
40
|
def render(attributes = {}, &block)
|
@@ -41,6 +51,19 @@ module RomanticText
|
|
41
51
|
generate_tag(@name, @attributes, inner)
|
42
52
|
end
|
43
53
|
|
54
|
+
def append_child(element)
|
55
|
+
element.parent&.remove_child(element)
|
56
|
+
element.parent = self
|
57
|
+
@children.push(element)
|
58
|
+
end
|
59
|
+
|
60
|
+
def remove_child(element)
|
61
|
+
return unless @children.include?(element)
|
62
|
+
|
63
|
+
element.parent = nil
|
64
|
+
@children.delete(element)
|
65
|
+
end
|
66
|
+
|
44
67
|
private
|
45
68
|
|
46
69
|
def pick_element_name(subject)
|
data/romantic_text.gemspec
CHANGED
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ['lib']
|
23
23
|
|
24
|
+
spec.required_ruby_version = '>= 2.5.0'
|
25
|
+
|
24
26
|
spec.add_development_dependency 'bundler', '~> 1.17'
|
25
27
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
28
|
spec.add_development_dependency 'rubocop', '0.72.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: romantic_text
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ru_shalm
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- bin/setup
|
99
99
|
- lib/romantic_text.rb
|
100
100
|
- lib/romantic_text/element.rb
|
101
|
+
- lib/romantic_text/html_node.rb
|
101
102
|
- lib/romantic_text/utils.rb
|
102
103
|
- lib/romantic_text/version.rb
|
103
104
|
- romantic_text.gemspec
|
@@ -113,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
114
|
requirements:
|
114
115
|
- - ">="
|
115
116
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
117
|
+
version: 2.5.0
|
117
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
119
|
requirements:
|
119
120
|
- - ">="
|