embulk 0.6.2 → 0.6.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 +4 -4
- data/.travis.yml +1 -1
- data/bin/embulk +2 -2
- data/build.gradle +11 -2
- data/embulk-cli/src/main/java/org/embulk/cli/Main.java +0 -2
- data/embulk-core/build.gradle +1 -1
- data/embulk-core/src/main/java/org/embulk/command/Runner.java +10 -0
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +3 -2
- data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +1 -1
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +18 -6
- data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +14 -11
- data/embulk-core/src/main/java/org/embulk/spi/Column.java +5 -5
- data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +4 -4
- data/embulk-core/src/main/java/org/embulk/spi/Exec.java +6 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/Schema.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +148 -0
- data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +79 -0
- data/embulk-docs/build.gradle +5 -1
- data/embulk-docs/src/customization.rst +184 -0
- data/embulk-docs/src/index.rst +10 -1
- data/embulk-docs/src/release.rst +1 -0
- data/embulk-docs/src/release/release-0.6.3.rst +23 -0
- data/lib/embulk/command/embulk_run.rb +41 -3
- data/lib/embulk/data/new/gitignore.erb +1 -0
- data/lib/embulk/data/new/java/build.gradle.erb +20 -4
- data/lib/embulk/java/bootstrap.rb +2 -2
- data/lib/embulk/plugin.rb +1 -1
- data/lib/embulk/version.rb +1 -1
- data/test/helper.rb +7 -0
- metadata +8 -6
- data/embulk-docs/plugins/index.html.erb +0 -73
- data/embulk-docs/plugins/plugins.css +0 -148
@@ -26,15 +26,29 @@ task classpath(type: Copy, dependsOn: ["jar"]) {
|
|
26
26
|
from (configurations.runtime - configurations.provided + files(jar.archivePath))
|
27
27
|
into "classpath"
|
28
28
|
}
|
29
|
-
clean { delete
|
29
|
+
clean { delete "classpath" }
|
30
30
|
|
31
|
-
task gem(type: JRubyExec, dependsOn: ["
|
31
|
+
task gem(type: JRubyExec, dependsOn: ["gemspec", "classpath"]) {
|
32
32
|
jrubyArgs "-rrubygems/gem_runner", "-eGem::GemRunner.new.run(ARGV)", "build"
|
33
|
-
script "
|
33
|
+
script "${project.name}.gemspec"
|
34
34
|
doLast { ant.move(file: "${project.name}-${project.version}.gem", todir: "pkg") }
|
35
35
|
}
|
36
36
|
|
37
|
-
task
|
37
|
+
task gemPush(type: JRubyExec, dependsOn: ["gem"]) {
|
38
|
+
jrubyArgs "-rrubygems/gem_runner", "-eGem::GemRunner.new.run(ARGV)", "push"
|
39
|
+
script "${project.name}-${project.version}.gem"
|
40
|
+
}
|
41
|
+
|
42
|
+
task "package"(dependsOn: ["gemspec", "classpath"]) << {
|
43
|
+
println "> Build succeeded."
|
44
|
+
println "> You can run embulk with '-L ${file(".").absolutePath}' argument."
|
45
|
+
}
|
46
|
+
|
47
|
+
task gemspec {
|
48
|
+
ext.gemspecFile = file("${project.name}.gemspec")
|
49
|
+
inputs.file "build.gradle"
|
50
|
+
outputs.file gemspecFile
|
51
|
+
doLast { gemspecFile.write($/
|
38
52
|
Gem::Specification.new do |spec|
|
39
53
|
spec.name = "${project.name}"
|
40
54
|
spec.version = "${project.version}"
|
@@ -54,4 +68,6 @@ Gem::Specification.new do |spec|
|
|
54
68
|
spec.add_development_dependency 'rake', ['>= 10.0']
|
55
69
|
end
|
56
70
|
/$)
|
71
|
+
}
|
57
72
|
}
|
73
|
+
clean { delete "${project.name}.gemspec" }
|
@@ -5,13 +5,13 @@ module Embulk
|
|
5
5
|
|
6
6
|
module Injected
|
7
7
|
# Following constats are set by org.embulk.jruby.JRubyScriptingModule:
|
8
|
+
# Injector
|
8
9
|
# ModelManager
|
9
10
|
# BufferAllocator
|
10
11
|
end
|
11
12
|
|
12
13
|
def self.injector
|
13
|
-
|
14
|
-
Injector
|
14
|
+
Injected::Injector
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/embulk/plugin.rb
CHANGED
@@ -190,7 +190,7 @@ module Embulk
|
|
190
190
|
|
191
191
|
# TODO lookup should fallback to Java PluginSource
|
192
192
|
# if not found so that ruby plugins can call java plugins.
|
193
|
-
# call injector.newPlugin and wrap the instance in a reverse bridge object.
|
193
|
+
# call Java.injector.newPlugin and wrap the instance in a reverse bridge object.
|
194
194
|
|
195
195
|
def lookup(category, type)
|
196
196
|
@registries[category].lookup(type)
|
data/lib/embulk/version.rb
CHANGED
data/test/helper.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
|
3
|
+
classpath_dir = File.expand_path('../classpath', File.dirname(__FILE__))
|
4
|
+
jars = Dir.entries(classpath_dir).select {|f| f =~ /\.jar$/ }.sort
|
5
|
+
jars.each do |jar|
|
6
|
+
require File.join(classpath_dir, jar)
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'embulk/java/bootstrap'
|
3
10
|
require 'embulk'
|
4
11
|
|
5
12
|
# TODO simplecov
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -211,6 +211,7 @@ files:
|
|
211
211
|
- embulk-core/src/main/java/org/embulk/spi/type/Type.java
|
212
212
|
- embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java
|
213
213
|
- embulk-core/src/main/java/org/embulk/spi/type/Types.java
|
214
|
+
- embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java
|
214
215
|
- embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java
|
215
216
|
- embulk-core/src/main/java/org/embulk/spi/util/Decoders.java
|
216
217
|
- embulk-core/src/main/java/org/embulk/spi/util/Encoders.java
|
@@ -249,18 +250,18 @@ files:
|
|
249
250
|
- embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java
|
250
251
|
- embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java
|
251
252
|
- embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java
|
253
|
+
- embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java
|
252
254
|
- embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java
|
253
255
|
- embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java
|
254
256
|
- embulk-docs/Makefile
|
255
257
|
- embulk-docs/build.gradle
|
256
258
|
- embulk-docs/make.bat
|
257
|
-
- embulk-docs/plugins/index.html.erb
|
258
|
-
- embulk-docs/plugins/plugins.css
|
259
259
|
- embulk-docs/push-gh-pages.sh
|
260
260
|
- embulk-docs/src/_static/embulk-architecture.png
|
261
261
|
- embulk-docs/src/_static/embulk-logo.png
|
262
262
|
- embulk-docs/src/built-in.rst
|
263
263
|
- embulk-docs/src/conf.py
|
264
|
+
- embulk-docs/src/customization.rst
|
264
265
|
- embulk-docs/src/index.rst
|
265
266
|
- embulk-docs/src/recipe.rst
|
266
267
|
- embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst
|
@@ -291,6 +292,7 @@ files:
|
|
291
292
|
- embulk-docs/src/release/release-0.6.0.rst
|
292
293
|
- embulk-docs/src/release/release-0.6.1.rst
|
293
294
|
- embulk-docs/src/release/release-0.6.2.rst
|
295
|
+
- embulk-docs/src/release/release-0.6.3.rst
|
294
296
|
- embulk-standards/build.gradle
|
295
297
|
- embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java
|
296
298
|
- embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java
|
@@ -396,8 +398,8 @@ files:
|
|
396
398
|
- classpath/bval-jsr303-0.5.jar
|
397
399
|
- classpath/commons-beanutils-core-1.8.3.jar
|
398
400
|
- classpath/commons-lang3-3.1.jar
|
399
|
-
- classpath/embulk-core-0.6.
|
400
|
-
- classpath/embulk-standards-0.6.
|
401
|
+
- classpath/embulk-core-0.6.3.jar
|
402
|
+
- classpath/embulk-standards-0.6.3.jar
|
401
403
|
- classpath/guava-18.0.jar
|
402
404
|
- classpath/guice-3.0.jar
|
403
405
|
- classpath/guice-multibindings-3.0.jar
|
@@ -1,73 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
-
<head>
|
5
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
-
<title>List of Embulk Plugins by Category | Embulk</title>
|
7
|
-
<link rel="stylesheet" href="../docs/_static/haiku.css" type="text/css" />
|
8
|
-
<link rel="stylesheet" href="../docs/_static/pygments.css" type="text/css" />
|
9
|
-
<link rel="stylesheet" href="plugins.css" type="text/css" />
|
10
|
-
<link rel="top" title="Embulk 0.4 documentation" href="../docs/index.html" />
|
11
|
-
</head>
|
12
|
-
<body>
|
13
|
-
<div class="header"><h1 class="heading"><a href="../docs/index.html">
|
14
|
-
<span>Embulk plugins</span></a></h1>
|
15
|
-
<h2 class="heading"><span>Embulk plugins by category</span></h2>
|
16
|
-
</div>
|
17
|
-
|
18
|
-
<div class="content">
|
19
|
-
<div class="section">
|
20
|
-
<h1>List of Plugins by Category</h1>
|
21
|
-
|
22
|
-
<% categories.each do |category,gems| %>
|
23
|
-
<div class="section">
|
24
|
-
<h2 id="<%= category.gsub(/[^a-zA-Z0-9]/, '-') %>"><%= category.upcase %></h2>
|
25
|
-
<table class="plugins">
|
26
|
-
<thead>
|
27
|
-
<tr>
|
28
|
-
<th>Star</th>
|
29
|
-
<th>Name</th>
|
30
|
-
<th>Author</th>
|
31
|
-
<th>About</th>
|
32
|
-
<th>Download</th>
|
33
|
-
</tr>
|
34
|
-
</thead>
|
35
|
-
<tbody>
|
36
|
-
<% gems.each do |gem| %>
|
37
|
-
<tr>
|
38
|
-
<td style="width:80px">
|
39
|
-
<div class="github-btn-container">
|
40
|
-
<span class="github-btn" class="github-stargazers">
|
41
|
-
<a class="gh-btn" href="https://github.com/<%=e gem[:owner] %>/<%=e gem[:repo] %>" target="_blank">
|
42
|
-
<span class="gh-ico"></span>
|
43
|
-
<span class="gh-text">Star</span>
|
44
|
-
</a>
|
45
|
-
<a class="gh-count" href="https://github.com/<%=e gem[:owner] %>/<%=e gem[:repo] %>/stargazers" target="_blank" style="display: block"><%=h gem[:stargazers_count] %></a>
|
46
|
-
</span>
|
47
|
-
</div>
|
48
|
-
</td>
|
49
|
-
<td style="min-width:9em"><a href="<%=h gem[:url] %>"><%=h gem[:name] %></a><pre class="install">$ embulk gem install <%=h gem[:gem_name] %></pre></td>
|
50
|
-
<td style="min-width:13em"><%=h gem[:author] %>
|
51
|
-
<% if gem[:avatar_url] %>
|
52
|
-
<img src="<%=h gem[:avatar_url] %>" height=32 width=32></img>
|
53
|
-
<% else %>
|
54
|
-
</td>
|
55
|
-
<% end %>
|
56
|
-
<td><%=h gem[:info] %></td>
|
57
|
-
<td style="width:3em"><%=h gem[:downloads] %></td>
|
58
|
-
</tr>
|
59
|
-
<% end %>
|
60
|
-
</tbody>
|
61
|
-
</table>
|
62
|
-
</div>
|
63
|
-
<% end %>
|
64
|
-
|
65
|
-
</div>
|
66
|
-
</div>
|
67
|
-
|
68
|
-
<div class="footer">
|
69
|
-
© Copyright 2015, Embulk Project.
|
70
|
-
Created using <a href="https://github.com/embulk/plugin-crawler">Embulk plugin crawler</a>.
|
71
|
-
</div>
|
72
|
-
</body>
|
73
|
-
</html>
|
@@ -1,148 +0,0 @@
|
|
1
|
-
body {
|
2
|
-
max-width: 90em;
|
3
|
-
font-size: 105%;
|
4
|
-
}
|
5
|
-
.plugins {
|
6
|
-
border-collapse: collapse
|
7
|
-
}
|
8
|
-
.plugins th, td {
|
9
|
-
padding: 8px 20px;
|
10
|
-
border: 1px solid #eee;
|
11
|
-
vertical-align: middle;
|
12
|
-
}
|
13
|
-
.plugins pre.install {
|
14
|
-
font-size: 50%;
|
15
|
-
padding: 7px 0 2px 0;
|
16
|
-
margin: 0;
|
17
|
-
background: none;
|
18
|
-
border: none;
|
19
|
-
color: #999;
|
20
|
-
}
|
21
|
-
|
22
|
-
.github-btn-container {
|
23
|
-
padding: 0;
|
24
|
-
margin: 0;
|
25
|
-
font: bold 11px/14px "Helvetica Neue", Helvetica, Arial, sans-serif;
|
26
|
-
overflow: hidden;
|
27
|
-
color: black
|
28
|
-
}
|
29
|
-
.github-btn-container a {
|
30
|
-
color: black;
|
31
|
-
}
|
32
|
-
.github-btn-container a:hover {
|
33
|
-
text-decoration: none;
|
34
|
-
}
|
35
|
-
|
36
|
-
.github-btn {
|
37
|
-
height: 20px;
|
38
|
-
overflow: hidden;
|
39
|
-
}
|
40
|
-
.gh-btn,
|
41
|
-
.gh-count,
|
42
|
-
.gh-ico {
|
43
|
-
float: left;
|
44
|
-
}
|
45
|
-
.gh-btn,
|
46
|
-
.gh-count {
|
47
|
-
padding: 2px 5px 2px 4px;
|
48
|
-
color: #333;
|
49
|
-
text-decoration: none;
|
50
|
-
text-shadow: 0 1px 0 #fff;
|
51
|
-
white-space: nowrap;
|
52
|
-
cursor: pointer;
|
53
|
-
border-radius: 3px;
|
54
|
-
}
|
55
|
-
.gh-btn {
|
56
|
-
background-color: #eee;
|
57
|
-
background-image: -moz-linear-gradient(#fcfcfc, #eee);
|
58
|
-
background-image: -webkit-linear-gradient(#fcfcfc, #eee);
|
59
|
-
background-image: linear-gradient(#fcfcfc, #eee);
|
60
|
-
background-repeat: no-repeat;
|
61
|
-
border: 1px solid #d5d5d5;
|
62
|
-
}
|
63
|
-
.gh-btn:hover,
|
64
|
-
.gh-btn:focus {
|
65
|
-
text-decoration: none;
|
66
|
-
background-color: #ddd;
|
67
|
-
background-image: -moz-linear-gradient(#eee, #ddd);
|
68
|
-
background-image: -webkit-linear-gradient(#eee, #ddd);
|
69
|
-
background-image: linear-gradient(#eee, #ddd);
|
70
|
-
border-color: #ccc;
|
71
|
-
}
|
72
|
-
.gh-btn:active {
|
73
|
-
background-image: none;
|
74
|
-
background-color: #dcdcdc;
|
75
|
-
border-color: #b5b5b5;
|
76
|
-
box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);
|
77
|
-
}
|
78
|
-
.gh-ico {
|
79
|
-
width: 14px;
|
80
|
-
height: 14px;
|
81
|
-
margin-right: 4px;
|
82
|
-
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIxMiAxMiA0MCA0MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAxMiAxMiA0MCA0MCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBmaWxsPSIjMzMzMzMzIiBkPSJNMzIsMTMuNGMtMTAuNSwwLTE5LDguNS0xOSwxOWMwLDguNCw1LjUsMTUuNSwxMywxOGMxLDAuMiwxLjMtMC40LDEuMy0wLjljMC0wLjUsMC0xLjcsMC0zLjINCgljLTUuMywxLjEtNi40LTIuNi02LjQtMi42QzIwLDQxLjYsMTguOCw0MSwxOC44LDQxYy0xLjctMS4yLDAuMS0xLjEsMC4xLTEuMWMxLjksMC4xLDIuOSwyLDIuOSwyYzEuNywyLjksNC41LDIuMSw1LjUsMS42DQoJYzAuMi0xLjIsMC43LTIuMSwxLjItMi42Yy00LjItMC41LTguNy0yLjEtOC43LTkuNGMwLTIuMSwwLjctMy43LDItNS4xYy0wLjItMC41LTAuOC0yLjQsMC4yLTVjMCwwLDEuNi0wLjUsNS4yLDINCgljMS41LTAuNCwzLjEtMC43LDQuOC0wLjdjMS42LDAsMy4zLDAuMiw0LjcsMC43YzMuNi0yLjQsNS4yLTIsNS4yLTJjMSwyLjYsMC40LDQuNiwwLjIsNWMxLjIsMS4zLDIsMywyLDUuMWMwLDcuMy00LjUsOC45LTguNyw5LjQNCgljMC43LDAuNiwxLjMsMS43LDEuMywzLjVjMCwyLjYsMCw0LjYsMCw1LjJjMCwwLjUsMC40LDEuMSwxLjMsMC45YzcuNS0yLjYsMTMtOS43LDEzLTE4LjFDNTEsMjEuOSw0Mi41LDEzLjQsMzIsMTMuNHoiLz4NCjwvc3ZnPg0K);
|
83
|
-
background-size: 100% 100%;
|
84
|
-
background-repeat: no-repeat;
|
85
|
-
}
|
86
|
-
.gh-count {
|
87
|
-
position: relative;
|
88
|
-
display: none; /* hidden to start */
|
89
|
-
margin-left: 4px;
|
90
|
-
background-color: #fafafa;
|
91
|
-
border: 1px solid #d4d4d4;
|
92
|
-
}
|
93
|
-
.gh-count:hover,
|
94
|
-
.gh-count:focus {
|
95
|
-
color: #4183C4;
|
96
|
-
}
|
97
|
-
.gh-count:before,
|
98
|
-
.gh-count:after {
|
99
|
-
content: '';
|
100
|
-
position: absolute;
|
101
|
-
display: inline-block;
|
102
|
-
width: 0;
|
103
|
-
height: 0;
|
104
|
-
border-color: transparent;
|
105
|
-
border-style: solid;
|
106
|
-
}
|
107
|
-
.gh-count:before {
|
108
|
-
top: 50%;
|
109
|
-
left: -3px;
|
110
|
-
margin-top: -4px;
|
111
|
-
border-width: 4px 4px 4px 0;
|
112
|
-
border-right-color: #fafafa;
|
113
|
-
}
|
114
|
-
.gh-count:after {
|
115
|
-
top: 50%;
|
116
|
-
left: -4px;
|
117
|
-
z-index: -1;
|
118
|
-
margin-top: -5px;
|
119
|
-
border-width: 5px 5px 5px 0;
|
120
|
-
border-right-color: #d4d4d4;
|
121
|
-
}
|
122
|
-
.github-btn-large {
|
123
|
-
height: 30px;
|
124
|
-
}
|
125
|
-
.github-btn-large .gh-btn,
|
126
|
-
.github-btn-large .gh-count {
|
127
|
-
padding: 3px 10px 3px 8px;
|
128
|
-
font-size: 16px;
|
129
|
-
line-height: 22px;
|
130
|
-
border-radius: 4px;
|
131
|
-
}
|
132
|
-
.github-btn-large .gh-ico {
|
133
|
-
width: 20px;
|
134
|
-
height: 20px;
|
135
|
-
}
|
136
|
-
.github-btn-large .gh-count {
|
137
|
-
margin-left: 6px;
|
138
|
-
}
|
139
|
-
.github-btn-large .gh-count:before {
|
140
|
-
left: -5px;
|
141
|
-
margin-top: -6px;
|
142
|
-
border-width: 6px 6px 6px 0;
|
143
|
-
}
|
144
|
-
.github-btn-large .gh-count:after {
|
145
|
-
left: -6px;
|
146
|
-
margin-top: -7px;
|
147
|
-
border-width: 7px 7px 7px 0;
|
148
|
-
}
|