haml-more 0.4.0 → 0.5.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.
- data/README.md +1 -1
- data/lib/haml/more.rb +10 -2
- data/lib/haml/more/coffee_script.rb +1 -1
- data/lib/haml/more/javascript.rb +102 -0
- metadata +18 -6
data/README.md
CHANGED
data/lib/haml/more.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
require "haml"
|
2
2
|
require "sass/more"
|
3
|
-
require "monkey"
|
3
|
+
require "monkey-lib"
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'escape_utils/html/haml'
|
7
|
+
rescue LoadError
|
8
|
+
if Monkey::Engine.mri? or Monkey::Engine.rbx?
|
9
|
+
warn "Please run 'gem install escape_utils' to speed up Haml!"
|
10
|
+
end
|
11
|
+
end
|
4
12
|
|
5
13
|
module Haml
|
6
14
|
module More
|
@@ -35,7 +43,7 @@ module Haml
|
|
35
43
|
|
36
44
|
def self.included(klass)
|
37
45
|
Haml::More::CoffeeScript.activate
|
38
|
-
klass.send :include, Haml::More::ContentFor
|
46
|
+
klass.send :include, Haml::More::ContentFor, Haml::More::Javascript
|
39
47
|
super
|
40
48
|
end
|
41
49
|
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'haml/more'
|
2
|
+
require 'forwardable'
|
3
|
+
|
4
|
+
module Haml::More::JavaScript
|
5
|
+
class Pattern
|
6
|
+
attr_accessor :pattern, :default_version
|
7
|
+
|
8
|
+
def self.google(default_version = 1, minified = false)
|
9
|
+
new "http://ajax.googleapis.com/ajax/libs/%1$s/%2$s/%1$s#{'.min' if minified}.js",
|
10
|
+
default_version
|
11
|
+
end
|
12
|
+
|
13
|
+
def new(pattern, default_version = 1)
|
14
|
+
return super if pattern.respond_to? :to_str
|
15
|
+
send(pattern, default_version)
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(pattern, default_version = 1)
|
19
|
+
@pattern, @default_version = pattern, default_version
|
20
|
+
end
|
21
|
+
|
22
|
+
def %(values)
|
23
|
+
pattern.gsub("%V", "%2$s") % [values[0], values[1] || default_version, *values[2..-1]]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module ClassMethods
|
28
|
+
# here is an idea: map to hash, store in haml file
|
29
|
+
DEFAULTS = [
|
30
|
+
# http://code.google.com/apis/ajaxlibs/documentation/
|
31
|
+
# lib, pattern, v, min
|
32
|
+
[ :jquery, :google, 1, true ],
|
33
|
+
[ :jqueryui, :google, 1, true ],
|
34
|
+
[ :prototype, :google, 1 ],
|
35
|
+
[ :scriptaculous, :google, 1 ],
|
36
|
+
[ :mootools, :google, 1, true ],
|
37
|
+
[ :dojo, :google, 1, true ],
|
38
|
+
[ :swfobject, :google, 2, true ],
|
39
|
+
[ :yui, :google, 2, true ], # for 3.x, see below
|
40
|
+
[ "ext-core", :google, 3 ],
|
41
|
+
[ :webfont, :google, 1 ],
|
42
|
+
|
43
|
+
# others
|
44
|
+
[ "chrome-frame", "http://ajax.googleapis.com/ajax/libs/chrome-frame/%V/CFInstall.min.js" ],
|
45
|
+
[ :modernizr, "http://github.com/Modernizr/Modernizr/raw/v%V/modernizr.js", '1.1' ],
|
46
|
+
[ :hyphenator, "http://hyphenator.googlecode.com/svn/tags/Version%%20%V/Hyphenator.js", '3.0.0' ],
|
47
|
+
[ :yui3, "http://yui.yahooapis.com/combo?%V/build/yui/yui-min.js", '3.1.1' ],
|
48
|
+
[ :sizzle, "http://github.com/jeresig/sizzle/raw/master/sizzle.js" ],
|
49
|
+
[ :underscore, "http://github.com/documentcloud/underscore/raw/%V/underscore-min.js", '1.0.2' ],
|
50
|
+
[ :raphael, "http://github.com/DmitryBaranovskiy/raphael/raw/v%V/raphael-min.js", '1.4.3' ],
|
51
|
+
[ :cufon, "http://cufon.shoqolate.com/js/cufon-yui.js" ],
|
52
|
+
[ "coffee-script", "http://github.com/jashkenas/coffee-script/raw/%V/extras/coffee-script.js", '0.6.2' ],
|
53
|
+
[ :sammy, "http://github.com/quirkey/sammy/raw/v%V/lib/min/sammy-%V.min.js", '0.5.4' ]
|
54
|
+
]
|
55
|
+
|
56
|
+
def included(klass)
|
57
|
+
klass.send :include, Haml::More::JavaScript::InstanceMethods
|
58
|
+
super
|
59
|
+
end
|
60
|
+
|
61
|
+
def javascript_default_pattern
|
62
|
+
@javascript_default_pattern ||= Haml::More::JavaScript::Pattern.google
|
63
|
+
end
|
64
|
+
|
65
|
+
def javascript_guessing?
|
66
|
+
true
|
67
|
+
end
|
68
|
+
|
69
|
+
def javascript_url_for(name, version = nil, *args)
|
70
|
+
return javascript_url_map[name] % [name, version, *args] if javascript_url_map.includes? name
|
71
|
+
javascript_default_pattern % [name, version, *args] if javascript_guessing?
|
72
|
+
end
|
73
|
+
|
74
|
+
def set_javascript(name, *args)
|
75
|
+
javascript_url_map[name.to_s] = Haml::More::JavaScript::Pattern.new(*args)
|
76
|
+
end
|
77
|
+
|
78
|
+
def javascript_url_map
|
79
|
+
return @javascript_url_map if @javascript_url_map
|
80
|
+
@javascript_url_map = Hash.new { |h,k| h[k.to_s] unless k.respond_to? :to_str }
|
81
|
+
DEFAULTS.each { |args| set_javascript(*args) }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
module InstanceMethods
|
86
|
+
include Haml::More::AbstractHelper
|
87
|
+
|
88
|
+
def javascript(*list)
|
89
|
+
return javascript(list) if list.size == 2 and list.last.to_s =~ /^\d[\.\d]*$/
|
90
|
+
haml_helper do
|
91
|
+
list.each do |entry|
|
92
|
+
entry = entry.to_a if entry.respond_to? to_a
|
93
|
+
haml_tag :script, :type => "text/javascript", :src => self.class.javascript_url_for(*entry)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def self.append_features(klass)
|
100
|
+
klass.extend ClassMethods
|
101
|
+
end
|
102
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml-more
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 11
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
+
- 5
|
8
9
|
- 0
|
9
|
-
version: 0.
|
10
|
+
version: 0.5.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Konstantin Haase
|
@@ -14,30 +15,34 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-07-09 00:00:00 +02:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: monkey-lib
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ~>
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 11
|
27
30
|
segments:
|
28
31
|
- 0
|
29
|
-
-
|
32
|
+
- 5
|
30
33
|
- 0
|
31
|
-
version: 0.
|
34
|
+
version: 0.5.0
|
32
35
|
type: :runtime
|
33
36
|
version_requirements: *id001
|
34
37
|
- !ruby/object:Gem::Dependency
|
35
38
|
name: haml
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 47
|
41
46
|
segments:
|
42
47
|
- 2
|
43
48
|
- 2
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: rspec
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 27
|
55
62
|
segments:
|
56
63
|
- 1
|
57
64
|
- 3
|
@@ -70,6 +77,7 @@ extra_rdoc_files: []
|
|
70
77
|
files:
|
71
78
|
- lib/haml/more/coffee_script.rb
|
72
79
|
- lib/haml/more/content_for.rb
|
80
|
+
- lib/haml/more/javascript.rb
|
73
81
|
- lib/haml/more.rb
|
74
82
|
- lib/haml-more.rb
|
75
83
|
- lib/sass/more.rb
|
@@ -304,23 +312,27 @@ rdoc_options: []
|
|
304
312
|
require_paths:
|
305
313
|
- lib
|
306
314
|
required_ruby_version: !ruby/object:Gem::Requirement
|
315
|
+
none: false
|
307
316
|
requirements:
|
308
317
|
- - ">="
|
309
318
|
- !ruby/object:Gem::Version
|
319
|
+
hash: 3
|
310
320
|
segments:
|
311
321
|
- 0
|
312
322
|
version: "0"
|
313
323
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
324
|
+
none: false
|
314
325
|
requirements:
|
315
326
|
- - ">="
|
316
327
|
- !ruby/object:Gem::Version
|
328
|
+
hash: 3
|
317
329
|
segments:
|
318
330
|
- 0
|
319
331
|
version: "0"
|
320
332
|
requirements: []
|
321
333
|
|
322
334
|
rubyforge_project:
|
323
|
-
rubygems_version: 1.3.
|
335
|
+
rubygems_version: 1.3.7
|
324
336
|
signing_key:
|
325
337
|
specification_version: 3
|
326
338
|
summary: Adds more functionality to Haml and Sass (part of BigBand).
|