ultimate-base 0.2.4 → 0.3.0.alpha
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -1
- data/.rvmrc +0 -1
- data/.rvmrc.example +0 -1
- data/Gemfile +6 -0
- data/Gemfile.lock +113 -1
- data/app/assets/javascripts/ultimate/backbone/base.js.coffee +14 -2
- data/app/assets/javascripts/ultimate/backbone/extra/jquery-plugin-adapter.js.coffee +1 -1
- data/app/assets/javascripts/ultimate/backbone/model.js.coffee +6 -0
- data/app/assets/javascripts/ultimate/backbone/view.js.coffee +5 -4
- data/app/assets/javascripts/ultimate/backbone/views/slider.js.coffee +4 -1
- data/app/assets/javascripts/ultimate/helpers/asset_tag.js.coffee +71 -54
- data/app/assets/javascripts/ultimate/helpers/base.js.coffee +3 -0
- data/app/assets/javascripts/ultimate/helpers/decor.js.coffee +19 -14
- data/app/assets/javascripts/ultimate/helpers/number.js.coffee +600 -0
- data/app/assets/javascripts/ultimate/helpers/record_tag.js.coffee +66 -0
- data/app/assets/javascripts/ultimate/helpers/tag.js.coffee +77 -0
- data/app/assets/javascripts/ultimate/helpers/url.js.coffee +49 -0
- data/app/assets/javascripts/ultimate/helpers.js.coffee +39 -66
- data/app/assets/javascripts/ultimate/{devise.js.coffee → improves/devise.js.coffee} +0 -0
- data/app/assets/javascripts/ultimate/improves/i18n-lite.js.coffee +18 -12
- data/app/assets/javascripts/ultimate/improves/magic-radios.js.coffee +2 -0
- data/app/assets/javascripts/ultimate/improves/typed-fields.js.coffee +13 -14
- data/app/assets/javascripts/ultimate/{base.js.coffee → jquery.base.js.coffee} +24 -37
- data/app/assets/javascripts/ultimate/{experimental/_inflections → underscore}/underscore.inflection.js +19 -18
- data/app/assets/javascripts/ultimate/underscore/underscore.outcasts.js.coffee +123 -0
- data/app/assets/javascripts/ultimate/underscore/underscore.string.js +16 -6
- data/config/routes.rb +2 -0
- data/lib/{ultimate-base → ultimate/base}/engine.rb +1 -0
- data/lib/{ultimate-base → ultimate/base}/version.rb +1 -1
- data/lib/ultimate/base.rb +10 -0
- data/lib/{ultimate-base → ultimate}/extensions/directive_processor.rb +0 -0
- data/lib/{ultimate-base → ultimate}/extensions/sass_script_functions.rb +0 -0
- data/scripts/rails +8 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/_emfile +18 -0
- data/{app/assets/javascripts/ultimate/helpers/forms.js.coffee → test/dummy/app/assets/images/.gitkeep} +0 -0
- data/test/dummy/app/assets/javascripts/application.js +3 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/assets/stylesheets/global/forms.css.scss +65 -0
- data/test/dummy/app/assets/stylesheets/global/layout/footer.scss +18 -0
- data/test/dummy/app/assets/stylesheets/global/layout/header.scss +13 -0
- data/test/dummy/app/assets/stylesheets/global/layout/main-menu.scss +68 -0
- data/test/dummy/app/assets/stylesheets/global/layout.css.scss +46 -0
- data/test/dummy/app/assets/stylesheets/global/reserved.css.scss +79 -0
- data/test/dummy/app/assets/stylesheets/global/reset.css.scss +85 -0
- data/test/dummy/app/assets/stylesheets/global/structures.css.scss +9 -0
- data/test/dummy/app/assets/stylesheets/import/base.scss +34 -0
- data/test/dummy/app/assets/stylesheets/plugins/qunit.css.scss +3 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/controllers/main_controller.rb +8 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/views/application/_footer.html.haml +3 -0
- data/test/dummy/app/views/application/_header.html.haml +4 -0
- data/test/dummy/app/views/application/_main_menu.html.haml +11 -0
- data/test/dummy/app/views/layouts/application.html.haml +24 -0
- data/test/dummy/app/views/main/index.html.haml +13 -0
- data/test/dummy/app/views/main/qunit.html.haml +7 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +40 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/qunit-rails.rb +1 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +63 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/javascripts/all_tests.js.coffee +13 -0
- data/test/javascripts/test_helper.js.coffee +3 -0
- data/test/javascripts/tests/base_test.js.coffee +42 -0
- data/test/javascripts/tests/helpers/asset_tag_test.js.coffee +51 -0
- data/test/javascripts/tests/helpers/number_test.js.coffee +250 -0
- data/test/javascripts/tests/helpers/record_tag_test.js.coffee +56 -0
- data/test/javascripts/tests/helpers/tag_test.js.coffee +33 -0
- data/test/javascripts/tests/helpers/url_test.js.coffee +28 -0
- data/test/javascripts/tests/helpers_test.js.coffee +47 -0
- data/test/javascripts/tests/improves/i18n-lite_test.js.coffee +25 -0
- data/test/javascripts/tests/underscore/underscore.outcasts.test.js.coffee +38 -0
- data/test/stylesheets/test_helper.css +4 -0
- data/ultimate-base.gemspec +4 -4
- metadata +116 -24
- data/app/assets/javascripts/ultimate/bus.js.coffee +0 -57
- data/app/assets/javascripts/ultimate/experimental/_inflections/dzone.inflections.js +0 -154
- data/app/assets/javascripts/ultimate/helpers/array.js.coffee +0 -63
- data/app/assets/javascripts/ultimate/helpers/tags.js.coffee +0 -73
- data/app/assets/javascripts/ultimate/widgets/dock.js.coffee +0 -70
- data/app/assets/javascripts/ultimate/widgets/gear.js.coffee +0 -84
- data/app/assets/javascripts/ultimate/widgets/jquery-ext.js.coffee +0 -104
- data/app/assets/javascripts/ultimate/widgets/jquery.adapter.js.coffee +0 -62
- data/app/assets/javascripts/ultimate/widgets/widget.js.coffee +0 -115
- data/lib/ultimate-base.rb +0 -10
data/.gitignore
CHANGED
data/.rvmrc
CHANGED
data/.rvmrc.example
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,126 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ultimate-base (0.
|
4
|
+
ultimate-base (0.3.0.alpha)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
+
actionmailer (3.2.8)
|
10
|
+
actionpack (= 3.2.8)
|
11
|
+
mail (~> 2.4.4)
|
12
|
+
actionpack (3.2.8)
|
13
|
+
activemodel (= 3.2.8)
|
14
|
+
activesupport (= 3.2.8)
|
15
|
+
builder (~> 3.0.0)
|
16
|
+
erubis (~> 2.7.0)
|
17
|
+
journey (~> 1.0.4)
|
18
|
+
rack (~> 1.4.0)
|
19
|
+
rack-cache (~> 1.2)
|
20
|
+
rack-test (~> 0.6.1)
|
21
|
+
sprockets (~> 2.1.3)
|
22
|
+
activemodel (3.2.8)
|
23
|
+
activesupport (= 3.2.8)
|
24
|
+
builder (~> 3.0.0)
|
25
|
+
activerecord (3.2.8)
|
26
|
+
activemodel (= 3.2.8)
|
27
|
+
activesupport (= 3.2.8)
|
28
|
+
arel (~> 3.0.2)
|
29
|
+
tzinfo (~> 0.3.29)
|
30
|
+
activeresource (3.2.8)
|
31
|
+
activemodel (= 3.2.8)
|
32
|
+
activesupport (= 3.2.8)
|
33
|
+
activesupport (3.2.8)
|
34
|
+
i18n (~> 0.6)
|
35
|
+
multi_json (~> 1.0)
|
36
|
+
arel (3.0.2)
|
37
|
+
builder (3.0.0)
|
38
|
+
coffee-rails (3.2.2)
|
39
|
+
coffee-script (>= 2.2.0)
|
40
|
+
railties (~> 3.2.0)
|
41
|
+
coffee-script (2.2.0)
|
42
|
+
coffee-script-source
|
43
|
+
execjs
|
44
|
+
coffee-script-source (1.3.3)
|
45
|
+
erubis (2.7.0)
|
46
|
+
execjs (1.4.0)
|
47
|
+
multi_json (~> 1.0)
|
48
|
+
haml (3.1.4)
|
49
|
+
haml-rails (0.3.4)
|
50
|
+
actionpack (~> 3.0)
|
51
|
+
activesupport (~> 3.0)
|
52
|
+
haml (~> 3.0)
|
53
|
+
railties (~> 3.0)
|
54
|
+
hike (1.2.1)
|
55
|
+
i18n (0.6.0)
|
56
|
+
journey (1.0.4)
|
57
|
+
jquery-rails (2.1.1)
|
58
|
+
railties (>= 3.1.0, < 5.0)
|
59
|
+
thor (~> 0.14)
|
60
|
+
json (1.7.5)
|
61
|
+
mail (2.4.4)
|
62
|
+
i18n (>= 0.4.0)
|
63
|
+
mime-types (~> 1.16)
|
64
|
+
treetop (~> 1.4.8)
|
65
|
+
mime-types (1.19)
|
66
|
+
multi_json (1.3.6)
|
67
|
+
polyglot (0.3.3)
|
68
|
+
quiet_assets (1.0.0)
|
69
|
+
rails (~> 3.1)
|
70
|
+
qunit-rails (0.0.2)
|
71
|
+
railties (~> 3.2.3)
|
72
|
+
rack (1.4.1)
|
73
|
+
rack-cache (1.2)
|
74
|
+
rack (>= 0.4)
|
75
|
+
rack-ssl (1.3.2)
|
76
|
+
rack
|
77
|
+
rack-test (0.6.1)
|
78
|
+
rack (>= 1.0)
|
79
|
+
rails (3.2.8)
|
80
|
+
actionmailer (= 3.2.8)
|
81
|
+
actionpack (= 3.2.8)
|
82
|
+
activerecord (= 3.2.8)
|
83
|
+
activeresource (= 3.2.8)
|
84
|
+
activesupport (= 3.2.8)
|
85
|
+
bundler (~> 1.0)
|
86
|
+
railties (= 3.2.8)
|
87
|
+
railties (3.2.8)
|
88
|
+
actionpack (= 3.2.8)
|
89
|
+
activesupport (= 3.2.8)
|
90
|
+
rack-ssl (~> 1.3.2)
|
91
|
+
rake (>= 0.8.7)
|
92
|
+
rdoc (~> 3.4)
|
93
|
+
thor (>= 0.14.6, < 2.0)
|
94
|
+
rake (0.9.2.2)
|
95
|
+
rdoc (3.12)
|
96
|
+
json (~> 1.4)
|
97
|
+
sass (3.1.14)
|
98
|
+
sass-rails (3.2.4)
|
99
|
+
railties (~> 3.2.0)
|
100
|
+
sass (>= 3.1.10)
|
101
|
+
tilt (~> 1.3)
|
102
|
+
sprockets (2.1.3)
|
103
|
+
hike (~> 1.2)
|
104
|
+
rack (~> 1.0)
|
105
|
+
tilt (~> 1.1, != 1.3.0)
|
106
|
+
sqlite3 (1.3.6)
|
107
|
+
thor (0.16.0)
|
108
|
+
tilt (1.3.3)
|
109
|
+
treetop (1.4.10)
|
110
|
+
polyglot
|
111
|
+
polyglot (>= 0.3.1)
|
112
|
+
tzinfo (0.3.33)
|
9
113
|
|
10
114
|
PLATFORMS
|
11
115
|
ruby
|
12
116
|
|
13
117
|
DEPENDENCIES
|
118
|
+
coffee-rails (~> 3.2.1)
|
119
|
+
haml-rails
|
120
|
+
jquery-rails
|
121
|
+
quiet_assets
|
122
|
+
qunit-rails
|
123
|
+
rails (~> 3.2.8)
|
124
|
+
sass-rails (~> 3.2.3)
|
125
|
+
sqlite3
|
14
126
|
ultimate-base!
|
@@ -1,6 +1,12 @@
|
|
1
|
+
# require:
|
2
|
+
# jquery ~> 1.7.0
|
3
|
+
# underscore ~> 1.3.0
|
4
|
+
|
1
5
|
#= require ultimate/helpers
|
2
6
|
|
3
|
-
|
7
|
+
@Ultimate ||= {}
|
8
|
+
|
9
|
+
@Ultimate.Backbone =
|
4
10
|
|
5
11
|
debugMode: false
|
6
12
|
|
@@ -10,6 +16,12 @@
|
|
10
16
|
Array::push.apply a, arguments if arguments.length > 0
|
11
17
|
cout.apply @, a
|
12
18
|
|
13
|
-
isView: (
|
19
|
+
isView: (view) -> view instanceof Backbone.View
|
14
20
|
|
15
21
|
isViewClass: (viewClass) -> (viewClass::) instanceof Backbone.View
|
22
|
+
|
23
|
+
isModel: (model) -> model instanceof Backbone.Model
|
24
|
+
|
25
|
+
isCollection: (collection) -> collection instanceof Backbone.Collection
|
26
|
+
|
27
|
+
isRouter: (router) -> router instanceof Backbone.Router
|
@@ -27,7 +27,7 @@ do ($ = jQuery) ->
|
|
27
27
|
return jContainer unless argsLength
|
28
28
|
command = "_configure"
|
29
29
|
if view[command]
|
30
|
-
return
|
30
|
+
return _.result(view, command)
|
31
31
|
else
|
32
32
|
$.error "Command [#{command}] does not exist on jQuery.#{pluginName}()"
|
33
33
|
else
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# * Require ./../underscore/underscore.string
|
2
|
+
# * Require ./../underscore/underscore.inflection
|
1
3
|
#= require ./base
|
2
4
|
|
3
5
|
class Ultimate.Backbone.Model extends Backbone.Model
|
@@ -14,3 +16,7 @@ class Ultimate.Backbone.Model extends Backbone.Model
|
|
14
16
|
@fetch success: (=> @readyDeferred.resolve()), silent: true
|
15
17
|
else
|
16
18
|
callback.apply context, [@]
|
19
|
+
|
20
|
+
singular: ->
|
21
|
+
_.singularize(_.string.underscored(constructor.name))
|
22
|
+
(@className or @constructor.name or 'Model')
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# * Require ./../underscore/underscore.outcasts
|
1
2
|
#= require ./base
|
2
3
|
|
3
4
|
class Ultimate.Backbone.View extends Backbone.View
|
@@ -47,7 +48,7 @@ class Ultimate.Backbone.View extends Backbone.View
|
|
47
48
|
_isObject = _.isObject(selector)
|
48
49
|
if _isObject
|
49
50
|
nestedNodes = selector
|
50
|
-
selector =
|
51
|
+
selector = _.outcasts.delete(nestedNodes, "selector")
|
51
52
|
jNodes[nodeName] = @[nodeName] = jRoot.find(selector)
|
52
53
|
if _isObject
|
53
54
|
_.extend jNodes, @findNodes(jNodes[nodeName], nestedNodes)
|
@@ -66,12 +67,12 @@ class Ultimate.Backbone.View extends Backbone.View
|
|
66
67
|
delegateEventSplitter = /^(\S+)\s*(.*)$/
|
67
68
|
|
68
69
|
normalizeEvents: (events) ->
|
69
|
-
events =
|
70
|
+
events = _.result(@, "events") unless events
|
70
71
|
if events
|
71
72
|
normalizedEvents = {}
|
72
73
|
for key, method of events
|
73
74
|
[[], eventName, selector] = key.match(delegateEventSplitter)
|
74
|
-
selector =
|
75
|
+
selector = _.result(@, selector)
|
75
76
|
selector = selector.selector if selector instanceof jQuery
|
76
77
|
if _.isString(selector)
|
77
78
|
key = "#{eventName} #{selector}"
|
@@ -87,7 +88,7 @@ class Ultimate.Backbone.View extends Backbone.View
|
|
87
88
|
@initTranslations()
|
88
89
|
@reflectOptions()
|
89
90
|
|
90
|
-
reflectOptions: (viewOptions =
|
91
|
+
reflectOptions: (viewOptions = _.result(@, "viewOptions"), options = @options) ->
|
91
92
|
@[attr] = options[attr] for attr in viewOptions when typeof options[attr] isnt "undefined"
|
92
93
|
@[attr] = value for attr, value of options when typeof @[attr] isnt "undefined"
|
93
94
|
@
|
@@ -1,3 +1,6 @@
|
|
1
|
+
# TODO timeout without cycling, maybe bouce effect
|
2
|
+
# TODO mousewheel
|
3
|
+
|
1
4
|
Ultimate.Backbone.Views ||= {}
|
2
5
|
|
3
6
|
class Ultimate.Backbone.Views.Slider extends Ultimate.Backbone.View
|
@@ -39,7 +42,7 @@ class Ultimate.Backbone.Views.Slider extends Ultimate.Backbone.View
|
|
39
42
|
if @totalItems
|
40
43
|
@jItems.each (index) -> $(@).attr "data-slide-index", index
|
41
44
|
jFirstItem = @jItems.first()
|
42
|
-
@itemSize = jFirstItem[_.camelize("outer-#{@sizeAttr}")](true)
|
45
|
+
@itemSize = jFirstItem[_.string.camelize("outer-#{@sizeAttr}")](true)
|
43
46
|
needSize = @totalItems * @itemSize
|
44
47
|
@jLine[@sizeAttr](needSize) if @jLine[@sizeAttr]() < needSize
|
45
48
|
@displayItems = Math.round(@jDisplay[@sizeAttr]() / @itemSize)
|
@@ -1,63 +1,80 @@
|
|
1
|
+
#= require ./base
|
2
|
+
#= require ./tag
|
1
3
|
|
2
|
-
@
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
@
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
4
|
+
@Ultimate.Helpers.AssetTag =
|
5
|
+
|
6
|
+
favicon_link_tag: (source = 'favicon.ico', options = {}) ->
|
7
|
+
tag 'link', _.extend {},
|
8
|
+
rel: 'shortcut icon'
|
9
|
+
type: 'image/vnd.microsoft.icon'
|
10
|
+
href: @path_to_image(source)
|
11
|
+
, options
|
12
|
+
|
13
|
+
image_path: (source) ->
|
14
|
+
if source then @compute_public_path(source, 'images') else ''
|
15
|
+
|
16
|
+
path_to_image: (args...) -> @image_path args... # aliased to avoid conflicts with an image_path named route
|
17
|
+
|
18
|
+
image_tag: (source, options = {}) ->
|
19
|
+
src = options['src'] = @path_to_image(source)
|
20
|
+
if _.isUndefined(options['alt']) and src and not /^(?:cid|data):/.test(src)
|
21
|
+
options['alt'] = @image_alt(src)
|
22
|
+
if size = _.outcasts.delete(options, 'size')
|
23
|
+
if matches = size.match(/^(\d+)x(\d+)$/)
|
24
|
+
options['width'] = matches[1]
|
25
|
+
options['height'] = matches[2]
|
26
|
+
Ultimate.Helpers.Tag.tag 'img', options
|
27
|
+
|
28
|
+
image_alt: (src) ->
|
29
|
+
_.string.capitalize @without_extension(@basename(src)).replace(/-[A-Fa-f0-9]{32}/, '')
|
28
30
|
|
29
|
-
@rewrite_relative_url_root = (source, relative_url_root) ->
|
30
|
-
if relative_url_root and not _.startsWith(source, "#{relative_url_root}/")
|
31
|
-
"#{relative_url_root}#{source}"
|
32
|
-
else
|
33
|
-
source
|
34
31
|
|
35
|
-
@RELATIVE_URL_ROOT = ''
|
36
32
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
33
|
+
# ===================== AssetPaths =====================
|
34
|
+
|
35
|
+
URI_REGEXP: /^[-a-z]+:\/\/|^(?:cid|data):|^\/\//
|
36
|
+
|
37
|
+
is_uri: (path) ->
|
38
|
+
@URI_REGEXP.test(path)
|
39
|
+
|
40
|
+
RELATIVE_URL_ROOT: ''
|
41
|
+
|
42
|
+
compute_public_path: (source, dir, options = {}) ->
|
43
|
+
return source if @is_uri(source)
|
44
|
+
source = @rewrite_extension(source, options['ext']) if options['ext']
|
45
|
+
source = @rewrite_asset_path(source, dir)
|
46
|
+
source = @rewrite_relative_url_root(source, @RELATIVE_URL_ROOT)
|
47
|
+
source
|
48
|
+
|
49
|
+
rewrite_extension: (source, ext) ->
|
50
|
+
"#{@without_extension source}.#{ext}"
|
43
51
|
|
44
|
-
|
45
|
-
|
52
|
+
without_extension: (source) ->
|
53
|
+
source.replace /^(.+)(\.\w+)$/, '$1'
|
46
54
|
|
47
|
-
|
55
|
+
ASSET_ID: ''
|
56
|
+
asset_ids_cache: {}
|
57
|
+
# Use the ASSET_ID inscope variable or the random hash as its cache-busting asset id.
|
58
|
+
asset_id: (source) ->
|
59
|
+
if _.isString @ASSET_ID
|
60
|
+
@ASSET_ID
|
61
|
+
else
|
62
|
+
@asset_ids_cache[source] or (@asset_ids_cache[source] = 10000000 + Math.floor(Math.random() * 90000000))
|
48
63
|
|
49
|
-
|
50
|
-
|
64
|
+
# Break out the asset path rewrite in case plugins wish to put the asset id
|
65
|
+
# someplace other than the query string.
|
66
|
+
rewrite_asset_path: (source, dir) ->
|
67
|
+
source = "/#{dir}/#{source}" unless source[0] is '/'
|
68
|
+
if id = @asset_id(source)
|
69
|
+
"#{source}?#{id}"
|
70
|
+
else
|
71
|
+
source
|
51
72
|
|
52
|
-
|
53
|
-
|
73
|
+
rewrite_relative_url_root: (source, relative_url_root) ->
|
74
|
+
if relative_url_root and not _.startsWith(source, "#{relative_url_root}/")
|
75
|
+
"#{relative_url_root}#{source}"
|
76
|
+
else
|
77
|
+
source
|
54
78
|
|
55
|
-
|
56
|
-
|
57
|
-
unless options['alt'] or /^cid:/.test src
|
58
|
-
options['alt'] = @image_alt(src)
|
59
|
-
if size = _delete(options, 'size')
|
60
|
-
if matches = size.match /^(\d+)x(\d+)$/
|
61
|
-
options['width'] = matches[1]
|
62
|
-
options['height'] = matches[2]
|
63
|
-
tag 'img', options
|
79
|
+
basename: (source) ->
|
80
|
+
source = matches[2] if matches = source.match(/^(.*\/)?(.+)?$/)
|
@@ -1,14 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
1
|
+
#= require ./base
|
2
|
+
#= require ./tag
|
3
|
+
|
4
|
+
@Ultimate.Helpers.Decor =
|
5
|
+
|
6
|
+
g_decor_body: (tag, inner) ->
|
7
|
+
content_tag(tag, '', class: 'left') +
|
8
|
+
content_tag(tag, '', class: 'right') +
|
9
|
+
content_tag(tag, inner, class: 'fill')
|
10
|
+
|
11
|
+
g_star_decor_body: (tag, inner) ->
|
12
|
+
content_tag(tag, inner, class: 'wrapper') +
|
13
|
+
content_tag(tag, '', class: 'corner left top') +
|
14
|
+
content_tag(tag, '', class: 'corner right top') +
|
15
|
+
content_tag(tag, '', class: 'corner left bottom') +
|
16
|
+
content_tag(tag, '', class: 'corner right bottom')
|
17
|
+
|
18
|
+
g_wrapper_decor_body: (tag, inner) ->
|
19
|
+
content_tag tag, inner, class: 'wrapper'
|