booklab-sml 0.2.1 → 0.2.2
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/README.md +9 -4
- data/lib/booklab/sml/renderer.rb +1 -1
- data/lib/booklab/sml/rules/base.rb +7 -2
- data/lib/booklab/sml/rules/list.rb +5 -3
- data/lib/booklab/sml/rules/video.rb +28 -0
- data/lib/booklab/sml/version.rb +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 185f05ba4b7c2f499267560d5f7d7a9afb090f2283815b8ec477491fe95b3589
|
4
|
+
data.tar.gz: 3266ed391058555f8d38a5551170199e751363e5d8f9c58ade854be4657f495a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcb794b686118b2879af4c8ffd9ede6e021c030051574364d68ece9eb5aa8b1e4ae60569441b0714097b2d32ac65b95e2ecb43b20316621c967a93855ec989b7
|
7
|
+
data.tar.gz: 15cdeff70e66a0572c240b991e39635178501cd44be16d35909c2e5853c2a8a6f87d0a45331fd52a0972cefe3c1b63c97fb2779c92b95779b9240488cb3b11f5
|
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# BookLab::SML
|
2
2
|
|
3
|
-
|
3
|
+
[](https://circleci.com/gh/huacnlee/booklab-sml/tree/master)
|
4
|
+
|
5
|
+
SML __(Slate markup language)__ is a rich text format for describe of the BookLab rich contents.
|
6
|
+
|
7
|
+
It base on [JsonML](http://jsonml.org) format, and including custom DSL.
|
4
8
|
|
5
9
|
## Usage
|
6
10
|
|
@@ -11,10 +15,11 @@ gem "booklab-sml"
|
|
11
15
|
and then run `bundle install`
|
12
16
|
|
13
17
|
```rb
|
14
|
-
$
|
15
|
-
$
|
16
|
-
=> <
|
18
|
+
$ sml = %(["p", { align: "center", indent: 1 }, "Hello world"])
|
19
|
+
$ BookLab::SML.parse(sml)
|
20
|
+
=> <p style="text-align: center; text-indent: 32px;">Hello world</p>
|
17
21
|
```
|
18
22
|
|
19
23
|
## License
|
24
|
+
|
20
25
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/lib/booklab/sml/renderer.rb
CHANGED
@@ -37,7 +37,7 @@ module BookLab::SML
|
|
37
37
|
prev_node = idx > 0 ? children[idx - 1] : nil
|
38
38
|
next_node = idx < children.length ? children[idx + 1] : nil
|
39
39
|
|
40
|
-
node_to_html(child,
|
40
|
+
node_to_html(child, prev: prev_node, next: next_node)
|
41
41
|
end.join("")
|
42
42
|
end
|
43
43
|
end
|
@@ -34,13 +34,18 @@ module BookLab::SML::Rules
|
|
34
34
|
if attrs[:indent]
|
35
35
|
style["text-indent"] = "#{4 * INDENT_PX}px"
|
36
36
|
end
|
37
|
-
props =
|
37
|
+
props = css_attrs(style)
|
38
38
|
return "" if props.strip.blank?
|
39
39
|
%( style="#{props}")
|
40
40
|
end
|
41
41
|
|
42
|
-
def self.
|
42
|
+
def self.css_attrs(style)
|
43
43
|
style.map { |k, v| "#{k}: #{v};" }.join(" ")
|
44
44
|
end
|
45
|
+
|
46
|
+
def self.html_attrs(attrs)
|
47
|
+
props = attrs.map { |k, v| v.present? ? %(#{k}="#{v}") : nil }.compact.join(" ")
|
48
|
+
%( #{props})
|
49
|
+
end
|
45
50
|
end
|
46
51
|
end
|
@@ -25,9 +25,9 @@ module BookLab::SML::Rules
|
|
25
25
|
level = attrs[:level] || 1
|
26
26
|
num = (attrs[:num] || 0) + 1
|
27
27
|
|
28
|
-
style_attrs = style_for_attrs(attrs,
|
28
|
+
style_attrs = style_for_attrs(attrs,
|
29
29
|
"padding-left": "#{indent_left * INDENT_PX}px"
|
30
|
-
|
30
|
+
)
|
31
31
|
|
32
32
|
wrap_tag = list_type == "bulleted" ? "ul" : "ol"
|
33
33
|
|
@@ -73,7 +73,9 @@ module BookLab::SML::Rules
|
|
73
73
|
li_item += "\n"
|
74
74
|
end
|
75
75
|
else
|
76
|
-
|
76
|
+
(level - 1 + 1).times do
|
77
|
+
li_item += "</li></#{wrap_tag}>"
|
78
|
+
end
|
77
79
|
end
|
78
80
|
|
79
81
|
outs << li_item
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BookLab::SML::Rules
|
4
|
+
class Video < Base
|
5
|
+
def self.match?(node)
|
6
|
+
tag_name(node) == "video"
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.to_html(node, opts = {})
|
10
|
+
attrs = attributes(node)
|
11
|
+
|
12
|
+
return "" if attrs[:src].blank?
|
13
|
+
|
14
|
+
video_attrs = html_attrs({
|
15
|
+
width: attrs[:width],
|
16
|
+
height: attrs[:height]
|
17
|
+
})
|
18
|
+
|
19
|
+
out = <<~HTML
|
20
|
+
<video controls preload="no"#{video_attrs}>
|
21
|
+
<source src="#{attrs[:src]}" type="#{attrs[:type]}">
|
22
|
+
</video>
|
23
|
+
HTML
|
24
|
+
|
25
|
+
out
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/booklab/sml/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: booklab-sml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Lee
|
@@ -52,7 +52,8 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description:
|
55
|
+
description: SML is a rich text format for describe of the BookLab rich contents,
|
56
|
+
base on [JsonML](http://jsonml.org).
|
56
57
|
email:
|
57
58
|
- huacnlee@gmail.com
|
58
59
|
executables: []
|
@@ -87,6 +88,7 @@ files:
|
|
87
88
|
- lib/booklab/sml/rules/td.rb
|
88
89
|
- lib/booklab/sml/rules/text.rb
|
89
90
|
- lib/booklab/sml/rules/tr.rb
|
91
|
+
- lib/booklab/sml/rules/video.rb
|
90
92
|
- lib/booklab/sml/utils.rb
|
91
93
|
- lib/booklab/sml/version.rb
|
92
94
|
homepage: https://github.com/huacnlee/booklab-sml
|
@@ -108,8 +110,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
110
|
- !ruby/object:Gem::Version
|
109
111
|
version: '0'
|
110
112
|
requirements: []
|
111
|
-
|
113
|
+
rubyforge_project:
|
114
|
+
rubygems_version: 2.7.8
|
112
115
|
signing_key:
|
113
116
|
specification_version: 4
|
114
|
-
summary: SML is a
|
117
|
+
summary: SML is a rich text format for describe of the BookLab rich contents.
|
115
118
|
test_files: []
|