glimmer-dsl-web 0.1.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84438bf8ca94283ebca35c684038f1ba326c9301782508bdf07b7c4e23ecb391
4
- data.tar.gz: f7246af497c04e9c509457444ac9c17c8617aa881fca82adb4561473f1d18044
3
+ metadata.gz: 429afe58eb54b98a9aa229faeecbe09ceefb82ebae7e240ef3dd68ce63110164
4
+ data.tar.gz: '03469f3f04757d5b95aab910b1469047e467481aeaf6169ed69a33a8ab900b6f'
5
5
  SHA512:
6
- metadata.gz: b47263b248b7952d58d9fe8fb03f0614f8c917e025310839f7ab311f33fc31e292fe257ffec8f1c487843eab7814253829c00579ea2132385b4064b75e801890
7
- data.tar.gz: 6be5e5bab5900605d78977e703d27ac95dac303fa3855d52bd4f7dd4a1e8c8f090d49b95c57a5abe3155dde9adece9a028cfa7afc3872b9fcead2ce1a417676d
6
+ metadata.gz: 93b2b65475f2609476997bb7139e2078f8851b88e881d123af4298df2f293a8a2537eecf3f697d734d09e0a8d5ad87771b32899873b9161b74f3e5387e86df00
7
+ data.tar.gz: 7a37b8b255486545016a982522a52ee3cf00c8238557d396a874e38da8d5689fda9e8a8b021cb698f380f641e68d341b9b9e2ea10e035692192e534693cfac21
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.2.0
4
+
5
+ - Support `style` element content as Glimmer DSL for CSS syntax (Ruby Programmable CSS) as an alternative to a CSS `String`
6
+
3
7
  ## 0.1.1
4
8
 
5
9
  - Upgrade to opal-jquery 0.5.1 (adds `# backtick_javascript: true` where needed to satisfy new Opal requirement)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.1.1 (Beta)
1
+ # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.2.0 (Beta)
2
2
  ## Ruby in the Browser Web GUI Frontend Library
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-web.svg)](http://badge.fury.io/rb/glimmer-dsl-web)
4
4
  [![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -131,6 +131,7 @@ Document.ready? do
131
131
 
132
132
  # CSS Styles
133
133
  style {
134
+ # CSS can be included as a String as done below, or as Glimmer DSL for CSS syntax (Ruby code) as done in other samples
134
135
  <<~CSS
135
136
  input {
136
137
  margin: 5px;
@@ -392,15 +393,15 @@ Document.ready? do
392
393
  }
393
394
  }
394
395
 
396
+ # Programmable CSS using Glimmer DSL for CSS
395
397
  style {
396
- <<~CSS
397
- #{address_div.selector} * {
398
- margin: 5px;
399
- }
400
- #{address_div.selector} input, #{address_div.selector} select {
401
- grid-column: 2;
402
- }
403
- CSS
398
+ # `r` is an alias for `rule`, generating a CSS rule
399
+ r("#{address_div.selector} *") {
400
+ margin '5px'
401
+ }
402
+ r("#{address_div.selector} input, #{address_div.selector} select") {
403
+ grid_column '2'
404
+ }
404
405
  }
405
406
  }
406
407
 
@@ -528,20 +529,18 @@ Document.ready? do
528
529
  }
529
530
 
530
531
  style {
531
- <<~CSS
532
- #{address_div.selector} {
533
- margin: 10px 0;
534
- }
535
- #{address_div.selector} * {
536
- margin: 5px;
537
- }
538
- #{address_div.selector} label {
539
- grid-column: 1;
540
- }
541
- #{address_div.selector} input, #{address_div.selector} select {
542
- grid-column: 2;
543
- }
544
- CSS
532
+ r(address_div.selector) {
533
+ margin '10px 0'
534
+ }
535
+ r("#{address_div.selector} *") {
536
+ margin '5px'
537
+ }
538
+ r("#{address_div.selector} label") {
539
+ grid_column '1'
540
+ }
541
+ r("#{address_div.selector} input, #{address_div.selector} select") {
542
+ grid_column '2'
543
+ }
545
544
  }
546
545
  }
547
546
  }
@@ -708,14 +707,12 @@ class AddressForm
708
707
  }
709
708
 
710
709
  style {
711
- <<~CSS
712
- #{address_div.selector} * {
713
- margin: 5px;
714
- }
715
- #{address_div.selector} input, #{address_div.selector} select {
716
- grid-column: 2;
717
- }
718
- CSS
710
+ r("#{address_div.selector} *") {
711
+ margin '5px'
712
+ }
713
+ r("#{address_div.selector} input, #{address_div.selector} select") {
714
+ grid_column '2'
715
+ }
719
716
  }
720
717
  }
721
718
 
@@ -957,14 +954,12 @@ class AddressForm
957
954
  }
958
955
 
959
956
  style {
960
- <<~CSS
961
- #{address_div.selector} * {
962
- margin: 5px;
963
- }
964
- #{address_div.selector} input, #{address_div.selector} select {
965
- grid-column: 2;
966
- }
967
- CSS
957
+ r("#{address_div.selector} *") {
958
+ margin '5px'
959
+ }
960
+ r("#{address_div.selector} input, #{address_div.selector} select") {
961
+ grid_column '2'
962
+ }
968
963
  }
969
964
  }
970
965
 
@@ -1146,7 +1141,7 @@ rails new glimmer_app_server
1146
1141
  Add the following to `Gemfile`:
1147
1142
 
1148
1143
  ```
1149
- gem 'glimmer-dsl-web', '~> 0.1.1'
1144
+ gem 'glimmer-dsl-web', '~> 0.2.0'
1150
1145
  ```
1151
1146
 
1152
1147
  Run:
@@ -1367,7 +1362,7 @@ Disable the `webpacker` gem line in `Gemfile`:
1367
1362
  Add the following to `Gemfile`:
1368
1363
 
1369
1364
  ```ruby
1370
- gem 'glimmer-dsl-web', '~> 0.1.1'
1365
+ gem 'glimmer-dsl-web', '~> 0.2.0'
1371
1366
  ```
1372
1367
 
1373
1368
  Run:
@@ -1764,6 +1759,7 @@ Document.ready? do
1764
1759
 
1765
1760
  # CSS Styles
1766
1761
  style {
1762
+ # CSS can be included as a String as done below, or as Glimmer DSL for CSS syntax (Ruby code) as done in other samples
1767
1763
  <<~CSS
1768
1764
  input {
1769
1765
  margin: 5px;
@@ -2082,14 +2078,12 @@ Document.ready? do
2082
2078
  }
2083
2079
 
2084
2080
  style {
2085
- <<~CSS
2086
- #{address_div.selector} * {
2087
- margin: 5px;
2088
- }
2089
- #{address_div.selector} input, #{address_div.selector} select {
2090
- grid-column: 2;
2091
- }
2092
- CSS
2081
+ r("#{address_div.selector} *") {
2082
+ margin '5px'
2083
+ }
2084
+ r("#{address_div.selector} input, #{address_div.selector} select") {
2085
+ grid_column '2'
2086
+ }
2093
2087
  }
2094
2088
  }
2095
2089
 
@@ -2217,20 +2211,18 @@ Document.ready? do
2217
2211
  }
2218
2212
 
2219
2213
  style {
2220
- <<~CSS
2221
- #{address_div.selector} {
2222
- margin: 10px 0;
2223
- }
2224
- #{address_div.selector} * {
2225
- margin: 5px;
2226
- }
2227
- #{address_div.selector} label {
2228
- grid-column: 1;
2229
- }
2230
- #{address_div.selector} input, #{address_div.selector} select {
2231
- grid-column: 2;
2232
- }
2233
- CSS
2214
+ r(address_div.selector) {
2215
+ margin '10px 0'
2216
+ }
2217
+ r("#{address_div.selector} *") {
2218
+ margin '5px'
2219
+ }
2220
+ r("#{address_div.selector} label") {
2221
+ grid_column '1'
2222
+ }
2223
+ r("#{address_div.selector} input, #{address_div.selector} select") {
2224
+ grid_column '2'
2225
+ }
2234
2226
  }
2235
2227
  }
2236
2228
  }
@@ -2397,14 +2389,12 @@ class AddressForm
2397
2389
  }
2398
2390
 
2399
2391
  style {
2400
- <<~CSS
2401
- #{address_div.selector} * {
2402
- margin: 5px;
2403
- }
2404
- #{address_div.selector} input, #{address_div.selector} select {
2405
- grid-column: 2;
2406
- }
2407
- CSS
2392
+ r("#{address_div.selector} *") {
2393
+ margin '5px'
2394
+ }
2395
+ r("#{address_div.selector} input, #{address_div.selector} select") {
2396
+ grid_column '2'
2397
+ }
2408
2398
  }
2409
2399
  }
2410
2400
 
@@ -2646,14 +2636,12 @@ class AddressForm
2646
2636
  }
2647
2637
 
2648
2638
  style {
2649
- <<~CSS
2650
- #{address_div.selector} * {
2651
- margin: 5px;
2652
- }
2653
- #{address_div.selector} input, #{address_div.selector} select {
2654
- grid-column: 2;
2655
- }
2656
- CSS
2639
+ r("#{address_div.selector} *") {
2640
+ margin '5px'
2641
+ }
2642
+ r("#{address_div.selector} input, #{address_div.selector} select") {
2643
+ grid_column '2'
2644
+ }
2657
2645
  }
2658
2646
  }
2659
2647
 
@@ -2850,17 +2838,15 @@ Document.ready? do
2850
2838
  }
2851
2839
 
2852
2840
  style {
2853
- <<~CSS
2854
- #{container_div.selector} * {
2855
- margin: 5px;
2856
- }
2857
- #{container_div.selector} label {
2858
- grid-column: 1;
2859
- }
2860
- #{container_div.selector} input {
2861
- grid-column: 2;
2862
- }
2863
- CSS
2841
+ r("#{container_div.selector} *") {
2842
+ margin '5px'
2843
+ }
2844
+ r("#{container_div.selector} label") {
2845
+ grid_column '1'
2846
+ }
2847
+ r("#{container_div.selector} input") {
2848
+ grid_column '2'
2849
+ }
2864
2850
  }
2865
2851
  }
2866
2852
  }
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -2,11 +2,11 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: glimmer-dsl-web 0.1.1 ruby lib
5
+ # stub: glimmer-dsl-web 0.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "glimmer-dsl-web".freeze
9
- s.version = "0.1.1".freeze
9
+ s.version = "0.2.0".freeze
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
@@ -58,6 +58,7 @@ Gem::Specification.new do |s|
58
58
  "lib/glimmer/dsl/web/property_expression.rb",
59
59
  "lib/glimmer/dsl/web/select_expression.rb",
60
60
  "lib/glimmer/dsl/web/shine_data_binding_expression.rb",
61
+ "lib/glimmer/dsl/web/style_expression.rb",
61
62
  "lib/glimmer/helpers/glimmer_helper.rb",
62
63
  "lib/glimmer/util/proc_tracker.rb",
63
64
  "lib/glimmer/web.rb",
@@ -76,7 +77,7 @@ Gem::Specification.new do |s|
76
77
 
77
78
  s.add_runtime_dependency(%q<glimmer>.freeze, ["~> 2.7.6".freeze])
78
79
  s.add_runtime_dependency(%q<glimmer-dsl-xml>.freeze, ["~> 1.3.2".freeze])
79
- s.add_runtime_dependency(%q<glimmer-dsl-css>.freeze, ["~> 1.2.2".freeze])
80
+ s.add_runtime_dependency(%q<glimmer-dsl-css>.freeze, ["~> 1.2.3".freeze])
80
81
  s.add_runtime_dependency(%q<opal>.freeze, ["= 1.8.2".freeze])
81
82
  s.add_runtime_dependency(%q<opal-rails>.freeze, ["= 2.0.3".freeze])
82
83
  s.add_runtime_dependency(%q<opal-async>.freeze, ["~> 1.4.1".freeze])
@@ -26,6 +26,7 @@ require 'glimmer/dsl/web/listener_expression'
26
26
  require 'glimmer/dsl/web/property_expression'
27
27
  require 'glimmer/dsl/web/p_expression'
28
28
  require 'glimmer/dsl/web/select_expression'
29
+ require 'glimmer/dsl/web/style_expression'
29
30
  require 'glimmer/dsl/web/bind_expression'
30
31
  require 'glimmer/dsl/web/data_binding_expression'
31
32
  require 'glimmer/dsl/web/content_data_binding_expression'
@@ -0,0 +1,27 @@
1
+ require 'glimmer/dsl/static_expression'
2
+ require 'glimmer/dsl/web/general_element_expression'
3
+
4
+ module Glimmer
5
+ module DSL
6
+ module Web
7
+ class StyleExpression < StaticExpression
8
+ include GeneralElementExpression
9
+ include Glimmer
10
+
11
+ def add_content(parent, keyword, *args, &block)
12
+ if parent.rendered? || parent.skip_content_on_render_blocks?
13
+ return_value = css(&block).to_s
14
+ return_value = super(parent, keyword, *args, &block) if return_value.to_s.empty?
15
+ if return_value.is_a?(String) && parent.dom_element.text.to_s.empty?
16
+ parent.add_text_content(return_value)
17
+ end
18
+ parent.post_add_content
19
+ return_value
20
+ else
21
+ parent.add_content_on_render(&block)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -158,14 +158,12 @@ class AddressForm
158
158
  }
159
159
 
160
160
  style {
161
- <<~CSS
162
- #{address_div.selector} * {
163
- margin: 5px;
164
- }
165
- #{address_div.selector} input, #{address_div.selector} select {
166
- grid-column: 2;
167
- }
168
- CSS
161
+ r("#{address_div.selector} *") {
162
+ margin '5px'
163
+ }
164
+ r("#{address_div.selector} input, #{address_div.selector} select") {
165
+ grid_column '2'
166
+ }
169
167
  }
170
168
  }
171
169
 
@@ -117,20 +117,18 @@ Document.ready? do
117
117
  }
118
118
 
119
119
  style {
120
- <<~CSS
121
- #{address_div.selector} {
122
- margin: 10px 0;
123
- }
124
- #{address_div.selector} * {
125
- margin: 5px;
126
- }
127
- #{address_div.selector} label {
128
- grid-column: 1;
129
- }
130
- #{address_div.selector} input, #{address_div.selector} select {
131
- grid-column: 2;
132
- }
133
- CSS
120
+ r(address_div.selector) {
121
+ margin '10px 0'
122
+ }
123
+ r("#{address_div.selector} *") {
124
+ margin '5px'
125
+ }
126
+ r("#{address_div.selector} label") {
127
+ grid_column '1'
128
+ }
129
+ r("#{address_div.selector} input, #{address_div.selector} select") {
130
+ grid_column '2'
131
+ }
134
132
  }
135
133
  }
136
134
  }
@@ -156,15 +156,15 @@ Document.ready? do
156
156
  }
157
157
  }
158
158
 
159
+ # Programmable CSS using Glimmer DSL for CSS
159
160
  style {
160
- <<~CSS
161
- #{address_div.selector} * {
162
- margin: 5px;
163
- }
164
- #{address_div.selector} input, #{address_div.selector} select {
165
- grid-column: 2;
166
- }
167
- CSS
161
+ # `r` is an alias for `rule`, generating a CSS rule
162
+ r("#{address_div.selector} *") {
163
+ margin '5px'
164
+ }
165
+ r("#{address_div.selector} input, #{address_div.selector} select") {
166
+ grid_column '2'
167
+ }
168
168
  }
169
169
  }
170
170
 
@@ -79,6 +79,7 @@ Document.ready? do
79
79
 
80
80
  # CSS Styles
81
81
  style {
82
+ # CSS can be included as a String as done below, or as Glimmer DSL for CSS syntax (Ruby code) as done in other samples
82
83
  <<~CSS
83
84
  input {
84
85
  margin: 5px;
@@ -135,14 +135,12 @@ class AddressForm
135
135
  }
136
136
 
137
137
  style {
138
- <<~CSS
139
- #{address_div.selector} * {
140
- margin: 5px;
141
- }
142
- #{address_div.selector} input, #{address_div.selector} select {
143
- grid-column: 2;
144
- }
145
- CSS
138
+ r("#{address_div.selector} *") {
139
+ margin '5px'
140
+ }
141
+ r("#{address_div.selector} input, #{address_div.selector} select") {
142
+ grid_column '2'
143
+ }
146
144
  }
147
145
  }
148
146
 
@@ -100,17 +100,15 @@ Document.ready? do
100
100
  }
101
101
 
102
102
  style {
103
- <<~CSS
104
- #{container_div.selector} * {
105
- margin: 5px;
106
- }
107
- #{container_div.selector} label {
108
- grid-column: 1;
109
- }
110
- #{container_div.selector} input {
111
- grid-column: 2;
112
- }
113
- CSS
103
+ r("#{container_div.selector} *") {
104
+ margin '5px'
105
+ }
106
+ r("#{container_div.selector} label") {
107
+ grid_column '1'
108
+ }
109
+ r("#{container_div.selector} input") {
110
+ grid_column '2'
111
+ }
114
112
  }
115
113
  }
116
114
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.2.2
47
+ version: 1.2.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.2.2
54
+ version: 1.2.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: opal
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -287,6 +287,7 @@ files:
287
287
  - lib/glimmer/dsl/web/property_expression.rb
288
288
  - lib/glimmer/dsl/web/select_expression.rb
289
289
  - lib/glimmer/dsl/web/shine_data_binding_expression.rb
290
+ - lib/glimmer/dsl/web/style_expression.rb
290
291
  - lib/glimmer/helpers/glimmer_helper.rb
291
292
  - lib/glimmer/util/proc_tracker.rb
292
293
  - lib/glimmer/web.rb