hamloft 0.1.6 → 0.1.7

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
  SHA1:
3
- metadata.gz: 743bb2f814c55041d2d8620bd3cf2ba08a1b4cb6
4
- data.tar.gz: 73fae183623bd57b20647d556f78c009e649d605
3
+ metadata.gz: 16e216815687bac00a7e0381965af9f6f29c47c0
4
+ data.tar.gz: 32862fed9404f57f38003d009f3022ee8146e048
5
5
  SHA512:
6
- metadata.gz: c797368d0c3ac8302686f56ed3e49652e713962670fec2cfbfac0c397cf2811e97fe83faee27a859e0a95ee6b3dce245b229d4a8027e87170450414cc75ea494
7
- data.tar.gz: 59074353f49ad5c532489825310cb61332a57d64bce78775c78cce08f40a90f38f9101870bd3a3e3de1ba7e773c993a1aed4d4cee388b50ff3ff11c8ad3ff63a
6
+ metadata.gz: 7c240feb3b020b594fed4ea8404668c39077bfbff2505a25362034602f8ed231db6c4b4dd4411fc3558d557451344e150c812eb2c8995b3d9eb8531965eb1170
7
+ data.tar.gz: 9cfc5d6592e3c0750e672cad0ee8e64df09a22bf6b2a3174ff44ab220dbab22a796e3068ab33e6156ff85747e0d35d9606517f92c2748fcc64ac251af64ad538
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hamloft (0.1.6)
4
+ hamloft (0.1.7)
5
5
  activesupport (~> 4.2)
6
6
  haml (~> 4.0)
7
7
  nokogiri (~> 1.6)
@@ -9,7 +9,7 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (4.2.5)
12
+ activesupport (4.2.5.1)
13
13
  i18n (~> 0.7)
14
14
  json (~> 1.7, >= 1.7.7)
15
15
  minitest (~> 5.1)
@@ -26,8 +26,8 @@ GEM
26
26
  json (1.8.3)
27
27
  method_source (0.8.2)
28
28
  mini_portile2 (2.0.0)
29
- minitest (5.8.3)
30
- nokogiri (1.6.7.1)
29
+ minitest (5.8.4)
30
+ nokogiri (1.6.7.2)
31
31
  mini_portile2 (~> 2.0.0.rc2)
32
32
  parser (2.2.2.6)
33
33
  ast (>= 1.1, < 3.0)
@@ -59,7 +59,7 @@ GEM
59
59
  ruby-progressbar (1.7.5)
60
60
  slop (3.6.0)
61
61
  thread_safe (0.3.5)
62
- tilt (2.0.1)
62
+ tilt (2.0.2)
63
63
  tzinfo (1.2.2)
64
64
  thread_safe (~> 0.1)
65
65
 
@@ -73,4 +73,4 @@ DEPENDENCIES
73
73
  rubocop (~> 0.32)
74
74
 
75
75
  BUNDLED WITH
76
- 1.10.6
76
+ 1.11.2
@@ -18,6 +18,14 @@ module Hamloft
18
18
  scope_object.instance_eval do
19
19
  extend Haml::Helpers
20
20
  extend Hamloft::Helpers
21
+
22
+ # Inject widget helpers
23
+ Hamloft.widgets.each do |widget|
24
+ if defined?(widget::Helpers)
25
+ extend widget::Helpers
26
+ end
27
+ end
28
+
21
29
  @haml_buffer = buffer
22
30
  end
23
31
  begin
@@ -33,7 +33,6 @@ module Hamloft
33
33
  block.call if block
34
34
  end
35
35
  end
36
- # <a href="http://www.google.com/?referrer=Baker" class="">
37
36
 
38
37
  def font(font_face, &block)
39
38
  haml_tag :font, :face => font_face do
@@ -67,171 +66,5 @@ module Hamloft
67
66
  block.call(widget) if block
68
67
  end
69
68
  end
70
-
71
- def column(row, &block)
72
- # get and increase span
73
- next_span = row.next_span
74
- if next_span
75
- phone_cols = (row.options[:collapse_options] == "xs") ? next_span : "12"
76
- haml_tag :div, :class => "column col-#{phone_cols} col-tablet-#{next_span} col-#{row.options[:collapse_options]}-#{next_span}" do
77
- block.call if block
78
- drop_container
79
- end
80
- else
81
- haml_tag :pre do
82
- haml_concat "ERROR: Row does not allow column at position #{row.column_count}"
83
- end
84
- end
85
- end
86
-
87
- def columns_widget(options={}, &block)
88
- widget_block(Widget::Columns.new(options)) do |widget|
89
- haml_tag :div, widget.row_options do
90
- block.call(widget) if block
91
- end
92
- end
93
- end
94
-
95
- def columns_widget_compose(key, options={}, &block)
96
- columns_widget = Widget::Columns.new(options)
97
- items = variable(key, [])
98
- # calculate row and column count
99
- row_count = (items.length.to_f / columns_widget.total_columns).ceil
100
- col_count = columns_widget.total_columns
101
- (0...row_count).each do |row_index|
102
- columns_widget(options) do |row|
103
- (0...col_count).each do |col_index|
104
- index = (row_index * col_count) + col_index
105
- block.call(row, items[index]) if not items[index].nil?
106
- end
107
- end
108
- end
109
- end
110
-
111
- def container_widget(options={}, &block)
112
- widget_block(Widget::Container.new(options)) do |widget|
113
- haml_tag :section, widget.container_options do
114
- haml_tag :div, widget.image_options do
115
- block.call if block
116
- drop_container
117
- end
118
- end
119
- end
120
- end
121
-
122
- def slider_widget(options={}, &block)
123
- widget_block(Widget::Slider.new(options)) do |widget|
124
- haml_tag :div, widget.slider_options do
125
- block.call if block
126
- end
127
- end
128
- end
129
-
130
- def slider_item(options={}, &block)
131
- haml_tag :div, class: "item" do
132
- block.call if block
133
- drop_container
134
- end
135
- end
136
-
137
- def banner_widget(options={}, &block)
138
- widget_block(Widget::Banner.new(options)) do |widget|
139
- haml_tag :div, :class => "banner-outer align-#{widget.options[:alignment]}" do
140
- haml_tag :div, :class => "banner banner-#{widget.options[:style]}" do
141
- block.call if block
142
- drop_container
143
- end
144
- end
145
- end
146
- end
147
-
148
- def youtube_widget(options={}, &block)
149
- widget_block(Widget::Youtube.new(options)) do |widget|
150
- haml_tag :div, class: "flex-video widescreen", style: style_string(widget.options, :margin, :padding) do
151
- haml_tag :iframe, src: "http://www.youtube.com/embed/#{widget.options[:youtube_id]}", type: "text/html", style: "max-width: 100%; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;", allowfullscreen: "", frameborder: "0", webkitallowfullscreen: "", mozallowfullscreen: ""
152
- end
153
- end
154
- end
155
-
156
- def yahoo_screen_widget(options={}, &block)
157
- widget_block(Widget::YahooScreen.new(options)) do |widget|
158
- haml_tag :div, class: "flex-video widescreen", style: style_string(widget.options, :margin, :padding) do
159
- haml_tag :iframe, src: "http://screen.yahoo.com/#{widget.options[:yahoo_screen_id]}.html?format=embed", type: "text/html", style: "max-width: 100%; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;", allowfullscreen: "", frameborder: "0", webkitallowfullscreen: "", mozallowfullscreen: ""
160
- end
161
- end
162
- end
163
-
164
- def image_widget_link(options={})
165
- widget_block(Widget::Image.new(options)) do |widget|
166
- haml_tag :div, :class => "image-widget align-#{widget.options[:align]}" do
167
- link options[:href] do
168
- haml_tag :img, style: style_string(widget.options, :margin, :padding), class: "image #{widget.options[:style]} #{widget.options[:magnify] ? "magnific-image" : ""}", src: widget.options[:source]
169
- end
170
- haml_tag :div, :class => "image-drop-target"
171
- end
172
- end
173
- end
174
-
175
- def horizontal_rule_widget(options={})
176
- widget_block(Widget::HorizontalRule.new(options)) do |widget|
177
- haml_tag :hr, style: "max-height: #{widget.options[:max_height]}", class: "#{widget.options[:style]} #{widget.options[:color]}"
178
- end
179
- end
180
-
181
- def image_widget(options={})
182
- widget_block(Widget::Image.new(options)) do |widget|
183
- haml_tag :div, :class => "image-widget align-#{widget.options[:align]}", style: style_string(widget.options, :margin, :padding) do
184
- haml_tag :img, class: "image #{widget.options[:style]} #{widget.options[:magnify] ? "magnific-image" : ""}", src: widget.options[:source]
185
- haml_tag :div, class: "image-drop-target"
186
- end
187
- end
188
- end
189
-
190
- def heading_widget(options={}, contents=nil, &block)
191
- if options.class.name == "String"
192
- contents = options
193
- options = {}
194
- end
195
- widget_block(Widget::Heading.new(options)) do |widget|
196
- haml_tag :header, :class => "#{widget.options[:style]} align-#{widget.options[:align]}", style: style_string(widget.options, :margin, :padding) do
197
- haml_tag widget.options[:type], :class => "_typeloft_editable _typeloft_widget_autoselect" do
198
- haml_concat(contents) if contents
199
- block.call if block
200
- end
201
- end
202
- end
203
- end
204
-
205
- def paragraph_widget(options={}, contents=nil, &block)
206
- if options.class.name == "String"
207
- contents = options
208
- options = {}
209
- end
210
- widget_block(Widget::Paragraph.new(options)) do |widget|
211
- haml_tag :div, :style => style = style_string(widget.options, :margin, :padding), :class => "paragraph _typeloft_editable _typeloft_widget_autoselect #{widget.options[:style]} align-#{widget.options[:align]} size-#{widget.options[:size]}" do
212
- haml_concat(contents) if contents
213
- block.call if block
214
- end
215
- end
216
- end
217
-
218
- def button_widget(options={}, contents=nil, &block)
219
- if options.class.name == "String"
220
- contents = options
221
- options = {}
222
- end
223
- widget_block(Widget::Button.new(options)) do |widget|
224
- haml_tag :a, widget.button_options do
225
- if widget.options[:media] and !widget.options[:media].blank?
226
- haml_tag :video do
227
- haml_tag :source, {src: widget.options[:media], type: "video/mp4"}
228
- end
229
- end
230
- haml_concat(contents) if contents
231
- block.call if block
232
- end
233
- end
234
- end
235
-
236
69
  end
237
70
  end
@@ -1,3 +1,3 @@
1
1
  module Hamloft
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -0,0 +1,30 @@
1
+ module Hamloft
2
+ class Widget
3
+ include Hamloft::Helpers
4
+ attr_accessor :options
5
+
6
+ def identifier
7
+ "base"
8
+ end
9
+
10
+ def defaults
11
+ {}
12
+ end
13
+
14
+ def initialize(options)
15
+ @options = defaults.merge(options)
16
+ end
17
+
18
+ def typeloft_widget_options
19
+ attributes = {
20
+ :class => "_typeloft_widget",
21
+ :"data-widget-identifier" => identifier
22
+ }
23
+ @options.each do |k, v|
24
+ attributes["data-attribute-#{k}"] = v
25
+ end
26
+ attributes
27
+ end
28
+
29
+ end
30
+ end
data/lib/hamloft.rb CHANGED
@@ -6,21 +6,11 @@ require "hamloft/options"
6
6
  require "hamloft/style_builder"
7
7
  require "hamloft/helpers"
8
8
  require "hamloft/template"
9
- require "hamloft/widget/base"
10
- require "hamloft/widget/container"
11
- require "hamloft/widget/columns"
12
- require "hamloft/widget/image"
13
- require "hamloft/widget/heading"
14
- require "hamloft/widget/button"
15
- require "hamloft/widget/paragraph"
16
- require "hamloft/widget/banner"
17
- require "hamloft/widget/youtube"
18
- require "hamloft/widget/yahoo_screen"
19
- require "hamloft/widget/horizontal_rule"
20
- require "hamloft/widget/slider"
9
+ require "hamloft/widget"
21
10
 
22
11
  module Hamloft
23
12
  @@_templates = {}
13
+ @@_widgets = []
24
14
 
25
15
  def self.render(haml, variables={})
26
16
  Hamloft::Engine.new(haml, remove_whitespace: true).render(Object.new, variables)
@@ -30,6 +20,14 @@ module Hamloft
30
20
  @@_templates[key] = template
31
21
  end
32
22
 
23
+ def self.register_widget(klass)
24
+ @@_widgets.push(klass)
25
+ end
26
+
27
+ def self.widgets
28
+ @@_widgets
29
+ end
30
+
33
31
  def self.template(key)
34
32
  @@_templates[key]
35
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamloft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Strebitzer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-25 00:00:00.000000000 Z
11
+ date: 2016-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml
@@ -114,18 +114,7 @@ files:
114
114
  - lib/hamloft/style_builder.rb
115
115
  - lib/hamloft/template.rb
116
116
  - lib/hamloft/version.rb
117
- - lib/hamloft/widget/banner.rb
118
- - lib/hamloft/widget/base.rb
119
- - lib/hamloft/widget/button.rb
120
- - lib/hamloft/widget/columns.rb
121
- - lib/hamloft/widget/container.rb
122
- - lib/hamloft/widget/heading.rb
123
- - lib/hamloft/widget/horizontal_rule.rb
124
- - lib/hamloft/widget/image.rb
125
- - lib/hamloft/widget/paragraph.rb
126
- - lib/hamloft/widget/slider.rb
127
- - lib/hamloft/widget/yahoo_screen.rb
128
- - lib/hamloft/widget/youtube.rb
117
+ - lib/hamloft/widget.rb
129
118
  - spec/fixtures/template/tumblr.rb
130
119
  - spec/fixtures/test.haml
131
120
  - spec/hamloft_spec.rb
@@ -150,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
139
  version: '0'
151
140
  requirements: []
152
141
  rubyforge_project:
153
- rubygems_version: 2.4.8
142
+ rubygems_version: 2.5.1
154
143
  signing_key:
155
144
  specification_version: 4
156
145
  summary: Hamloft - MagLoft Widget Parser.
@@ -1,18 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Banner < Base
4
-
5
- def identifier
6
- "banner"
7
- end
8
-
9
- def defaults
10
- {
11
- style: "dark",
12
- alignment: "center"
13
- }
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,33 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Base
4
- include Hamloft::Helpers
5
- attr_accessor :options
6
-
7
- def identifier
8
- "base"
9
- end
10
-
11
- def defaults
12
- {}
13
- end
14
-
15
- def initialize(options)
16
- @options = defaults.merge(options)
17
- end
18
-
19
- def typeloft_widget_options
20
- attributes = {
21
- :class => "_typeloft_widget",
22
- :"data-widget-identifier" => identifier
23
- }
24
- @options.each do |k, v|
25
- attributes["data-attribute-#{k}"] = v
26
- end
27
- attributes
28
- end
29
-
30
- end
31
-
32
- end
33
- end
@@ -1,32 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Button < Base
4
-
5
- def identifier
6
- "button"
7
- end
8
-
9
- def defaults
10
- {
11
- style: "primary",
12
- type: "btn-fit",
13
- size: "btn-lg",
14
- media: false
15
- }
16
- end
17
-
18
- def button_classes
19
- classes = ["btn", "btn-#{@options[:style]}", @options[:size], @options[:type], "_typeloft_editable"]
20
- classes.push("btn-media") if @options[:media]
21
- classes.join(" ")
22
- end
23
-
24
- def button_options
25
- result = {class: button_classes, href: (@options[:href] or "#"), style: style_string(@options, :margin, :padding)}
26
- result["data-media"] = @options[:media] if @options[:media] and !@options[:media].empty?
27
- result
28
- end
29
-
30
- end
31
- end
32
- end
@@ -1,49 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Columns < Base
4
- attr_reader :columns
5
- attr_reader :column_count
6
- attr_reader :total_columns
7
-
8
- def initialize(options)
9
- super(options)
10
- @column_count = 0
11
- column_array = @options[:columns].to_s.split("x")
12
- if column_array.length == 1
13
- @total_columns = column_array[0].to_i
14
- @columns = Array.new(@total_columns) { 12 / @total_columns }
15
- else
16
- @total_columns = column_array.length
17
- @columns = column_array
18
- end
19
- end
20
-
21
- def next_span
22
- value = @columns[@column_count]
23
- @column_count = @column_count + 1
24
- value
25
- end
26
-
27
- def row_options
28
- {
29
- class: "row row-#{@options[:style]}",
30
- style: style_string(@options, :margin_bottom)
31
- }
32
- end
33
-
34
- def identifier
35
- "columns"
36
- end
37
-
38
- def defaults
39
- {
40
- columns: "2",
41
- style: "default",
42
- margin_bottom: "",
43
- collapse_options: "sm"
44
- }
45
- end
46
-
47
- end
48
- end
49
- end
@@ -1,73 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Container < Base
4
-
5
- def identifier
6
- "container"
7
- end
8
-
9
- def defaults
10
- {
11
- animate: "none",
12
- image_source: false,
13
- image_position: "center_center",
14
- image_size: "cover",
15
- parallax_effect: "none",
16
- background_color: "",
17
- bg_color: "",
18
- opacity: "",
19
- border_radius: "",
20
- border_width: "",
21
- border_style: "",
22
- style: "default",
23
- padding_top: "",
24
- padding_right: "",
25
- padding_bottom: "",
26
- padding_left: "",
27
- min_height: "",
28
- max_height: "",
29
- margin_top: "",
30
- margin_right: "",
31
- margin_bottom: "",
32
- margin_left: ""
33
- }
34
- end
35
-
36
- def container_options
37
- result = {class: container_classes, style: container_styles}
38
- result["data-parallax-style"] = @options[:parallax_effect] if not @options[:parallax_effect].empty? and @options[:parallax_effect] != "none"
39
- result
40
- end
41
-
42
- def image_options
43
- {class: "one-container-image", style: image_styles}
44
- end
45
-
46
- def container_classes
47
- classes = ["one-container"]
48
- classes.push("animate #{@options[:animate]}") if @options[:animate] != "none"
49
- classes.push("container-#{@options[:style]}") if not @options[:style].empty?
50
- classes.push("container-image-#{@options[:image_size]}") if not @options[:image_size].empty?
51
- classes.push("container-parallax") if not @options[:parallax_effect].empty? and @options[:parallax_effect] != "none"
52
- classes.join(" ")
53
- end
54
-
55
- def container_styles
56
- style_string @options, :opacity, :border, :opacity, :border_radius, :border_width, :border_style, :margin do |sb|
57
- sb.add(:background_color, @options[:background_color] == "custom" ? @options[:bg_color] : nil)
58
- if @options[:background_color] == "overlay"
59
- sb.add(:background_image, @options[:image_source], "linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url(<%= value %>)")
60
- else
61
- sb.add(:background_image, @options[:image_source], "url(<%= value %>)")
62
- end
63
- sb.add(:background_position, @options[:image_position], "<%= value.split('_').join(' ') %>")
64
- end
65
- end
66
-
67
- def image_styles
68
- style_string @options, :min_height, :max_height, :padding
69
- end
70
-
71
- end
72
- end
73
- end
@@ -1,19 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Heading < Base
4
-
5
- def identifier
6
- "heading"
7
- end
8
-
9
- def defaults
10
- {
11
- type: "h1",
12
- style: "default",
13
- align: "left"
14
- }
15
- end
16
-
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class HorizontalRule < Base
4
-
5
- def identifier
6
- "horizontal_rule"
7
- end
8
-
9
- def defaults
10
- {
11
- style: 'solid',
12
- color: 'dark',
13
- max_height: 'inherit'
14
- }
15
- end
16
-
17
- end
18
- end
19
- end
@@ -1,21 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Image < Base
4
-
5
- def identifier
6
- "image"
7
- end
8
-
9
- def defaults
10
- {
11
- style: "img-responsive",
12
- align: "center",
13
- source: false,
14
- magnify: false,
15
- margin_bottom: "0"
16
- }
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,20 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Paragraph < Base
4
-
5
- def identifier
6
- "paragraph"
7
- end
8
-
9
- def defaults
10
- {
11
- style: "default",
12
- align: "left",
13
- size: "md",
14
- margin_bottom: ""
15
- }
16
- end
17
-
18
- end
19
- end
20
- end
@@ -1,34 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Slider < Base
4
-
5
- def identifier
6
- "slider"
7
- end
8
-
9
- def defaults
10
- {
11
- slides: "3",
12
- height: "auto",
13
- margin_bottom: "0px",
14
- background_color: "#EEEEEE",
15
- autoplay: "true",
16
- autoplay_timeout: "3000"
17
- }
18
- end
19
-
20
- def slider_options
21
- data = {autoplay: @options[:autoplay], autoplay_timeout: @options[:autoplay_timeout]}
22
- {class: "owl-carousel", style: slider_styles, data: data}
23
- end
24
-
25
- def slider_styles
26
- style_string @options, :margin, :height, :background_color do |sb|
27
- sb.add(:min_height, "200px")
28
- sb.add(:overflow, "hidden")
29
- end
30
- end
31
-
32
- end
33
- end
34
- end
@@ -1,19 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class YahooScreen < Base
4
-
5
- def identifier
6
- "yahoo_screen"
7
- end
8
-
9
- def defaults
10
- {
11
- yahoo_screen_id: "apple-iwatch-iphone-6-135616256",
12
- width: "800",
13
- height: "600"
14
- }
15
- end
16
-
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- module Hamloft
2
- module Widget
3
- class Youtube < Base
4
-
5
- def identifier
6
- "youtube"
7
- end
8
-
9
- def defaults
10
- {
11
- youtube_id: "LFYNP40vfmE",
12
- width: "800",
13
- height: "600"
14
- }
15
- end
16
-
17
- end
18
- end
19
- end