comb 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,4 +21,5 @@ Gem::Specification.new do |s|
21
21
  # specify any dependencies here; for example:
22
22
  # s.add_development_dependency "rspec"
23
23
  # s.add_runtime_dependency "rest-client"
24
+ s.add_runtime_dependency "json"
24
25
  end
@@ -1,4 +1,5 @@
1
1
  require_relative 'comb/version'
2
+ require 'json'
2
3
  require 'time'
3
4
 
4
5
  class Comb
@@ -21,7 +22,10 @@ public
21
22
  mark_start_of_output
22
23
  append_require_snippet
23
24
  for_each_js_module do |name, code|
24
- append_to_output(name, code)
25
+ append_module(name, code)
26
+ end
27
+ for_each_html_template do |name, template|
28
+ append_template(name, template)
25
29
  end
26
30
  mark_end_of_output
27
31
  return_output
@@ -47,7 +51,15 @@ require.register = function(module, code) {
47
51
  end
48
52
 
49
53
  def for_each_js_module
50
- Dir.glob(@path_to_modules + '/**/*.js').each do |path|
54
+ for_each_file('js') { |name, code| yield name, code }
55
+ end
56
+
57
+ def for_each_html_template
58
+ for_each_file('html') { |name, template| yield name, template }
59
+ end
60
+
61
+ def for_each_file(ext)
62
+ Dir.glob(@path_to_modules + "/**/*.#{ext}").each do |path|
51
63
  # get the module 'name' by removing the path and the extension
52
64
  name = path.gsub(@path_to_modules, '').gsub(/^\//, '').gsub(/\.js$/, '')
53
65
  code = File.open(path) { |f| f.read }
@@ -55,7 +67,7 @@ require.register = function(module, code) {
55
67
  end
56
68
  end
57
69
 
58
- def append_to_output(name, code)
70
+ def append_module(name, code)
59
71
  @output << (<<-eos
60
72
  require.register('#{name}', function() {
61
73
  #{indent_code(code)}
@@ -64,6 +76,15 @@ require.register('#{name}', function() {
64
76
  ).chomp
65
77
  end
66
78
 
79
+ def append_template(name, template)
80
+ @output << (<<-eos
81
+ require.register('#{name}', function() {
82
+ return #{template.gsub("\n", ' ').gsub(/\s+/, ' ' ).strip.to_json}
83
+ })
84
+ eos
85
+ ).chomp
86
+ end
87
+
67
88
  def indent_code(code)
68
89
  code.split("\n").collect { |line| " #{line}" }.join("\n")
69
90
  end
@@ -1,3 +1,3 @@
1
1
  class Comb
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -0,0 +1 @@
1
+ <a href="<%= uri %>"><%= label %></a>
@@ -0,0 +1,5 @@
1
+ <ul>
2
+ <% _(items).each(function(item) { %>
3
+ <li><%= item %></li>
4
+ <% } %>
5
+ </ul>
@@ -1,4 +1,4 @@
1
- // generated by comb on 2011-12-29T00:05:24Z
1
+ // generated by comb on 2012-01-04T04:54:10Z
2
2
  var require = function(module) {
3
3
  return require.registry[module]()
4
4
  }
@@ -34,4 +34,10 @@ require.register('utils/uri', function() {
34
34
 
35
35
  return {bestUri: bestUri}
36
36
  })
37
- // end of comb output at 2011-12-29T00:05:24Z
37
+ require.register('templates/link.html', function() {
38
+ return "<a href=\"<%= uri %>\"><%= label %></a>"
39
+ })
40
+ require.register('templates/list.html', function() {
41
+ return "<ul> <% _(items).each(function(item) { %> <li><%= item %></li> <% } %> </ul>"
42
+ })
43
+ // end of comb output at 2012-01-04T04:54:10Z
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-29 00:00:00.000000000Z
13
- dependencies: []
12
+ date: 2012-01-04 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: &70182412598740 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70182412598740
14
25
  description: Brings file-based module support to client-side JavaScript applications.
15
26
  email:
16
27
  - ryan@yeahnah.org
@@ -30,6 +41,8 @@ files:
30
41
  - test/README
31
42
  - test/container.html
32
43
  - test/js/app.js
44
+ - test/js/templates/link.html
45
+ - test/js/templates/list.html
33
46
  - test/js/utils/date.js
34
47
  - test/js/utils/uri.js
35
48
  - test/output.js.example
@@ -61,6 +74,8 @@ test_files:
61
74
  - test/README
62
75
  - test/container.html
63
76
  - test/js/app.js
77
+ - test/js/templates/link.html
78
+ - test/js/templates/list.html
64
79
  - test/js/utils/date.js
65
80
  - test/js/utils/uri.js
66
81
  - test/output.js.example