bem-on-rails 0.0.1 → 0.0.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/.gitignore +1 -0
- data/CHANGELOG.md +8 -1
- data/README.md +33 -15
- data/app/helpers/bemonrails/bem_render_helper.rb +30 -10
- data/app/views/bemonrails/essences/_content.html.haml +11 -1
- data/lib/bem-on-rails/generators/install_generator.rb +3 -3
- data/lib/bem-on-rails/generators/templates/{initializer.tt → config/initializer.tt.rb} +0 -0
- data/lib/bem-on-rails/generators/templates/{coffee.tt → techs/coffee.tt} +0 -0
- data/lib/bem-on-rails/generators/templates/techs/haml.tt +2 -0
- data/lib/bem-on-rails/generators/templates/{md.tt → techs/md.tt} +0 -0
- data/lib/bem-on-rails/generators/templates/{sass.tt → techs/sass.tt} +0 -0
- data/lib/bem-on-rails/generators/templates/{bem.tt → thor/bem.tt.rb} +0 -0
- data/lib/bem-on-rails/version.rb +1 -1
- metadata +9 -9
- data/lib/bem-on-rails/generators/templates/haml.tt +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db5b4a9a59a618f6262eccc08032c9d2ef7d9778
|
4
|
+
data.tar.gz: 3f1f5738a05779c041f1debcad85651616af34f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5bc8f7d40d5c28a7e7dc8f83a313526e1ee15705e91bdff65458972bdc164253aaa578451b784789caa03a8c034a3597e7b61da2242c7958c36e78b0f7b9d26
|
7
|
+
data.tar.gz: 1e4e04663d0d743042146ff533d1b7890cb6d82d3cf14e74a749b6762e123c0c462c583628dbff95c5660f2bbf2bf9eda05d771a77c93d667fe345b2a6faa641
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
[](https://github.com/verybigman/bem-on-rails)
|
2
2
|
|
3
|
-
|
3
|
+
# BEM on Rails
|
4
|
+
|
5
|
+
Work with BEM methodology in Rails applications. BEM on Rails is ruby copy from bem-tools.
|
4
6
|
You can read about bem-tools [here](http://bem.info/tools/bem/) and BEM methodology [here](http://bem.info/method/).
|
5
7
|
|
6
8
|
## Installation
|
@@ -26,11 +28,13 @@ You should run to watch your new instruments:
|
|
26
28
|
|
27
29
|
$ thor -T
|
28
30
|
|
29
|
-
Also generator creates initializer bem.rb with BEM constant. You
|
31
|
+
Also generator creates initializer bem.rb with BEM constant. You should restart server after install.
|
32
|
+
You can customize everythink!
|
30
33
|
|
31
34
|
## Usage
|
32
35
|
|
33
|
-
You can create blocks, elements, modificators and groups for blocks. It's awesome! Also you can remove them and watch
|
36
|
+
You can create blocks, elements, modificators and groups for blocks. It's awesome! Also you can remove them and watch
|
37
|
+
lists of blocks, block elements, blocks mods and etc. Try thor help for more info.
|
34
38
|
|
35
39
|
Default blocks folder structure:
|
36
40
|
- **blocks**
|
@@ -98,12 +102,27 @@ Use them like configs, for require only. This involves using Sprockets.
|
|
98
102
|
|
99
103
|
In your view you should write this:
|
100
104
|
```ruby
|
101
|
-
= b "test", mods: {color: "red"}, content: [{ elem: "icon", elemMods: {size: "small"} }]
|
105
|
+
= b "test", mods: [{color: "red"}], content: [{ elem: "icon", elemMods: [{size: "small"}] }]
|
102
106
|
```
|
103
107
|
|
104
108
|
If block in group:
|
105
109
|
```ruby
|
106
|
-
= b "test", group: "name", mods: {color: "red"}, content: []
|
110
|
+
= b "test", group: "name", mods: [{color: "red"}], content: []
|
111
|
+
```
|
112
|
+
|
113
|
+
Block with mods without value:
|
114
|
+
```ruby
|
115
|
+
= b "test", mods: [:super, {color: "red"}], content: []
|
116
|
+
```
|
117
|
+
|
118
|
+
Block with custom attributes for tag:
|
119
|
+
```ruby
|
120
|
+
= b "test", attrs: {src: "/img.png"}, content: []
|
121
|
+
```
|
122
|
+
|
123
|
+
Block with custom class for tag:
|
124
|
+
```ruby
|
125
|
+
= b "test", cls: "custom", content: []
|
107
126
|
```
|
108
127
|
|
109
128
|
Syntax is look like [bemhtml](http://ru.bem.info/articles/bemhtml-reference/).
|
@@ -113,7 +132,7 @@ Syntax is look like [bemhtml](http://ru.bem.info/articles/bemhtml-reference/).
|
|
113
132
|
Now templates exists for haml, sass, coffee and md technologies, but you will create your templates in
|
114
133
|
lib/tasks/templates. For example, you can watch haml template:
|
115
134
|
```haml
|
116
|
-
%div{
|
135
|
+
%div{ bemattrs }
|
117
136
|
= bemcontent
|
118
137
|
```
|
119
138
|
Bemclass and bemcontent is BEM helpers for rendering.
|
@@ -127,14 +146,13 @@ If you want it, please watch [here](https://github.com/Vasfed/csso-rails).
|
|
127
146
|
|
128
147
|
## Tomorrow
|
129
148
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
8. Bem exutable. Work with Thor is not convenient.
|
149
|
+
0. Incapsulate helpers methods and isolate them from project helpers.
|
150
|
+
1. Custom tag for block or element.
|
151
|
+
2. Add custom classes for blocks and elements.
|
152
|
+
3. Flags bem and js.
|
153
|
+
4. Mix blocks and elements.
|
154
|
+
5. Mods with restructure. Now you can't use mods with templates(haml, slim and etc.), but they generates.
|
155
|
+
6. Bem exutable. Work with Thor is not convenient.
|
138
156
|
|
139
157
|
## Contributing
|
140
158
|
|
@@ -11,6 +11,8 @@ module Bemonrails
|
|
11
11
|
# Block details
|
12
12
|
@block_name = name
|
13
13
|
@block_mods = builder[:mods]
|
14
|
+
@custom_attrs = builder[:attrs]
|
15
|
+
@custom_class = builder[:cls]
|
14
16
|
@content = builder[:content]
|
15
17
|
# Render block in view
|
16
18
|
template_exists?(target) ? render(file: target) : bemempty
|
@@ -26,6 +28,8 @@ module Bemonrails
|
|
26
28
|
# Element details
|
27
29
|
@element_name = name
|
28
30
|
@element_mods = builder[:elemMods]
|
31
|
+
@custom_attrs = builder[:attrs]
|
32
|
+
@custom_class = builder[:cls]
|
29
33
|
puts @element_mods
|
30
34
|
@content = builder[:content]
|
31
35
|
# Render element in block
|
@@ -34,19 +38,20 @@ module Bemonrails
|
|
34
38
|
end
|
35
39
|
alias :e :render_element
|
36
40
|
|
37
|
-
def
|
41
|
+
def render_bemattributes
|
38
42
|
if @block_name && !@element_name
|
39
43
|
classes_array = [ block(@block_name) ]
|
40
44
|
# Install mods
|
41
45
|
if @block_mods
|
42
|
-
@block_mods.each do |
|
46
|
+
@block_mods.each do |mod|
|
43
47
|
# Generate mods classes
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
48
|
+
if mod.kind_of? Hash
|
49
|
+
mod.each do |mod_name, mod_value|
|
50
|
+
classes_array.push block(@block_name) + mod(mod_name.to_s) + mod(mod_name.to_s, mod_value)
|
51
|
+
end
|
52
|
+
else
|
53
|
+
classes_array.push block(@block_name) + mod(mod.to_s)
|
54
|
+
end
|
50
55
|
# TODO: Find mod with restructure .haml, .erb or etc.
|
51
56
|
end
|
52
57
|
end
|
@@ -65,9 +70,24 @@ module Bemonrails
|
|
65
70
|
end
|
66
71
|
end
|
67
72
|
|
68
|
-
|
73
|
+
bemclass = classes_array.join(" ")
|
74
|
+
|
75
|
+
# If custom class exist
|
76
|
+
if @custom_class
|
77
|
+
bemclass = [bemclass, @custom_class].join(" ")
|
78
|
+
end
|
79
|
+
|
80
|
+
# String for tag attributes
|
81
|
+
bemattributes = { class: bemclass }
|
82
|
+
|
83
|
+
# If custom attributes exist
|
84
|
+
if @custom_attrs
|
85
|
+
bemattributes.merge! @custom_attrs
|
86
|
+
end
|
87
|
+
|
88
|
+
bemattributes
|
69
89
|
end
|
70
|
-
alias :
|
90
|
+
alias :bemattrs :render_bemattributes
|
71
91
|
|
72
92
|
def render_empty
|
73
93
|
"<div class=#{ bemclass }></div>".html_safe
|
@@ -1,7 +1,17 @@
|
|
1
1
|
- if @content.kind_of?(Array)
|
2
2
|
- @content.each do |essence|
|
3
3
|
- if essence.kind_of?(Hash) && essence[:elem]
|
4
|
-
= e essence[:elem], { content: essence[:content],
|
4
|
+
= e essence[:elem], { content: essence[:content],
|
5
|
+
mods: essence[:elemMods],
|
6
|
+
attrs: essence[:attrs],
|
7
|
+
cls: essence[:cls] }
|
8
|
+
|
9
|
+
- elsif essence.kind_of?(Hash) && essence[:block]
|
10
|
+
= b essence[:block], { content: essence[:content],
|
11
|
+
mods: essence[:mods],
|
12
|
+
attrs: essence[:attrs],
|
13
|
+
cls: essence[:cls] }
|
14
|
+
|
5
15
|
- else
|
6
16
|
= essence
|
7
17
|
- else
|
@@ -22,16 +22,16 @@ module Bemonrails
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def add_initializer
|
25
|
-
template "initializer.tt", File.join(Rails.root, "config", "initializers", "bem.rb")
|
25
|
+
template "config/initializer.tt.rb", File.join(Rails.root, "config", "initializers", "bem.rb")
|
26
26
|
end
|
27
27
|
|
28
28
|
def install_bem_tasks
|
29
|
-
template "bem.tt", File.join(Rails.root, "lib", "tasks", "bem.thor")
|
29
|
+
template "thor/bem.tt.rb", File.join(Rails.root, "lib", "tasks", "bem.thor")
|
30
30
|
end
|
31
31
|
|
32
32
|
def add_blocks_templates
|
33
33
|
%w(haml.tt coffee.tt md.tt sass.tt).each do |t|
|
34
|
-
template t, File.join(Rails.root, "lib", "tasks", "templates", t)
|
34
|
+
template "techs/#{t}", File.join(Rails.root, "lib", "tasks", "templates", t)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/bem-on-rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bem-on-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Winogradov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -86,12 +86,12 @@ files:
|
|
86
86
|
- lib/bem-on-rails/build/bem_names.rb
|
87
87
|
- lib/bem-on-rails/engine.rb
|
88
88
|
- lib/bem-on-rails/generators/install_generator.rb
|
89
|
-
- lib/bem-on-rails/generators/templates/
|
90
|
-
- lib/bem-on-rails/generators/templates/coffee.tt
|
91
|
-
- lib/bem-on-rails/generators/templates/haml.tt
|
92
|
-
- lib/bem-on-rails/generators/templates/
|
93
|
-
- lib/bem-on-rails/generators/templates/
|
94
|
-
- lib/bem-on-rails/generators/templates/
|
89
|
+
- lib/bem-on-rails/generators/templates/config/initializer.tt.rb
|
90
|
+
- lib/bem-on-rails/generators/templates/techs/coffee.tt
|
91
|
+
- lib/bem-on-rails/generators/templates/techs/haml.tt
|
92
|
+
- lib/bem-on-rails/generators/templates/techs/md.tt
|
93
|
+
- lib/bem-on-rails/generators/templates/techs/sass.tt
|
94
|
+
- lib/bem-on-rails/generators/templates/thor/bem.tt.rb
|
95
95
|
- lib/bem-on-rails/version.rb
|
96
96
|
homepage: https://github.com/verybigman/bem-on-rails
|
97
97
|
licenses:
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
115
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.0.
|
116
|
+
rubygems_version: 2.0.3
|
117
117
|
signing_key:
|
118
118
|
specification_version: 4
|
119
119
|
summary: BEM Tools for Rails applications
|