tungsten 0.1.19 → 0.1.20
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/app/assets/javascripts/tungsten/_icons.js +1 -1
- data/app/assets/javascripts/tungsten/enhancements/text-helpers.js +31 -0
- data/app/assets/javascripts/tungsten/tungsten.js +1 -0
- data/app/assets/stylesheets/tungsten/components/_toggle-nav.scss +1 -4
- data/app/assets/stylesheets/tungsten/components/_tooltip.scss +1 -3
- data/app/assets/stylesheets/tungsten/core/_animations.scss +1 -1
- data/app/assets/stylesheets/tungsten/core/_globals.scss +1 -1
- data/app/assets/stylesheets/tungsten/core/_grid.scss +8 -0
- data/app/assets/stylesheets/tungsten/core/_layout.scss +45 -0
- data/app/assets/stylesheets/tungsten/core/_sections.scss +1 -1
- data/app/assets/stylesheets/tungsten/form/_base.scss +2 -2
- data/app/assets/stylesheets/tungsten/form/_copy-input.scss +31 -0
- data/app/assets/stylesheets/tungsten/form/_index.scss +1 -0
- data/app/assets/stylesheets/tungsten/form/_label-placeholder.scss +3 -7
- data/app/assets/svgs/tungsten/copy.svg +1 -0
- data/app/assets/svgs/tungsten/logo.svg +1 -0
- data/app/helpers/tungsten/button_helper.rb +15 -3
- data/app/helpers/tungsten/deployments_helper.rb +4 -3
- data/app/helpers/tungsten/form_helper.rb +19 -2
- data/app/views/layouts/tungsten/default.html.slim +4 -1
- data/lib/tungsten/version.rb +1 -1
- data/public/{code-0.1.19.js → code-0.1.20.js} +1 -1
- data/public/{code-0.1.19.js.gz → code-0.1.20.js.gz} +0 -0
- data/public/{code-0.1.19.map.json → code-0.1.20.map.json} +0 -0
- data/public/{tungsten-0.1.19.css → tungsten-0.1.20.css} +103 -22
- data/public/tungsten-0.1.20.css.gz +0 -0
- data/public/{tungsten-0.1.19.js → tungsten-0.1.20.js} +44 -42
- data/public/tungsten-0.1.20.js.gz +0 -0
- data/public/tungsten-0.1.20.map.json +1 -0
- metadata +14 -10
- data/public/tungsten-0.1.19.css.gz +0 -0
- data/public/tungsten-0.1.19.js.gz +0 -0
- data/public/tungsten-0.1.19.map.json +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3ee12661632e5e680b97d10b8e53ac76a28b09ff
|
|
4
|
+
data.tar.gz: 9242ee825cd2fb7f3adcaf983e8376ce45bfea70
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7aee84b8ac48e4fd18b7becb907ab612e177172971f8781c7562019dc7441478262f1bffef14c27c0f5fa1f97b60384817ffafceebb69348bd8e3068f2ba0304
|
|
7
|
+
data.tar.gz: d5ad13b8dc2744fe0aa04d35703deeda232defe933a23d110d220a27be2823ff8621d901149c87ea998eb3af972d2a48ad41a0d50000aae0a5b3dcf8def2e8ae
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
function embed() {
|
|
4
4
|
if (!document.querySelector('#esvg-svg-icons')) {
|
|
5
|
-
document.querySelector('body').insertAdjacentHTML('afterbegin', '<svg id="esvg-svg-icons" data-symbol-class="svg-symbol" data-prefix="svg" version="1.1" style="height:0;position:absolute"><symbol id="svg-deployment" data-name="deployment" viewBox="0 0 176 201" width="176" height="201" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M88 5.985l82.272 47.5v95L88 195.985l-82.272-47.5v-95L88 5.985z"/></symbol></svg>')
|
|
5
|
+
document.querySelector('body').insertAdjacentHTML('afterbegin', '<svg id="esvg-svg-icons" data-symbol-class="svg-symbol" data-prefix="svg" version="1.1" style="height:0;position:absolute"><symbol id="svg-deployment" data-name="deployment" viewBox="0 0 176 201" width="176" height="201" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M88 5.985l82.272 47.5v95L88 195.985l-82.272-47.5v-95L88 5.985z"/></symbol><symbol id="svg-copy" data-name="copy" viewBox="0 0 294 294" width="294" height="294" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M0 136.96c0-28.877 23.444-52.32 52.32-52.32v89.854c0 37.036 30.07 67.105 67.105 67.105h89.854c0 28.875-23.445 52.32-52.32 52.32H52.32C23.444 293.92 0 270.474 0 241.6V136.96z" fill-opacity=".529"/><path d="M136.96 0c-28.877 0-52.32 23.444-52.32 52.32v104.64c0 28.875 23.443 52.32 52.32 52.32H241.6c28.875 0 52.32-23.445 52.32-52.32V52.32C293.92 23.444 270.474 0 241.6 0H136.96z"/></symbol><symbol id="svg-logo" data-name="logo" viewBox="0 0 256 256" width="256" height="256" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M152.89 179.214l-49.78 28.74-53.332-30.792L0 148.42V86.838l53.333-30.792 49.777 28.74 49.777-28.74 53.333 30.792 49.78 28.74v61.584l-53.333 30.792-49.778-28.74zm3.137-6.374v-49.052l42.975 24.635.01 49.27-42.985-24.853zm-99.14.217v-49.27l43.126 24.77.01 49.566-43.135-25.066zM7.11 144.317v-49.27l42.668 24.635.002 49.27-42.67-24.635zm96-51.32l42.67 24.634-42.67 24.636-42.67-24.634 42.67-24.634zm99.557 0l42.668 24.634-42.668 24.636-42.67-24.634 42.67-24.634zM53.333 64.257l42.67 24.633-42.67 24.635-42.67-24.634 42.67-24.633zm99.554 0l42.67 24.633-42.67 24.635-42.67-24.634 42.67-24.633z"/><path d="M6.82 144.547l.023-50 93.295 53.877.04 50.06L6.82 144.547zm148.916 28.477l.14-49.667 43.428 24.894-.045 50.235-43.525-25.46z" fill-opacity=".349"/></symbol></svg>')
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var toolbox = require( 'compose-toolbox' )
|
|
2
|
+
|
|
3
|
+
function autoSizeTextarea( textarea ) {
|
|
4
|
+
var parent = textarea.parentElement
|
|
5
|
+
|
|
6
|
+
if ( textarea.value == '' ) return
|
|
7
|
+
if ( parent.classList.contains('input-wrapper') ) {
|
|
8
|
+
|
|
9
|
+
parent.style.height = textarea.style.height
|
|
10
|
+
var offset = textarea.offsetHeight - textarea.clientHeight
|
|
11
|
+
textarea.style.height = 'auto'
|
|
12
|
+
var newHeight = ( textarea.scrollHeight + offset )
|
|
13
|
+
var maxHeight = window.innerHeight * .95
|
|
14
|
+
|
|
15
|
+
if ( newHeight < maxHeight )
|
|
16
|
+
textarea.style.height = newHeight + 'px'
|
|
17
|
+
else
|
|
18
|
+
textarea.style.height = maxHeight + 'px'
|
|
19
|
+
|
|
20
|
+
parent.style.height = 'auto'
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
toolbox.event.change(function(){
|
|
25
|
+
var textareas = document.querySelectorAll('textarea')
|
|
26
|
+
toolbox.event.delay( function(){ Array.prototype.forEach.call(textareas, autoSizeTextarea) } )
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
toolbox.event.on(document, 'keyup toggler:show', 'textarea', function(event){
|
|
30
|
+
autoSizeTextarea(event.currentTarget)
|
|
31
|
+
})
|
|
@@ -13,6 +13,7 @@ require( 'compose-slider' ) // Our slider (range input) component
|
|
|
13
13
|
require( './_icons' ) // Import svg icons (from Esvg)
|
|
14
14
|
require( './_form-helpers' )
|
|
15
15
|
require( './enhancements/flash-messages' )
|
|
16
|
+
require( './enhancements/text-helpers' )
|
|
16
17
|
|
|
17
18
|
// Public API object
|
|
18
19
|
window.Tungsten = module.exports = toolbox.merge( {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
background-color: rgba(#000, 0.8);
|
|
20
20
|
color: #fff;
|
|
21
21
|
white-space: nowrap;
|
|
22
|
-
font-size:
|
|
22
|
+
font-size: 10px;
|
|
23
23
|
line-height: 1.5em;
|
|
24
24
|
padding: 5px 8px;
|
|
25
25
|
border-radius: $radius;
|
|
@@ -47,6 +47,4 @@
|
|
|
47
47
|
@include triangle(up, rgba($green-02, .8), 6px);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
|
|
51
50
|
}
|
|
52
|
-
|
|
@@ -238,6 +238,14 @@ form [class*='columns'] {
|
|
|
238
238
|
justify-items: flex-end;
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
+
.push-right {
|
|
242
|
+
margin-left: auto;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.push-left {
|
|
246
|
+
margin-right: auto;
|
|
247
|
+
}
|
|
248
|
+
|
|
241
249
|
/* ===================================== *
|
|
242
250
|
* Breakpoints
|
|
243
251
|
* ------------------------------------- */
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
* Document
|
|
16
16
|
* ------------------------------------- */
|
|
17
17
|
|
|
18
|
+
html {
|
|
19
|
+
background: $gray-02;
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
body {
|
|
19
23
|
display: flex;
|
|
20
24
|
min-height: 100vh;
|
|
@@ -45,6 +49,47 @@ textarea {
|
|
|
45
49
|
* Application
|
|
46
50
|
* ------------------------------------- */
|
|
47
51
|
|
|
52
|
+
.application-banner {
|
|
53
|
+
background: $gray-10;
|
|
54
|
+
color: $white;
|
|
55
|
+
display: flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
padding: $content-padding * .5 $content-padding;
|
|
58
|
+
|
|
59
|
+
.svg-deployment {
|
|
60
|
+
margin-right: 20px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@each $name, $colors in $gradients {
|
|
64
|
+
$start: nth($colors, 1);
|
|
65
|
+
$end: nth($colors, 2);
|
|
66
|
+
|
|
67
|
+
&.#{$name}-gradient-bg {
|
|
68
|
+
background: linear-gradient(135deg, #{$start}, #{$end}) left top/100% 100% no-repeat;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
a {
|
|
73
|
+
transition: $duration;
|
|
74
|
+
text-decoration: none;
|
|
75
|
+
padding: .3em .6em;
|
|
76
|
+
border-radius: $radius;
|
|
77
|
+
|
|
78
|
+
&,
|
|
79
|
+
&:visited {
|
|
80
|
+
color: inherit;
|
|
81
|
+
background: transparent;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
&:hover,
|
|
85
|
+
&:focus,
|
|
86
|
+
&:active {
|
|
87
|
+
color: inherit;
|
|
88
|
+
background: rgba($white, .2);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
48
93
|
.application-content {
|
|
49
94
|
padding: $content-padding;
|
|
50
95
|
}
|
|
@@ -78,7 +78,6 @@ textarea,
|
|
|
78
78
|
border: none;
|
|
79
79
|
padding: 0;
|
|
80
80
|
}
|
|
81
|
-
|
|
82
81
|
}
|
|
83
82
|
|
|
84
83
|
.input-wrapper {
|
|
@@ -102,9 +101,10 @@ select {
|
|
|
102
101
|
|
|
103
102
|
// Confine resizing of textareas
|
|
104
103
|
textarea {
|
|
104
|
+
line-height: 1.4em;
|
|
105
105
|
display: block;
|
|
106
106
|
resize: vertical;
|
|
107
|
-
|
|
107
|
+
max-height: 50vh;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
::placeholder {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.copy-input {
|
|
2
|
+
position: relative;
|
|
3
|
+
|
|
4
|
+
.copy-button {
|
|
5
|
+
right: 1px;
|
|
6
|
+
top: 10px;
|
|
7
|
+
z-index: 2;
|
|
8
|
+
padding: 4px 10px;
|
|
9
|
+
|
|
10
|
+
&, &:hover, &:active, &:focus {
|
|
11
|
+
transform: translate3d(0,0,0);
|
|
12
|
+
position: absolute;
|
|
13
|
+
border: none;
|
|
14
|
+
box-shadow: none;
|
|
15
|
+
background: linear-gradient( to right, rgba(#fff, .4), #fff 15%)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.copy-button {
|
|
21
|
+
svg {
|
|
22
|
+
opacity: .5;
|
|
23
|
+
transition: opacity ease .2s;
|
|
24
|
+
}
|
|
25
|
+
&:hover, &:focus {
|
|
26
|
+
svg { opacity: 1; }
|
|
27
|
+
}
|
|
28
|
+
&.copied {
|
|
29
|
+
svg { fill: $green-02; }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
// Default active color
|
|
23
23
|
label:not(.valid):not(.invalid) {
|
|
24
|
-
|
|
24
|
+
input {
|
|
25
25
|
&:focus + span,
|
|
26
26
|
&:active + span {
|
|
27
27
|
color: $gray-08;
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
// Inputs
|
|
33
|
-
|
|
33
|
+
input {
|
|
34
34
|
z-index: 1;
|
|
35
35
|
margin: 0;
|
|
36
36
|
font-size: inherit;
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
&.valid, &.invalid {
|
|
53
|
-
|
|
53
|
+
input {
|
|
54
54
|
+ .placeholder-label-text {
|
|
55
55
|
color: inherit;
|
|
56
56
|
}
|
|
@@ -60,10 +60,6 @@
|
|
|
60
60
|
input {
|
|
61
61
|
line-height: inherit;
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
textarea {
|
|
65
|
-
padding-top: ($padding-y / 2) + 4;
|
|
66
|
-
}
|
|
67
63
|
}
|
|
68
64
|
|
|
69
65
|
// Faux-placeholder labels
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 294 294" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path d="M0,136.959c0,-28.876 23.444,-52.319 52.32,-52.319c0,0 0,89.854 0,89.854c0,37.036 30.069,67.105 67.105,67.105l89.854,0c0,28.876 -23.444,52.32 -52.32,52.32l-104.639,0c-28.876,0 -52.32,-23.444 -52.32,-52.32l0,-104.64Z" style="fill-opacity:0.529412;"/><path d="M136.959,0c-28.876,0 -52.319,23.444 -52.319,52.32l0,104.639c0,28.876 23.443,52.32 52.319,52.32l104.64,0c28.876,0 52.32,-23.444 52.32,-52.32l0,-104.639c0,-28.876 -23.444,-52.32 -52.32,-52.32l-104.64,0Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M152.89 179.214l-49.78 28.74-53.332-30.792L0 148.42V86.838l53.333-30.792 49.777 28.74 49.777-28.74 53.333 30.792 49.78 28.74v61.584l-53.333 30.792-49.778-28.74zm3.137-6.374v-49.052l42.975 24.635.01 49.27-42.985-24.853zm-99.14.217v-49.27l43.126 24.77.01 49.566-43.135-25.066zM7.11 144.317v-49.27l42.668 24.635.002 49.27-42.67-24.635zm96-51.32l42.67 24.634-42.67 24.635-42.67-24.634 42.67-24.634zm99.557 0l42.668 24.634-42.668 24.635-42.67-24.634 42.67-24.634zM53.333 64.256l42.67 24.634-42.67 24.635-42.67-24.634 42.67-24.634zm99.554 0l42.67 24.634-42.67 24.635-42.67-24.634 42.67-24.634z"/><path d="M6.82 144.547l.023-50 93.295 53.877.04 50.06L6.82 144.547zM155.736 173.024l.14-49.667 43.428 24.894-.045 50.234-43.524-25.46z" fill-opacity=".349"/></svg>
|
|
@@ -63,14 +63,26 @@ module Tungsten
|
|
|
63
63
|
button(text, options, &block)
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
def copy_button(
|
|
66
|
+
def copy_button(target, text=nil, options={}, &block)
|
|
67
|
+
|
|
68
|
+
if text.is_a? Hash
|
|
69
|
+
options = text
|
|
70
|
+
text = nil
|
|
71
|
+
end
|
|
72
|
+
|
|
67
73
|
options[:aria_label] ||= "Copy to clipboard"
|
|
68
|
-
options[:class] = "#{options[:class]} has-tooltip".strip
|
|
74
|
+
options[:class] = "#{options[:class]} copy-button has-tooltip".strip
|
|
69
75
|
|
|
70
76
|
options[:data] ||= {}
|
|
71
77
|
options[:data][:copy_target] = target
|
|
72
78
|
|
|
73
|
-
|
|
79
|
+
if text.nil?
|
|
80
|
+
button( text, options ) do
|
|
81
|
+
use_svg 'copy', width: '20px'
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
button(text, options, &block)
|
|
85
|
+
end
|
|
74
86
|
end
|
|
75
87
|
|
|
76
88
|
def button_classes(options)
|
|
@@ -6,14 +6,14 @@ module Tungsten
|
|
|
6
6
|
if name.nil?
|
|
7
7
|
deployments
|
|
8
8
|
else
|
|
9
|
-
deployment = deployments.find { |d|
|
|
9
|
+
deployment = deployments.find { |d|
|
|
10
10
|
d[:name] =~ /#{name}/i || d[:slug] == name
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
if deployment.nil? && !Rails.env.production?
|
|
14
14
|
raise %Q{No deployment type "#{name}" exists.}
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
deployment
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -44,7 +44,8 @@ module Tungsten
|
|
|
44
44
|
options[:use][:class] = "deployment-icon-hex #{options[:use][:class]}".strip
|
|
45
45
|
|
|
46
46
|
options[:color] ||= "#fff"
|
|
47
|
-
options[:fill] ||= "
|
|
47
|
+
options[:fill] ||= "none"
|
|
48
|
+
# options[:fill] ||= "url(##{data[:name].downcase}-gradient-bg)"
|
|
48
49
|
options[:content] ||= deployment_text(data[:short_name], options.delete(:text) || {})
|
|
49
50
|
|
|
50
51
|
deployment_graphic.use(options).html_safe
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
module Tungsten
|
|
2
2
|
module FormHelper
|
|
3
|
+
include Tungsten::ButtonHelper
|
|
4
|
+
|
|
3
5
|
INPUT_OPTIONS = {
|
|
4
6
|
email: {
|
|
5
7
|
type: "email",
|
|
@@ -364,6 +366,11 @@ module Tungsten
|
|
|
364
366
|
value = nil
|
|
365
367
|
end
|
|
366
368
|
|
|
369
|
+
if options.delete(:copy)
|
|
370
|
+
copy_class = "copy-input-#{SecureRandom.hex(8)}"
|
|
371
|
+
copy = copy_button ".#{copy_class}", icon: 'copy'
|
|
372
|
+
end
|
|
373
|
+
|
|
367
374
|
options = (INPUT_OPTIONS[type]||{}).deep_merge options
|
|
368
375
|
options[:type] ||= type
|
|
369
376
|
|
|
@@ -371,7 +378,7 @@ module Tungsten
|
|
|
371
378
|
class: "#{label_class(options[:type])} #{options.delete(:class)}"
|
|
372
379
|
}
|
|
373
380
|
|
|
374
|
-
if placeholder = options[:placeholder]
|
|
381
|
+
if options[:type] != :textarea && placeholder = options[:placeholder]
|
|
375
382
|
placeholder = content_tag(:span, class: 'placeholder-label-text') { placeholder }
|
|
376
383
|
label_options[:class] += ' placeholder-label'
|
|
377
384
|
end
|
|
@@ -380,9 +387,10 @@ module Tungsten
|
|
|
380
387
|
label_text = content_tag(:span, class: 'label-text') { label_text }
|
|
381
388
|
end
|
|
382
389
|
|
|
390
|
+
options[:class] = "#{options[:class]} #{copy_class}".strip if copy_class
|
|
383
391
|
tag = base_tag(name, value, options, type, &block)
|
|
384
392
|
|
|
385
|
-
content_tag(:label, label_options) {
|
|
393
|
+
label = content_tag(:label, label_options) {
|
|
386
394
|
concat label_text
|
|
387
395
|
if type == :select
|
|
388
396
|
concat tag
|
|
@@ -395,6 +403,15 @@ module Tungsten
|
|
|
395
403
|
end
|
|
396
404
|
}
|
|
397
405
|
|
|
406
|
+
if copy
|
|
407
|
+
content_tag(:div, class: 'copy-input') {
|
|
408
|
+
concat label
|
|
409
|
+
concat copy
|
|
410
|
+
}
|
|
411
|
+
else
|
|
412
|
+
label
|
|
413
|
+
end
|
|
414
|
+
|
|
398
415
|
end
|
|
399
416
|
|
|
400
417
|
private
|
data/lib/tungsten/version.rb
CHANGED